Я хочу напечатать значения в HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run .
Но вместо отображения этих значений он перенаправляет меня на HKEY_LOCAL_MACHINE \ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Run и распечатывает значения под ключом Wow6432Node.
Я попытался использовать RegDisableReflectionKey (), но это не останавливает отражение подразделов.
hKey = HKEY_LOCAL_MACHINE;
lpSubKey = TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
RegDisableReflectionKey(HKEY_LOCAL_MACHINE);
status = RegOpenKeyExW(hKey, lpSubKey, 0, KEY_READ, &hKey);
status = RegQueryInfoKey(hKey, NULL, NULL, NULL, NULL, NULL, NULL,
&valueCount, &maxNameLength, &maxValueLength, NULL, NULL);
if (status == ERROR_SUCCESS)
{
DWORD type = 0;
DWORD index = 0;
std::vector<wchar_t> valueName = std::vector<wchar_t>
(maxNameLength + 1);
std::vector<BYTE> dataBuffer = std::vector<BYTE>(maxValueLength);
for (index = 0; index < valueCount; index++)
{
DWORD charCountValueName = static_cast<DWORD>(valueName.size());
DWORD charBytesData = static_cast<DWORD>(dataBuffer.size());
status = RegEnumValueW(hKey, index, valueName.data(),
&charCountValueName, NULL, &type, dataBuffer.data(), &charBytesData);
if (type == REG_SZ)
{
const auto reg_string = reinterpret_cast<wchar_t*>(dataBuffer.data());
printf("\nType: REG_SZ\n");
printf("\tName: ");
printf("%ls\n",valueName.data());
printf("\tData : %ls\n", reg_string);
}
В выходных данных отображаются значения в HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Run