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。