Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取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 - Fatal编程技术网

读取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)
。幸运的巧合,但为了未来游客的利益,应该进行更正。好的捕获-修复了它。(嗨,雷蒙德!:)