Перечисление элементов реестра используя API

У меня установлена программа RegCleaner, в которой можно просмотреть элементы автозапуска. Сейчас попытаюсь объяснить, как сделать перечисление значений ключа реестра, для этого существует API функция RegEnumValue.

Для начала необходимо открыть ключ реестра с помощью RegOpenKeyEx, после, перечисляем, последний шаг закрыть ключ RegCloseKey.

LONG  lResCode;
DWORD dwValue = 256;
DWORD dwIndex = 0;
char  szName[256];
HKEY hKey;
LONG lRes=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",NULL,KEY_ALL_ACCESS,&hKey);
if(lRes!=ERROR_SUCCESS){cout<<"Error RegOpenKeyEx"<<endl;}
else
{
            do
            {          
                        dwValue  = 256;
                        szName[0]='\0';
                        lResCode = RegEnumValue(hKey,dwIndex,szName,&dwValue,NULL,NULL,NULL,NULL);
                       if(lResCode == ERROR_SUCCESS){cout<<szName<<endl;}
                        else{cout<<"..."<<endl;}
                         dwIndex++;
          }while(lResCode != ERROR_NO_MORE_ITEMS);
}
RegCloseKey(hKey);

Перечисление элементов реестра используя API