我的简化代码:读字符串值从注册表项
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