我的簡化代碼:讀字符串值從註冊表項
HKEY hKey;
if(someCondition)
lRes = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_READ, &hKey);
else
lRes = RegOpenKeyExW(HKEY_LOCAL_MACHINE, "SOFTWARW\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_READ, &hKey);
if(lRes == ERROR_SUCCESS)
{
std::wstring strKeyValue;
lRes = GetStringRegKey(hKey, L"valueName", strKeyValue, L"bad");
if(lRes == ERROR_SUCCESS)
{
//doSomething
}
}
兩個RegOpenKeyExW()
回報ERROR_SUCCESS
但在一種情況下(從Wow6432Node
讀取)GetStringRegKey()
回報ERROR_SUCCESS
並初始化strKeyValue
而在其他情況下,它會返回ERROR_FILE_NOT_FOUND
。所有路徑和值名稱都是正確的。這些條目已手動添加到註冊表中。
什麼問題?是否有任何憑據問題?謝謝!
你有一個錯字:lRes = RegOpenKeyExW(HKEY_LOCAL_MACHINE,「SOFTWARW \\ Wow6432Node \\」。它應該是「SOFTWARE」。 另外,你不需要包含'\\ Wow6432Node \\ '當打開註冊表項時,Windows操作系統會爲你做這些,當你使用RegEdit.exe工具去註冊時,你只需要知道它。 – StarPilot 2013-03-12 22:10:21