Windows C访问注册表信息

2023-05-04  本文已影响0人  CodingCode

一个简单的例子,创建注册表项,并设置一个String值和一个DWORD值。

#include <windows.h>
#include <stdio.h>
#include <aclapi.h>

BOOL MyRegTest() {
   HKEY hSubKey;
   LPCSTR pszSubKey = "SOFTWARE\\MyCompany\\MyProduct";

   LPCSTR pszItem1Name = "StringItem";
   LPCSTR pszItem1Value = "StringValue";

   LPCSTR pszItem2Name = "WordItem";
   DWORD dwItem2Value = 0x00000003;
   
   DWORD dwRet;

   dwRet = RegCreateKey(HKEY_LOCAL_MACHINE, pszSubKey, &hSubKey);
   if (dwRet != ERROR_SUCCESS) {
      printf("Could not create the registry key.");
      return FALSE;
   }

   dwRet = RegSetValueEx(hSubKey, pszItem1Name, 0, REG_EXPAND_SZ, (LPBYTE) pszItem1Value, (DWORD) strlen(pszItem1Value) + 1);
   if (dwRet != ERROR_SUCCESS) {
      printf("Could not set string value.");
      return FALSE;
   }

   dwRet = RegSetValueEx(hSubKey, pszItem2Name, 0, REG_DWORD, (LPBYTE) &dwItem2Value, sizeof(DWORD));
   if (dwRet != ERROR_SUCCESS) {
      printf("Could not set dword value.");
      return FALSE;
   }

   RegCloseKey(hSubKey);
   return TRUE;
}



int main(int argc, wchar_t *argv[]) {
   BOOL test;
   test = MyRegTest();
   return 0;
}

编译运行:

C:\> cl.exe regtest.c advapi32.lib

有一点需要注意的是,如果是在64bit windows下面运行的是32bit的应用程序,那么注册表key的path会变成:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\MyCompany\MyProduct
中间多了一级:WOW6432Node

上一篇下一篇

猜你喜欢

热点阅读