我试图编写一个检查注册表值的功能,以查看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/