我在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++;
}
问题是该方法不起作用。我误会了操作吗?
答案 0 :(得分:1)
您需要仔细查看函数的返回值。
来自文档:
如果函数成功,则返回值为ERROR_SUCCESS。
如果功能失败,则返回值是系统错误代码。如果 没有更多的子项可用,该函数将返回 ERROR_NO_MORE_ITEMS。
如果lpName缓冲区太小而无法接收密钥名称,则 函数返回ERROR_MORE_DATA。
您可以在此处查看有关系统错误代码的更多信息:https://docs.microsoft.com/da-dk/windows/desktop/Debug/system-error-codes