[英]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.