TRegistry.LoadKey和savekey是怎么用(可以的话请写上例子),谢谢!(30分)

这是我在Ex-Ex上的解答:


From: wandrey
Answer Grade: B Points: 2
Email A Friend
Delphi 5, TRegistry.SaveKey
function SaveKey(const Key, FileName: String): Boolean;
does not work anyway.
Someone knows the usage to make it work?
Regards
Wandrey
Accepted Answer
From: shenqw Date: 04/28/2000 05:14AM PST
Text Below
Question History
Comment
From: msedi Date: 04/28/2000 02:03AM PST
Hello,

Ido
n't know what you did before and what functions you have used before. So I begin
with the first
step:

var
Reg : TRegistry;

begin

Reg := TRegistry.Create();
Reg.RootKey := HKEY_LOCAL_MACHINE;
<- Maybe that's what you forgot

Good luck,
Martin


Comment
From: wandrey Date: 04/28/2000 02:24AM PST
Ok, thats all simple begin
ning - I have wrote many tools with TRegistry, access local and remote hosts,
read, write and change values - all of that was no problem. But the SaveKeydo
es not function at all
- not in the manner the online help suggests nor in any other imaginable possibility.
Background: I want to write a hole key with all of its subkeys and values to a diskfile for later campares
to avoid the enumaration through the hole keys and values. The prog. must run on NT 4 SP6 in the admin
security context (so there are no restrictions).
Comment
From: msedi Date: 04/28/2000 02:39AM PST
Hello,

I've looked in the Borland community

http://community.borland.com/article/0,1410,10348,00.html

looks like there's an error in D5 TRegistry.

Good luck, Martin
Comment
From: wandrey Date: 04/28/2000 03:02AM PST
Hello,
thanks for all your efforts, I have search and found these and other articles also. But there seem to
be some people out there, who has solve this problem, or might saydo
nt have this problem.(i.e. in here:qid=10128124
is a question around this topic).
regards
Willy
Comment
From: wandrey Date: 04/28/2000 03:11AM PST
Concrete:
Called from Button1Click()->
>>>>>>>>>>>>>>>>>>>>>>>>
procedure TForm1.scanregpath;
var i:integer;
sl:tstringlist;
begin

cu := TRegistry.Create;
cu.RootKey := HKEY_LOCAL_MACHINE;
try
if cu.savekey('/software/McAfee/VirusScan','c:/temp/rkey') then

showmessage('Written...')
else
showmessage('Fail');
finally
cu.Free;
end;

end;

<<<<<<<<<<<<<<<<<<<<<<<<<<<<
This returns "Fail". The file in C:/TEMP was created but empty.

Comment
From: inthe Date: 04/28/2000 04:46AM PST
Hi,
i just tested this and it seems to work ok ,see how it goes for you :

implementation

{$R *.DFM}
uses registry;

procedure TForm1.Button1Click(Sender: TObject);
var
reg : tregistry;
begin

Reg := TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
{OR HKEY_USERS }
if not fileexists('c:/myreg.reg') then

try
if Reg.SaveKey('/Software/Borland/Delphi', 'c:/myreg.reg') then

ShowMessage( 'Saved' )
else

ShowMessage( 'Error Saving' )
finally
Reg.Free;
end
else
showmessage('File already exists');
end;


Regards Barry
Accepted Answer
From: shenqw Date: 04/28/2000 05:14AM PST
//Win98 is ok.
//On NT you must have backup Privileges

procedure TForm1.Button1Click(Sender: TObject);
const
ADJUST_PRIV = TOKEN_QUERY or TOKEN_ADJUST_PRIVILEGES;
SHTDWN_PRIV = 'SeBackupPrivilege';
PRIV_SIZE = sizeOf(TTokenPrivileges);
var
cu:TRegistry;
TokenPriv, Dummy: TTokenPrivileges;
Token: THandle;
Len:DWORD;
begin

cu := TRegistry.Create;
cu.RootKey := HKEY_LOCAL_MACHINE;
DeleteFile('c:/temp/rkey');
OpenProcessToken(GetCurrentProcess(), ADJUST_PRIV, Token);
LookupPrivilegeValue(nil, SHTDWN_PRIV,TokenPriv.Privileges[0].Luid);
TokenPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
TokenPriv.PrivilegeCount := 1;
// One privilege to set
AdjustTokenPrivileges(Token, false, TokenPriv, PRIV_SIZE,Dummy, Len);
try
if cu.savekey('/Software/NuMega','c:/temp/rkey') then

showmessage('Written...')
else
showmessage('Fail');
finally
cu.Free;
end;

end;


Comment
From: wandrey Date: 05/01/2000 10:35PM PST
Thanks, this was very good!
Regards
Willy
 
接受答案了.
 
沈前卫:请问Ex-Ex的网址是什么?
 
顶部