美文网首页
Windows C访问注册表信息

Windows C访问注册表信息

作者: CodingCode | 来源:发表于2023-05-04 02:56 被阅读0次

    一个简单的例子,创建注册表项,并设置一个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

    相关文章

      网友评论

          本文标题:Windows C访问注册表信息

          本文链接:https://www.haomeiwen.com/subject/mbfxsdtx.html