我尝试了几个代码,用于从注册表中加载字符串键,并在测试它们后发现了我写下来的这一个。但一个非常令人困惑的事情是,这段代码对于HKEY_LOCAL_MACHINE/HARDWARE密钥是有效的,但不适用于SOFTWARE密钥。我不知道我忽略了什么?加载注册表键错误
char rgValue [512];
char fnlRes [512];
DWORD size1;
DWORD Type;
HKEY hKey = 0;
char buf[512] = {0};
DWORD dwType = 0;
DWORD dwBufSize = sizeof(buf);
if( RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\SCADE\\HMI"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
{
dwType = REG_DWORD;
if(RegQueryValueEx(hKey, TEXT("test"), 0, &dwType, (LPBYTE)buf, &dwBufSize) == ERROR_SUCCESS)
{
cout << "key value is '" << buf << "'\n";
}
else
cout << "can not query for key value\n";
RegCloseKey(hKey);
}
else
cout << "Can not open key\n";
呼叫'GetLastError'和更新,结果你的帖子。 –
@RichardCritten我不熟悉GetLastError,但将其插入我的代码中,并返回0值。在我的主代码成功打开regKey后RegQueryValueEx面对错误并且调试器跳转到“无法查询关键值”行 –
刚刚阅读了关于“RegQueryValueEx”的文档,了解了返回结果,它不返回布尔值:请参阅: https://msdn.microsoft.com/en-us/library/windows/desktop/ms724911(v=vs.85).aspx请参阅链接中的示例 –