Sem*_*Fly 3 c windows registry
我正在使用RegOpenKeyEx()和RegQueryValueEx()来尝试获取Windows注册表中六个键的值.我能够在六个中的四个中做到这一点,但是对某些其他人失败了.
wchar_t * getRegKeyValue(HKEY rootKeyToGet, LPCWSTR subKeyToGet, LPCWSTR valueToGet)
{
HKEY resultHKey = 0;
wchar_t resultString[255] = L"";
DWORD dwType = REG_SZ;
DWORD resultSize = 255;
// See if the subkey exists. If it does, get its value.
if (RegOpenKeyEx(rootKeyToGet, subKeyToGet, NULL, KEY_ALL_ACCESS, &resultHKey) == ERROR_SUCCESS)
{
RegQueryValueEx(resultHKey, valueToGet, NULL, &dwType, (LPBYTE) &resultString, &resultSize);
}
RegCloseKey(resultHKey);
resultHKey = NULL;
RegCloseKey(rootKeyToGet);
rootKeyToGet = NULL;
return resultString;
}
Run Code Online (Sandbox Code Playgroud)
以下是一些成功的电话:
swprintf(buffer, L"&ie=%s", getRegKeyValue(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Internet Explorer", L"Version"));
swprintf(buffer, L"&os=%s.", getRegKeyValue(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", L"CurrentVersion"));
wcscat(url, getRegKeyValue(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", L"CurrentBuild"));
Run Code Online (Sandbox Code Playgroud)
不成功通话的示例:
wcscpy(buffer, getRegKeyValue(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", L"CSDVersion"));
Run Code Online (Sandbox Code Playgroud)
我能够在不成功的调用中打开密钥,但该值的查询返回一个空字符串.我以管理员身份运行Visual Studio.在我出错的最后一天,我一直在挠头.
更新:返回的代码是ERROR_FILE_NOT_FOUND.这些代码绝对显示在regedit中.
我猜你有32位进程和64位机器.发生这种情况时,注册表重定向会让人感到困惑.尝试读取HKLM\Software\...
重定向到HKLM\Software\Wow64Node\...
.因此,您需要使用RegistryView
枚举打开注册表的64位视图.
归档时间: |
|
查看次数: |
2195 次 |
最近记录: |