我正在尝试从注册表中读取DWORD值。在注册表中,它存储为0x00000068(104)。当我从注册表中读取值时,我得到了一个非常大的数字(3435973836)。任何帮助表示赞赏!
DWORD getRecentId(PDWORD id) {
HKEY hKey;
LONG lRes = RegOpenKeyEx(HKEY_CURRENT_USER, _T("SOFTWARE\\My App\\Feed Reader"), 0, KEY_QUERY_VALUE, &hKey);
if (!lRes == ERROR_SUCCESS)
{
RegCloseKey(hKey);
return ERROR_FILE_NOT_FOUND;
}
DWORD dwSize = sizeof(DWORD);
lRes = RegQueryValueEx(hKey, _T("Latest"), NULL, NULL, (LPBYTE)&id, &dwSize);
if (!lRes == ERROR_SUCCESS)
{
RegCloseKey(hKey);
return ERROR_NOT_ENOUGH_MEMORY;
}
RegCloseKey(hKey);
return lRes;
}
最佳答案
3435973836是一个魔术数字。将其转换为十六进制以获得0xcccccccc。当您在Visual Studio调试器中看到该信息时,便知道您正在使用一个未初始化的变量。
是的,使用&id
是错误的。那会改变指针,而不是指向的值。请改用id
。
关于c++ - 从RegQueryValueEx()DWORD返回无效数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20150240/