c++ - RegGetValueA格式/布局

标签 c++ windows registry

我试图编写一个检查注册表值的功能,以查看Windows上的控制台是否启用了颜色。

Computer\HKEY_CURRENT_USER\Console\VirtualTerminalLevel
如果您通过注册表导航到此处,这是我需要检索的值。它是1或0,其中1被启用0被禁用。
#include <Windows.h>
    DWORD val;
    DWORD dataSize = sizeof(val);
    if (ERROR_SUCCESS == RegGetValueA(HKEY_LOCAL_MACHINE, "Computer\\HKEY_CURRENT_USER\\Console", "VirtualTerminalLevel", RRF_RT_DWORD, nullptr, &val, &dataSize)) {
        printf("Value is %i\n", val);
    }
    else {
        printf("Error reading.\n");
    }
这是我的尝试。这总是导致“错误读取”。我的问题是,我需要在RegGetValueA函数的“子项”和“值”参数中放置什么?

最佳答案

您为该值指定了错误的路径。请勿在Computer\HKEY_CURRENT_USER参数中包括lpSubKey。这仅出于人类可读性考虑,实际上并不是注册表API使用路径的一部分。 lpSubKey值相对于hKey根,在这种情况下应为HKEY_CURRENT_USER,而不是HKEY_LOCAL_MACHINE
尝试以下方法:

#include <Windows.h>

DWORD val;
DWORD dataSize = sizeof(val);

if (ERROR_SUCCESS == RegGetValueA(HKEY_CURRENT_USER, “Console", "VirtualTerminalLevel", RRF_RT_DWORD, nullptr, &val, &dataSize)) {
    printf("Value is %u”, val);
}
else {
    printf("Error reading.\n");
}

关于c++ - RegGetValueA格式/布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64083224/

相关文章:

c# - RegistryKey.GetSubKeyNames 返回不在该子项中的名称!

c++ - 引用被重新安置在这里还是别的什么

c++ - 在应该返回 vector 的函数中返回 NULL

windows - 如何从 wmic 输出中删除空行?

c++ - 如何在 Windows 7 上从 C++ 中找到 L2CacheSize、L3CacheSize?

C# 注册表子键双字值

windows - 如何在 Windows 注册表中存储任意文本(包括 '\' )

c++ - shared_ptr 中 multidim 数组的类型是什么?

c++ - 为深度优先搜索定义 ColorMap 的最简单方法

.net - System.Windows.Input.Key.Clear 是什么键