1

我想在 Windows 注册表上执行一些基本操作。我编写了一个小型 C++ 程序来读取当前用户密钥。下面是代码片段。老实说,我不确定为什么 RegOpenKeyEx() 没有返回 ERROR_SUCCESS。请指教。

#include <Windows.h>

#include <iostream>
using namespace std;

int main(){

    HKEY hkey;

    if(RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("SoftwareDevShed TutorialTest"), 0, KEY_ALL_ACCESS, &hkey) != ERROR_SUCCESS)
        cout<<"Error opening the key"<<endl;
    else 
        cout<<"Success"<<endl;
    system("PAUSE");
    return 0;

}
4

3 回答 3

7

反斜杠在哪里去了:TEXT("SoftwareDevShed TutorialTest")?不应该读TEXT("Software\\DevShed Tutorial\\Test")吗?

于 2012-05-31T13:50:46.847 回答
1
#include <Windows.h>
#include <iostream>

int main(int argc, char *argv[])
{
    DWORD dwType;
    char  szVersion[255];
    DWORD dwDataSize = 255;
    memset(szVersion, 0, 255);

    // open the key for reading.
    HKEY hkeyDXVer;
    long lResult = RegOpenKeyEx(HKEY_CURRENT_USER, "SOFTWARE\\Software Nmae\\", 0, KEY_READ, &hkeyDXVer);

    if(ERROR_SUCCESS == lResult)
    {
       // read the version value
       lResult = RegQueryValueEx(hkeyDXVer, "RegistryValue", NULL, &dwType, (BYTE*)szVersion, &dwDataSize);
       if(ERROR_SUCCESS == lResult)
       {
          std::cout << "Value - " << szVersion << std::endl;
       }
    }

    system("pause");
    return 0;
}

此代码在所有版本的 Windows 上都能完美运行。

于 2012-12-05T05:17:46.660 回答
1

TEXT() 宏指示可以使用 Unicode 版本打开密钥。

试试

RegOpenKeyExA(HKEY_CURRENT_USER, "<your correct Key name with backslashes>", 0, KEY_ALL_ACCESS, &hkey)
于 2012-05-31T13:53:32.603 回答