TRegistry.SaveKey

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
wandreyAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
shenqwConnect With a Mentor Commented:
//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;
0
 
msediCommented:
Hello,

I don'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

 
0
 
wandreyAuthor Commented:
Ok, thats all simple beginning - 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 SaveKey does 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).
0
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
msediCommented:
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
0
 
wandreyAuthor Commented:
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 say dont have this problem.(i.e. in here:qid=10128124 is a question around this topic).
regards
Willy
0
 
wandreyAuthor Commented:
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.
0
 
intheCommented:
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
0
 
wandreyAuthor Commented:
Thanks, this was very good!
Regards
Willy
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.