如何阅读注册表项值

时间:2010-09-24 05:57:05

标签: c++ windows registry

我正在使用以下代码创建注册表项:

   LPCTSTR  lpNDS= TEXT("SOFTWARE\\myKEY");
    if(OK==ERROR_SUCCESS)
    {
            MessageBox ( NULL, "Success", 
                             _T("SimpleShlExt"),
                            MB_ICONINFORMATION );
    }
    else
    {
        MessageBox ( NULL, "Failed" ,
                             _T("SimpleShlExt"),
                            MB_ICONINFORMATION );
    }

        LONG openRes = RegCreateKeyEx(
                    HKEY_LOCAL_MACHINE,
                    lpNDS,
                    0,
                    NULL,
                    REG_OPTION_NON_VOLATILE,
                    KEY_ALL_ACCESS,
                    NULL,
                    &hRegKey,
                    NULL);

         if (openRes!=ERROR_SUCCESS) 
                MessageBox ( NULL, "Registry Createion Failed", 
                             _T("SimpleShlExt"),
                            MB_ICONINFORMATION );

现在我正在使用以下方式写入密钥:

CSimpleShlExt::WriteToRegistry(LPSTR lpRegKeyVal)
{
        LONG setRes = RegSetValueEx (hRegKey, "NDS", 0, REG_SZ, (LPBYTE)lpRegKeyVal, strlen(lpRegKeyVal)+1);
        CloseRegistryKey();

}

现在我正在尝试使用WriteToRegistry函数读取我创建的注册表项值。我试过

RegOpenKeyEx(hRegKey,lpNDS,0,KEY_QUERY_VALUE,&hRegKey);

但这是失败的。

我应该使用哪个函数来读取密钥中包含的值?

2 个答案:

答案 0 :(得分:1)

  

我应该使用哪个函数来读取密钥中包含的值?

尝试RegQueryValue和/或RegEnumValue。阅读文档,了解哪一个最适合您的需求。

答案 1 :(得分:1)

您可以尝试以下内容:

TCHAR szValue[TEMP_STR_SIZE] = {0};
DWORD dwStorageSize = TEMP_STR_SIZE;
LPBYTE lpStorage = reinterpret_cast<LPBYTE>(szValue);

// In case of registry value retrieval failure
if (ERROR_SUCCESS != RegQueryValueEx(hRegKey, _T("NDS"), 0, 0, lpStorage, &dwStorageSize))
{
    // Prompt error
}

编辑:
刚注意到没有子键,改变了我的示例代码

相关问题