C/C++枚举注册表某项下的所有键值【代码示例】

来源:互联网 发布:淘宝宝贝介绍模板 编辑:程序博客网 时间:2024/06/08 11:28

使用Windows API 函数中的RegOpenKeyEx()函数和RegEnumValue()函数来实现对注册表某项下的所有键值进行枚举。

1、RegOpenKeyEx 函数:

原形:LONG RegOpenKeyEx(  
            HKEY hKey,     // 要打开主键名  
            LPCTSTR lpSubKey, // 需要打开的子键或路径  
            DWORD ulOptions,  // 保留,为0 
            REGSAM samDesired, // 操作权限标志  
            PHKEY phkResult  // 指向你打开键的句柄 (通过指针返回) 
      );  
  返回值:不成功返回非0,成功返回ERROR_SUCCESS.  
  解释:该函数负责打开指定的键或子键,如果不存在他不建立。

  查看官方文档:http://msdn.microsoft.com/zh-cn/aa912084

2、RegEnumValue函数:

  原形:LONG RegEnumValue(  
            HKEY hKey,       // 要查询的已打开的键的句柄  
            DWORD dwIndex,     // 读取名称的索引号  
            LPTSTR lpValueName,   // 返回所读取的键的名称  
            LPDWORD lpcbValueName, // 返回读取名称的长度,不含chr(0)  
            LPDWORD lpReserved,   // 保留,为0      

            LPDWORD lpType,     // 返回所读取的数据类型  

            LPBYTE lpData,     // 返回所读取的键的值数据  
            LPDWORD lpcbData    // 返回所读取的数据长度  
     );  
  返回值:不成功返回非0,成功返回ERROR_SUCCESS  
  解释:列出某Key的所有名称的值,变化索引即可遍历整个键下的名称和数据。

  查看微软官方文档:http://msdn.microsoft.com/zh-cn/aa914418

 代码示例: 

# include <stdio.h># include <tchar.h># include <Windows.h># include <locale.h>int main(void){_wsetlocale(LC_ALL, _T(""));HKEY hKey = NULL;  //保存打开注册表的句柄 TCHAR *subKey = _T("SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\2345PCSafe"); //需要打开的注册表子项if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, subKey, 0, KEY_READ, &hKey) == ERROR_SUCCESS){DWORD dwIndex = 0;  // 注册表项的键值索引 TCHAR valueName[MAX_PATH] = { 0 }; //保存项下键的名称 DWORD length = MAX_PATH;   // 保存返回读取的字符长度 BYTE keyData[MAX_PATH] = { 0 }; //保存键的值 DWORD lengthData = MAX_PATH;  //保存值得长度 DWORD dwType = REG_SZ;      //键值的类型 while (RegEnumValue(hKey, dwIndex, valueName, &length, 0, &dwType, keyData, &lengthData) == ERROR_SUCCESS){wprintf(_T("%ld : 键值名称:%s ,键值类型:%lu,键值:%s\n"), dwIndex, valueName, dwType, keyData);dwIndex++;length = MAX_PATH;lengthData = MAX_PATH;}}else{wprintf(_T("false"));}if (hKey != NULL){RegCloseKey(hKey);}getchar();return 0;}


0 0
原创粉丝点击