请问怎样用Tregistry导出完整的注册表?

解决方案 »

  1.   

    tregistry好像提供这个函数:savetofile?但是好像只能打开一个key以后才可以。就是说最多只能保存6个根键的内容。不过如果你知道*.reg文件格式完全可以自己写savetofile函数。你用regedit保存成一个文件,记事本打开看一下格式,很容易的。
      

  2.   

    好像只能导出分支吧:)下面是代码 
    procedure TFormMain.ButtonExportClick(Sender: TObject); 
    var          
     RootKey,phKey: hKey; 
     KeyName,sKeyFileName: String; 
     FileName: array [0..255] of char; 
    begin 
     RootKey := HKEY_CURRENT_USER; 
     KeyName := 'software\mysoft\abc'; 
     RegOpenKeyEx(RootKey, PChar(KeyName), 0, KEY_ALL_ACCESS, phKey); 
     sKeyFileName := 'c:\tempReg'; 
     StrPCopy(FileName,sKeyFileName);  //用pchar也行 
     if RegSaveKey(phKey, FileName, nil)= 0 then  
       ShowMessage('注册表分支已被导出。') 
     else 
       ShowMessage('注册表分支没有被导出。'); 
     RegCloseKey(phKey); 
    end; procedure TFormMain.ButtonImportClick(Sender: TObject); 
    var       //从文件导回到注册表 
     RootKey,phKey: hKey; 
     KeyName,sKeyFileName: String; 
     FileName: array [0..255] of char; 
    begin 
     RootKey := HKEY_CURRENT_USER; 
     KeyName := 'software\mySoft\abc'; 
     RegOpenKeyEx(RootKey, PChar(KeyName), 0, KEY_ALL_ACCESS, phKey); 
     sKeyFileName := 'c:\tempReg'; 
     StrPCopy(FileName,sKeyFileName); 
     if RegRestoreKey(phKey, FileName,0)= 0 then  
       ShowMessage('注册表指定分支已恢复。') 
     else 
        ShowMessage('注册表指定分支没有恢复,操作失败。'); 
      RegCloseKey(phKey); 
    end;   
    3.另外, 还可以用TRegistry的savekey和restorekey 
    var 
      reg : Tregistry; 
    begin 
      reg := Tregistry.Create; 
      reg.rootkey := HKEY_CURRENT_USER; 
      reg.Savekey('\Software\NetAnts','d:\test1\NetAnts'); 
    end;