Как правильно использовать функцию RegEnumKeyExA

Я использую следующий код

#include <windows.h>

int main()
{
    HKEY key;
    long op = RegOpenKeyA(HKEY_CURRENT_USER, "Software", &key);
    if(op == ERROR_SUCCESS)
    {
        char* name = new char[MAX_PATH];
        memset(name, 0, MAX_PATH);
        DWORD nameSize = 0;
        for(int i = 0;;i++)
        {
            op = RegEnumKeyExA(key, i, name, &nameSize, 0, 0, 0, 0);
            printf("%s\n", name);
            if(op == ERROR_NO_MORE_ITEMS)
            {
                break;
            }
            if(op != ERROR_SUCCESS)
            {
                printf("stop");
                break;
            }
        }
    }
}

В самом первом проходе у меня завершается цикл с выводом в консоль stop в переменную name после RegEnumKeyExA ничего не попадает, ровно как и nameSize равен нулю вопрос что я не так делаю для вывода подразделов реестра?


Ответы (1 шт):

Автор решения: Anunak Nibirovich

Перед самим вызовом RegEnumKeyExA укажите размер буфера, куда ложатся данные, например:

DWORD nameSize = MAX_PATH
→ Ссылка