線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1658
推到 Plurk!
推到 Facebook!

RegSaveKey,RegRestore

 
nnn0918k
一般會員


發表:12
回覆:33
積分:14
註冊:2003-05-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-08 02:33:44 IP:61.217.xxx.xxx 未訂閱
以下是RegSaveKey.. http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_20251935.html http://www.coding-board.de/board/archive/topic/3577-1.html    
function TReg.SaveKey(FileName: String): Integer;
var
  hToken,lReturn: Cardinal;
  liLuid: Int64;
  tpNew: TTokenPrivileges;
  tpPrev: PTokenPrivileges;
begin
  lReturn := SizeOf(TTokenPrivileges);
  OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES   TOKEN_QUERY, hToken);
  LookupPrivilegeValue(nil, 'SeBackupPrivilege', liLuid);
  tpPrev := @tpNew;
  tpNew.PrivilegeCount := 1;
  tpNew.Privileges[0].luid := liLuid;;
  tpNew.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
  AdjustTokenPrivileges(hToken,False,tpNew,SizeOf(TTokenPrivileges),tpPrev,lReturn);      result := RegSaveKey(FCurrentKey,PChar(FileName),nil);      AdjustTokenPrivileges(hToken,True,tpNew,SizeOf(TTokenPrivileges),tpPrev,lReturn);
  CloseHandle(hToken);
end;
火舞精靈 - 蘇
nnn0918k
一般會員


發表:12
回覆:33
積分:14
註冊:2003-05-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-08 02:54:22 IP:61.217.xxx.xxx 未訂閱
我RegSaveKey測試是成功,可是RegRestoreKey卻不行.. ERROR_ACCESS_DENIED 這個錯誤..請問怎解決啊.. 火舞精靈 - 蘇
shaofu
高階會員


發表:5
回覆:136
積分:103
註冊:2003-01-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-08 09:52:22 IP:210.243.xxx.xxx 未訂閱
引言: 我RegSaveKey測試是成功,可是RegRestoreKey卻不行.. ERROR_ACCESS_DENIED 這個錯誤..請問怎解決啊.. 火舞精靈 - 蘇
看起來是權限問題, 查了一下 MSDN, 裏面提到使用者需有 SE_RESTORE_NAME 的權限, 你有先用 administrator user 來試過了嗎 ? 你提供的 Link 裏面的文章有連到 MS 去: http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q128731& 有先試過了嗎? 發表人 - shaofu 於 2003/07/08 09:57:06
nnn0918k
一般會員


發表:12
回覆:33
積分:14
註冊:2003-05-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-08 16:17:14 IP:61.217.xxx.xxx 未訂閱
重開機後竟然行了@@.. 重新整理一下..    使用範例..   SaveKey(HKEY_LOCAL_MACHINE,'SOFTWARE\RegEditor','C:\RegEditor.reg');   RestoreKey(HKEY_LOCAL_MACHINE,'SOFTWARE\RegEditor','C:\RegEditor.reg');    
//------------------------------------------------------------------------------
function RestoreKey(const RootKey: HKEY; const KeyPath: String; const FileName: String): Boolean;
var
  RegRestore: TRegistry;
  hToken,lReturn: Cardinal;
  liLuid: Int64;
  tpNew: TTokenPrivileges;
  tpPrev: PTokenPrivileges;
begin
  lReturn := SizeOf(TTokenPrivileges);
  OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES   TOKEN_QUERY, hToken);
  LookupPrivilegeValue(nil, 'SeRestorePrivilege', liLuid);
  tpPrev := @tpNew;
  tpNew.PrivilegeCount := 1;
  tpNew.Privileges[0].luid := liLuid;;
  tpNew.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
  AdjustTokenPrivileges(hToken,False,tpNew,SizeOf(TTokenPrivileges),tpPrev,lReturn);      RegRestore := TRegistry.Create(KEY_ALL_ACCESS);
  RegRestore.RootKey := RootKey;
  result :=  RegRestore.RestoreKey(KeyPath,FileName);
  RegRestore.Free;      AdjustTokenPrivileges(hToken,True,tpNew,SizeOf(TTokenPrivileges),tpPrev,lReturn);
  CloseHandle(hToken);
end;    //------------------------------------------------------------------------------
function SaveKey(const RootKey: HKEY; const KeyPath: String; const FileName: String): Boolean;
var
  RegSave: TRegistry;
  hToken,lReturn: Cardinal;
  liLuid: Int64;
  tpNew: TTokenPrivileges;
  tpPrev: PTokenPrivileges;
begin
  lReturn := SizeOf(TTokenPrivileges);
  OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES   TOKEN_QUERY, hToken);
  LookupPrivilegeValue(nil, 'SeBackupPrivilege', liLuid);
  tpPrev := @tpNew;
  tpNew.PrivilegeCount := 1;
  tpNew.Privileges[0].luid := liLuid;;
  tpNew.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
  AdjustTokenPrivileges(hToken,False,tpNew,SizeOf(TTokenPrivileges),tpPrev,lReturn);      RegSave := TRegistry.Create(KEY_ALL_ACCESS);
  RegSave.RootKey := RootKey;
  result :=  RegSave.SaveKey(KeyPath,FileName);
  RegSave.Free;      AdjustTokenPrivileges(hToken,True,tpNew,SizeOf(TTokenPrivileges),tpPrev,lReturn);
  CloseHandle(hToken);
end;
火舞精靈 - 蘇
系統時間:2024-04-28 2:25:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!