Как остановить отражение реестра с помощью C / C ++ в Windows - PullRequest
0 голосов
/ 28 января 2019

Я хочу напечатать значения в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...