RegGetValueA format/layout
RegGetValueA format/layout
我正在尝试编写一个函数来检查注册表值以查看是否为 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 函数的“子键”和“值”参数中放置什么?
您指定的值路径错误。不要在 lpSubKey
参数中包含 Computer\HKEY_CURRENT_USER
。这只是为了便于阅读,实际上并不是供注册表 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");
}
我正在尝试编写一个函数来检查注册表值以查看是否为 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 函数的“子键”和“值”参数中放置什么?
您指定的值路径错误。不要在 lpSubKey
参数中包含 Computer\HKEY_CURRENT_USER
。这只是为了便于阅读,实际上并不是供注册表 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");
}