Здравствуйте,помогите пожалуйста. Мне нужно пройтись по веткам реестра и прочитать значение параметра в каждой ветке. Имя ветки я получаю функцией RegEnumKeyEx, параметр RegQueryValueEx, но в моём коде функция RegQueryValueEx возвращает значение кодом 2 -не удаётся найти указанный раздел. Почему она его не находит ?
#include "stdafx.h"
#include <string.h>
#include <stdio.h>
#include <windows.h>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
HKEY rKey;
HKEY rKey2;
_TCHAR Reget[255]={'\0'};
TCHAR achKey[MAX_PATH];
DWORD i, retCode, maxlen = MAX_PATH;
DWORD RegetPath=sizeof (Reget);
LONG res;
LONG res2;
FILETIME ftLastWriteTime;
if ((res = RegOpenKeyExW(HKEY_LOCAL_MACHINE,L" SOFTWARE\\Microsoft\\Windows\\Curre ntVersion\\Uninstall",NULL,KEY_ENUM
ERATE_SUB_KEYS | KEY_WOW64_64KEY | KEY_READ, &rKey))==ERROR_SUCCESS)
{
for (i = 0, retCode = ERROR_SUCCESS; retCode == ERROR_SUCCESS;i++)
{
retCode = RegEnumKeyEx(rKey, i,achKey, &maxlen, NULL, NULL,NULL, &ftLastWriteTime);
maxlen = MAX_PATH;
if (retCode == ERROR_SUCCESS)
{
if ((res2 = RegQueryValueEx(rKey,L"Publisher", NULL,0,(LPBYTE)Reget,&RegetPath))== ERROR_SUCCESS)
{
wprintf(L"%s\n",Reget);
}
else {printf("res2 = %d\n",res2);}
}
else {printf("retCode = %d\n",retCode);}
}
RegCloseKey(rKey);
}
else{wprintf(L"res = %d\n",res);}
getchar();
return 0;
}