大家有什么好的办法吗?能贴上源码最好了。小弟新学习。我把注册表目录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注册表
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注册表
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货