gpt4 book ai didi

delphi - 使用delphi加载ntuser.dat hive

转载 作者:行者123 更新时间:2023-12-02 07:51:05 27 4
gpt4 key购买 nike

我想问是否有人知道如何在Windows7或XP上将ntuser.dat文件加载到注册表中的正确方法。我一直在尝试使用这段代码来实现这一点

_Reg := TRegistry.Create;
_Reg.RootKey := HKEY_USERS;
if (_Reg.Loadkey('Test2', 'C:\Users\Test2\NTUSER.DAT')) then
ShowMessage('User hive loaded');
_Reg.Unloadkey('Test2');
_Reg.CloseKey;
_Reg.Free;

文件路径正确并且文件存在。我还尝试使用在互联网上找到的功能 EnableNTPrivilege('SeRestorePrivilege', SE_PRIVILEGE_ENABLED)用于在尝试加载配置单元之前设置权限。但我仍然从 _Reg.Loadkey 得到错误。

我也尝试过使用这个功能NTSetPrivilege('SeRestorePrivilege', True)用于设置权限。但此函数返回错误“并非所有引用的权限或组都分配给调用者”

最佳答案

TRegistry.LoadKey函数内部使用RegLoadKey函数要求调用进程具有 SE_RESTORE_NAME 和 SE_BACKUP_NAME 权限。如果对该函数的调用返回值 <> 为 ERROR_SUCCESS (0),则必须检查 LastErrorLastErrorMsg属性以获取更多信息。

检查此示例以了解必须如何调用该函数以及如何处理操作结果。

var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
try
NTSetPrivilege('SeRestorePrivilege', True); //this is a third-party function, you can implemnt your own to set the privileges.
NTSetPrivilege('SeBackupPrivilege', True);
Reg.RootKey := HKEY_USERS;
if (Reg.Loadkey('Test2', 'C:\Users\Test2\NTUSER.DAT')) then
begin
try
Reg.OpenKey('Test2', False);
try
//do your stuff here


finally
Reg.CloseKey;
end;
finally
Reg.Unloadkey('Test2');
end;
end
else
Writeln(Reg.LastErrorMsg);
finally
Reg.Free;
end;
end;

关于delphi - 使用delphi加载ntuser.dat hive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8705978/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com