枚举注册表键名与键值

原创 2004年12月29日 16:23:00
枚举注册表键名与键值的一个函数:

// QueryKey - Enumerates the subkeys of key, and the associated 
//    values, then copies the information about the keys and values 
//    into a pair of edit controls and list boxes. 
// hDlg - Dialog box that contains the edit controls and list boxes.
// hKey - Key whose subkeys and values are to be enumerated.
 
void QueryKey(HWND hDlg, HANDLE hKey) 

    CHAR     achKey[MAX_PATH]; 
    CHAR     achClass[MAX_PATH] = "";  // buffer for class name 
    DWORD    cchClassName = MAX_PATH;  // size of class string 
    DWORD    cSubKeys;                 // number of subkeys 
    DWORD    cbMaxSubKey;              // longest subkey size 
    DWORD    cchMaxClass;              // longest class string 
    DWORD    cValues;              // number of values for key 
    DWORD    cchMaxValue;          // longest value name 
    DWORD    cbMaxValueData;       // longest value data 
    DWORD    cbSecurityDescriptor; // size of security descriptor 
    FILETIME ftLastWriteTime;      // last write time 
 
    DWORD i, j; 
    DWORD retCode, retValue; 
 
    CHAR  achValue[MAX_VALUE_NAME]; 
    DWORD cchValue = MAX_VALUE_NAME; 
    CHAR  achBuff[80]; 
 
    // Get the class name and the value count. 
    RegQueryInfoKey(hKey,        // key handle 
        achClass,                // buffer for class name 
        &cchClassName,           // size of class string 
        NULL,                    // reserved 
        &cSubKeys,               // number of subkeys 
        &cbMaxSubKey,            // longest subkey size 
        &cchMaxClass,            // longest class string 
        &cValues,                // number of values for this key 
        &cchMaxValue,            // longest value name 
        &cbMaxValueData,         // longest value data 
        &cbSecurityDescriptor,   // security descriptor 
        &ftLastWriteTime);       // last write time 
 
    SetDlgItemText(hDlg, IDE_CLASS, achClass); 
    SetDlgItemInt(hDlg, IDE_CVALUES, cValues, FALSE); 
 
    SendMessage(GetDlgItem(hDlg, IDL_LISTBOX), 
        LB_ADDSTRING, 0, (LONG) ".."); 
 
    // Enumerate the child keys, until RegEnumKeyEx fails. Then 
    // get the name of each child key and copy it into the list box. 

    SetCursor(LoadCursor(NULL, IDC_WAIT)); 
    for (i = 0, retCode = ERROR_SUCCESS; 
            retCode == ERROR_SUCCESS; i++) 
    { 
        retCode = RegEnumKeyEx(hKey, 
                     i, 
                     achKey, 
                     MAX_PATH, 
                     NULL, 
                     NULL, 
                     NULL, 
                     &ftLastWriteTime); 
        if (retCode == (DWORD)ERROR_SUCCESS) 
        {
            SendMessage(GetDlgItem(hDlg, IDL_LISTBOX), 
                LB_ADDSTRING, 0, (LONG) achKey); 
        }
    } 
    SetCursor(LoadCursor (NULL, IDC_ARROW)); 
 
    // Enumerate the key values. 
    SetCursor(LoadCursor(NULL, IDC_WAIT)); 
 
    if (cValues) 
    {
        for (j = 0, retValue = ERROR_SUCCESS; 
                j < cValues; j++) 
        { 
            cchValue = MAX_VALUE_NAME; 
            achValue[0] = '/0'; 
            retValue = RegEnumValue(hKey, j, achValue, 
                &cchValue, 
                NULL, 
                NULL,    // &dwType, 
                NULL,    // &bData, 
                NULL);   // &bcData 
 
            if (retValue == (DWORD) ERROR_SUCCESS ) 
            { 
                achBuff[0] = '/0'; 
 
                // Add each value to a list box. 
                if (!lstrlen(achValue)) 
                    lstrcpy(achValue, "<NO NAME>"); 
                wsprintf(achBuff, "%d) %s ", j, achValue); 
                SendMessage(GetDlgItem(hDlg,IDL_LISTBOX2), 
                    LB_ADDSTRING, 0, (LONG) achBuff); 
            } 
        }

    SetCursor(LoadCursor(NULL, IDC_ARROW)); 
}

枚举注册表键名与键值

枚举注册表键名与键值的一个函数:// QueryKey - Enumerates the subkeys of key, and the associated //    values, then c...
  • goingup
  • goingup
  • 2005年08月17日 23:39
  • 1059

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

使用Windows API 函数中的RegOpenKeyEx()函数和RegEnumKeyEx()函数来实现对注册表某项下的所有子项进行枚举。 1、RegOpenKeyEx 函数: 原形:LON...
  • lhyhr
  • lhyhr
  • 2014年11月17日 16:47
  • 1881

Vc 枚举注册表键值名

  void  CEnumRegValueDlg::OnEnum() {      HKEY     lKey;                       //定义一个键的句柄,用于存储被打开的键 ...
  • lltaoyy
  • lltaoyy
  • 2010年08月18日 10:51
  • 4031

[Win32] 注册表操作(2)枚举注册表

本文由CSDN用户zuishikonghuan所作,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article/details/46981391 上一...
  • zuishikonghuan
  • zuishikonghuan
  • 2015年07月21日 09:51
  • 2685

Win32 API 常用函数之三——注册表操作(上)

【注册表操作】RegOpenKeyExLONG RegOpenKeyEx(  HKEY hKey,  LPCTSTR lpSubKey,  DWORD ulOptions,  REGSAM samDe...
  • Xscarlet
  • Xscarlet
  • 2007年11月07日 23:00
  • 4504

如何将JSON的键转为键值-xyp-hf

前几天被后端小伙伴捉弄了一些,实际上是这样的,他返回了一个json给我,像下面这样{ "status": "000", "msg": "成功" "list": [{ ...
  • xyphf
  • xyphf
  • 2017年05月13日 09:59
  • 306

注册表中控制键、段名、键名

在开始,运行中输入regedit,就可以打开注册表编辑器了。 然后按照方法找到各个键,修改就可以了。 注册表的构成 注册表相当于保存机器软硬件信息和参数配置的数据库。在物理上表现为sy...
  • yuanlang123
  • yuanlang123
  • 2014年08月26日 20:29
  • 547

PHP获取数组的键名与键值

array_keys($array) //返回所有键名 array_values($array) //返回所有键值 $result=array_reverse($input);      ...
  • singinneteasy
  • singinneteasy
  • 2014年06月29日 20:05
  • 2951

注册表枚举键值

This function enumerates subkeys of the specified open registry key. RegEnumKeyEx retrieves informat...
  • liuzhuomju
  • liuzhuomju
  • 2012年03月21日 21:46
  • 2474

根据某一键名对键值相同的分类

Array ( [0] => Array ( [shi] => 市辖区 [qu] => 曹子里 [url...
  • hearain528
  • hearain528
  • 2015年01月14日 16:48
  • 757
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:枚举注册表键名与键值
举报原因:
原因补充:

(最多只允许输入30个字)