我嘗試了幾個代碼,用於從註冊表中加載字符串鍵,並在測試它們後發現了我寫下來的這一個。但一個非常令人困惑的事情是,這段代碼對於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請參閱鏈接中的示例 –