如何恢复注册表项的所有元素? (上次写入时间,类型,值,名称...)

时间:2019-04-25 07:15:06

标签: c++ windows registry registrykey

我在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 个答案:

答案 0 :(得分:1)

您需要仔细查看函数的返回值。

来自文档:

  

如果函数成功,则返回值为ERROR_SUCCESS。

     

如果功能失败,则返回值是系统错误代码。如果   没有更多的子项可用,该函数将返回   ERROR_NO_MORE_ITEMS。

     

如果lpName缓冲区太小而无法接收密钥名称,则   函数返回ERROR_MORE_DATA。

您可以在此处查看有关系统错误代码的更多信息:https://docs.microsoft.com/da-dk/windows/desktop/Debug/system-error-codes