繁体   English   中英

在Windows 7上使用C ++程序读取Windows注册表

[英]To read windows registry using a C++ program on Windows 7

我想在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;

}

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

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

尝试

RegOpenKeyExA(HKEY_CURRENT_USER, "<your correct Key name with backslashes>", 0, KEY_ALL_ACCESS, &hkey)
#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的所有版本上均能完美运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM