读取c+中的Windows注册表项REG#u二进制文件+; 我试图读取C++中的注册表项, 这就是我的职责: DWORD regkey() { HKEY hKey; DWORD dwDisp = REG_BINARY; DWORD dwSize = sizeof(dwDisp); DWORD dwValue = 0; DWORD dwReturn; DWORD dwBufSize = sizeof(dwDisp); if( RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"HERE\\IS\\THE\\REGKEY",0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) { DWORD error = RegQueryValueEx(hKey,L"key",0,0, (LPBYTE)&dwReturn, &dwBufSize); if(error == ERROR_SUCCESS) { return dwReturn; } } RegCloseKey(hKey); return 0; }
但它什么也没回来。。。请帮助我。注册表函数将返回有意义的错误代码,这可以帮助您诊断问题。请尝试保持该代码:读取c+中的Windows注册表项REG#u二进制文件+; 我试图读取C++中的注册表项, 这就是我的职责: DWORD regkey() { HKEY hKey; DWORD dwDisp = REG_BINARY; DWORD dwSize = sizeof(dwDisp); DWORD dwValue = 0; DWORD dwReturn; DWORD dwBufSize = sizeof(dwDisp); if( RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"HERE\\IS\\THE\\REGKEY",0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) { DWORD error = RegQueryValueEx(hKey,L"key",0,0, (LPBYTE)&dwReturn, &dwBufSize); if(error == ERROR_SUCCESS) { return dwReturn; } } RegCloseKey(hKey); return 0; },c++,windows,registry,C++,Windows,Registry,但它什么也没回来。。。请帮助我。注册表函数将返回有意义的错误代码,这可以帮助您诊断问题。请尝试保持该代码: { HKEY hKey; DWORD dwDisp = REG_BINARY; DWORD dwSize = sizeof(dwDisp); DWORD dwValue = 0; DWORD dwReturn; DWORD dwBufSize = sizeof(dwReturn); DWORD dwError = RegOpenKe
{
HKEY hKey;
DWORD dwDisp = REG_BINARY;
DWORD dwSize = sizeof(dwDisp);
DWORD dwValue = 0;
DWORD dwReturn;
DWORD dwBufSize = sizeof(dwReturn);
DWORD dwError = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"HERE\\IS\\THE\\REGKEY",0, KEY_READ, &hKey) ;
if( dwError == ERROR_SUCCESS)
{
dwError = RegQueryValueEx(hKey,L"key",0,0, (LPBYTE)&dwReturn, &dwBufSize);
if(error == ERROR_SUCCESS)
{
// it worked!
}
else
{
// it failed to read, check dwError for the error code
dwResult = 0;
}
RegCloseKey(hKey);
}
else
{
// it failed to open, check dwError for the error code
dwResult = 0;
}
return 0;
}
如果您使用的是Visual Studio,则可以中断任何故障点,并在监视窗口中评估dwError,hr
。,hr
格式说明符使调试器为您查找错误代码,并显示一个描述问题的有意义字符串。这会让你了解出了什么问题
如果您能告诉我们哪个函数失败了,以及您从该函数返回的代码,我们可能能够提供更详细的帮助。现在看来,你给了我们一个小小的猜谜游戏。可能您拼错了注册表项名称或提供了不正确的路径。您的代码似乎暗示您正在向该函数传递注册表项
RegQueryValueEx()
,但您要传递的是值名,而不是键名。可能您的访问权限有问题,因为您正在查看注册表中受保护的部分,并且没有以具有足够权限读取该项的帐户运行。(因此,您应该传递KEY\u READ
而不是KEY\u ALL\u ACCESS
)您所说的“它什么也不返回”是什么意思?返回值是多少?是错误\成功还是其他原因?您是否有意在钥匙无法打开时才关闭钥匙?请记住,ERROR\u SUCCESS
定义为0
,因此如果RegOpenKeyEx()
成功,它将返回0,如果则不会输入最外层的。请参见此处:函数将返回一个DWORD
。因此,它不能返回“无”。请具体描述错误。并且一定要问一个问题。@AndyProwl:最外层的if与==ERROR\u SUCCESS进行比较,因此如果函数返回SUCCESS,它将真正进入条件代码。另外,dwBufSize
应设置为sizeof(dwReturn)
。幸运的巧合,但为了未来游客的利益,应该进行更正。好的捕获-修复了它。(嗨,雷蒙德!:)