大家有什么好的办法吗?能贴上源码最好了。小弟新学习。我把注册表目录1、2级遍历出来了,然后想用递归的方法把所有的键值都遍历出来了。大家看看代码怎么改好呢?unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls,Registry,Contnrs;type
    TForm1 = class(TForm)
    TreeView1: TTreeView;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}const
  MaxNumber=4;
  RootValue:array [0..MaxNumber] of HKEY=
  (
    HKEY_CLASSES_ROOT,
    HKEY_CURRENT_USER,
    HKEY_LOCAL_MACHINE,
    HKEY_USERS,
    HKEY_CURRENT_CONFIG
  );
  RootKeyName :array [0..MaxNumber] of String=
  (
    'HKEY_CLASSES_ROOT',
    'HKEY_CURRENT_USER',
    'HKEY_LOCAL_MACHINE',
    'HKEY_USERS',
    'HKEY_CURRENT_CONFIG'
  );const MyPC='我的电脑';
var
i:integer=0;function Search(ParentNode:TTreeNode;k:integer):TStringList;
var PathNow:String;
var mylist:TstringList;
var reg:TRegistry;
var i:integer;
var NodeNow:TTreeNode;
begin
     Result:=TStringlist.Create;
     mylist:=TStringList.Create;
     reg:=TRegistry.Create;
     reg.RootKey:=RootValue[k];
     if reg.OpenKey('\',false) then
     begin
        reg.GetKeyNames(mylist);
        result:=mylist;
     end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
Pnode,SubNode,TipNode,TempNode:TTreeNode;
reg:TRegistry;
MyList:TStringList;
MyList2:TStringList;
curkey:String;
j:integer;
k:integer;
begin
  reg:=TRegistry.Create;
  k:=0;
  MyList:=TStringList.Create;
  MyList2:=TStringList.Create;
  PNode:=treeview1.Items.Add(nil,MyPC);
  PNode.ImageIndex:=1;
  while i<=MaxNumber do
    begin
      SubNode:=treeview1.Items.AddChild(PNode,RootKeyName[i]);
      SubNode.ImageIndex:=1;
      reg.RootKey:=RootValue[i];
      MyList2:=Search(SubNode,i);
      for j := 0 to MyList2.Count - 1 do
      begin
          curkey:=MyList2.Strings[j];
          treeview1.Items.AddChild(SubNode,curkey);
      end;
      inc(i);
    end;
    treeview1.ReadOnly:=true;
end;end.
DelphiTreeView注册表