注册表备份问题

iqyely 2009-03-29 07:59:22
var
reg:Tregistry;
begin
reg:=Tregistry.Create;
reg.rootkey:=HKEY_CURRENT_USER;
if reg.Savekey('Software\test','d:\test.reg') then
showmessage('true')
else
showmessage('false');
reg.CloseKey;
reg.Free;
end;

为什么Savekey方法执行后的文件里是空的呢?什么都没有,返回结果是false。
...全文
198 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jadeluo 2009-04-07
  • 打赏
  • 举报
回复
出现问题的原因有2个:
1. 注册表访问权限不够。
2. 目标文件 'd:\test.reg' 已经存在。


function AddPrivilege(AProcID: THandle; const SecuName: PChar): Boolean;
var
hToken: Thandle;
tp: Token_Privileges;
rl: Cardinal;
begin
Result := false;
if not (OpenProcessToken(AProcID, Token_Adjust_Privileges or Token_Query, hToken)) then exit;
try
if not LookupPrivilegeValue(nil, SecuName, tp.Privileges[0].Luid) then exit;
tp.PrivilegeCount := 1;
tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges(hToken, False, tp, Sizeof(TOKEN_PRIVILEGES), Nil, rl) then Result := True;
finally
CloseHandle(hToken);
end;
end;

......

var
RegFile: String;
reg:Tregistry;
begin
AddPrivilege(GetCurrentProcess(), 'SeBackupPrivilege');
RegFile := 'd:\test.reg';
if FileExists(RegFile) then DeleteFile(RegFile);
reg.rootkey:=HKEY_CURRENT_USER;
if reg.Savekey('Software\test', RegFile) then
showmessage('true')
else
showmessage('false');
reg.CloseKey;
reg.Free;
end;
iqyely 2009-04-04
  • 打赏
  • 举报
回复
有朋友知道错在哪里了么?
iqyely 2009-04-04
  • 打赏
  • 举报
回复
帖子又沉了,继续顶
iqyely 2009-04-03
  • 打赏
  • 举报
回复
有知道是什么原因造成的朋友么?

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧