Как восстановить все элементы ключа реестра?(время последней записи, тип, значение, имя ...) - PullRequest
0 голосов
/ 25 апреля 2019

Я нахожусь под Windows в C ++.Я хотел бы восстановить все свойства раздела реестра.время последней записи, значение, тип ... Я использовал методы Windows API RegOpenEX и RegEnumKeyEx, но не могу заставить их работать.

HKEY RegHkey;
Long RC=0;
DWORD a=0;
DWORD TMP=255;
FILETIME filetime;
LPWSTR lpName=nullptr;
LPWSTR lpClass=nullptr;
DWORD cchClasss=0;

RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\",0,KEY_READ,&RegHkey);

while(RC != ERROR_NO_MORE_ITEMS)
{
  RC=RegEnumKeyEx(RegHkey, a, lpName, &TMP, nullptr, lpClass, &cchClass, &filetime);
   if(RC==ERROR_SUCCESS)
   {
      std::cout<<"type= "<<cchClass<<std::endl;
     //etc...

   }
   a++;
}

Проблема в том, что метод не работает.Я неправильно понял операцию?

1 Ответ

1 голос
/ 25 апреля 2019

Вам нужно внимательно посмотреть на возвращаемое значение функции.

Из документации:

Если функция завершается успешно, возвращаемое значение равно ERROR_SUCCESS.

В случае сбоя функции возвращаемым значением является код системной ошибки . Если больше нет доступных подразделов, функция возвращает ERROR_NO_MORE_ITEMS.

Если буфер lpName слишком мал для получения имени ключа, функция возвращает ERROR_MORE_DATA.

Подробнее о кодах системных ошибок вы можете узнать здесь: https://docs.microsoft.com/da-dk/windows/desktop/Debug/system-error-codes

...