在基于对话框的程序中如何将注**册**表中某主键下所有键值逐一读出

解决方案 »

  1.   

    枚举注册表所有键值
    int i;
    HKEY hKey;
    BOOL bResult = TRUE;
    DWORD lResult;

    //打開子鍵
    //比如:主鍵HKEY_CURRENT_USER,枚舉其子鍵下"Softwa....rPorts\\"的所有值
    lResult=RegCreateKeyEx(HKEY_LOCAL_MACHINE,
    "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"
    ,0,NULL,REG_OPTION_NON_VOLATILE,
    KEY_CREATE_SUB_KEY|KEY_WRITE|KEY_READ,NULL,&hKey,NULL);

    // lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
    // "Software\\Microsoft\\Windows\\CurrentVersion\\Run",
    // 0, KEY_QUERY_VALUE,&hKey);
    if (lResult != ERROR_SUCCESS)
    {
    MessageBox("error");
    return ;
    }
    char a[20][MAX_PATH];
    CString str;
    //開始枚舉鍵值
    for (i = 0; ;i++) //中間為空,沒有進行i值的比較
    {
    TCHAR szValueName[_MAX_PATH + 1];
    DWORD dwValueName = sizeof(szValueName);
    DWORD dwValueType;

    lResult = RegEnumValue(hKey,i,szValueName,&dwValueName,
    NULL,&dwValueType,NULL,NULL);
    if (lResult != ERROR_SUCCESS) //通過此項退出循環
    {
    if (lResult != ERROR_NO_MORE_ITEMS) bResult = FALSE;
    break;
    }
    szValueName[dwValueName] = (TCHAR) '\0';
    str=szValueName;
                      MessageBox(str);
    //如果成功,則將其顯示出來
    }