c++ - 从注册表 C++ 崩溃中获取值

标签 c++ winapi

怎么了?当我想获取 AUVersion 的值时它崩溃了。此 key 存在于注册表中,但我无法获取它。

int main(int argc, char *argv[])
{
    HKEY key;
    if (RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\JavaSoft\\Auto Update\\"), &key) != ERROR_SUCCESS)
    {
        cout << "Unable to open registry key\n\n";
    }

    char path[1024];
    DWORD value_length = 1024;
//here is the crash
    RegQueryValueEx(key, "AUVersion", NULL, (LPDWORD)REG_SZ, (LPBYTE)&path, &value_length);
    cout << "the value read from the registry is: " << path << endl;


    system("pause");
    return 0;
}

最佳答案

第四个参数是一个 LPDWORD -- 一个指向 DWORD 的指针。您采用了一个常规整数并将其转换为一个指针,该指针(在取消引用时)会崩溃。

该参数接收 注册表值的类型。如果您不想知道类型,请将其设置为 NULL。

关于c++ - 从注册表 C++ 崩溃中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15621981/

相关文章:

c++ - Ascii 码输出 ?.需要解决方案

c++ - 我的功能中缺少什么吗?

windows - 在进程开始之前将 dll 注入(inject)进程的优雅方法

c++ - FILE_FLAG_DELETE_ON_CLOSE 和内存映射文件

c# - LookupAccountSid 每次调用花费 +600 毫秒

c# - 在 Windows 上获取有线网络名称和安全级别

c++ - C++ 中的双重分派(dispatch)/多重方法

c++ - 有没有一种智能的方法可以在编译时知道要链接到的库的名称? (Linux/库本图)

c++ - 显式调用 `operator new` 后无法访问对象的函数

c++ - 用互联网浏览器的客户区填充窗口的客户区