怎么获得某个健的‘所有’键值的名称和数据
用readstring只能读出一个指定名称的键值的内容。
用readstring只能读出一个指定名称的键值的内容。
解决方案 »
- 从ORA中单纯递归出1到100的所有数字,该怎么写这个语句
- 请问怎么样取得字符串中从后面开始的五位字符函数啊??一票独得30分
- 应该怎么使用TcpServer和TcpClient这两个控件?
- 我在DELPHI5中用标准的API方法在窗体上进行绘图,VC6下同样的API代码运行速度竟比DELPHI5快一倍,请那位高手解释一下为什么会这样?
- 请教分布式事务控制源代码范例
- 记录查询匹配的问题?急,急,急!
- 高分相求:如何使EDIT只能输入数字?
- Delphi中相对VB的GetObject函数是什么啊
- 关于打印的一些问题!多谢关注!
- 客户端连接服务端的问题
- 初学者请进,手把手教你学会用delphi制作发送邮件程序,并送源码
- ●●●●●●●●●●●●●这个算是倒分吗?●●●●●●●●●●●●●
//-------------------------------------------------------
//--------------------由当前键生成子键---------------------------
//-------------------------------------------------------
procedure TForm1.Search(SelectedNode:TTreeNode;SonKeyName:String);
var
Reg: TRegistry;
KeyInfo:TRegKeyInfo;
i:integer;
StringList:TStrings;
TempNode:TTreeNode;
KeyName:String;
begin
Reg := TRegistry.Create();
if (SelectedNode.Text = 'HKEY_CLASSES_ROOT') Then
begin
Reg.RootKey := HKEY_CLASSES_ROOT;
TheState := 1;
end
else if (SelectedNode.Text = 'HKEY_CURRENT_USER') Then
begin
Reg.RootKey := HKEY_CURRENT_USER;
TheState := 2;
end
else if (SelectedNode.Text = 'HKEY_LOCAL_MACHINE') Then
begin
Reg.RootKey := HKEY_LOCAL_MACHINE;
TheState := 3;
end
else if (SelectedNode.Text = 'HKEY_USERS') Then
begin
Reg.RootKey := HKEY_USERS;
TheState := 4;
end
else if (SelectedNode.Text = 'HKEY_CURRENT_CONFIG') Then
begin
Reg.RootKey := HKEY_CURRENT_CONFIG;
TheState := 5;
end
else
begin
if (TheState = 1) Then
Reg.RootKey := HKEY_CLASSES_ROOT
else if (TheState = 2) Then
Reg.RootKey := HKEY_CURRENT_USER
else if (TheState = 3) Then
Reg.RootKey := HKEY_LOCAL_MACHINE
else if (TheState = 4) Then
Reg.RootKey := HKEY_USERS
else
Reg.RootKey := HKEY_CURRENT_CONFIG;
end;
KeyName := SonKeyName;
if (Reg.OpenKeyReadOnly(KeyName) <> false) Then
begin
Reg.GetKeyInfo(KeyInfo);
if (KeyInfo.NumSubKeys > 0) Then
begin
if (SelectedNode.HasChildren = false) Then
begin
StringList := TStringList.Create;
Reg.GetKeyNames(StringList);
if StringList.count>0 Then
begin
for i:=0 to StringList.Count-1 do
TreeView1.Items.AddChild(SelectedNode,StringList.Strings[i]);
for i:=0 to StringList.Count-1 do
begin
if (i = 0) then
TempNode := SelectedNOde.GetLastChild
else if (i <> StringList.Count-1) Then
begin
TempNode := SelectedNode.GetPrevChild(TempNode);
end
else
TempNode := SelectedNode.getFirstChild;
Search(TempNode,KeyName+StringList.Strings[StringList.Count-1-i]+'\');
end;
end;
end;
end;
end;end;
var
reg:TRegistry;
str:TStrings;
i,j:integer;
keyname,keyvalue:string;
he:HKEY;
begin
reg:=TRegistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\run',false);
reg.GetValueNames(form1.ListBox1.Items);
i:=form1.ListBox1.Items.Count;
if i>0 then
begin
for j:=0 to i-1 do
begin
keyname:=form1.ListBox1.Items.Strings[j];
keyvalue:=reg.ReadString(keyname);
showmessage(keyname+' '+keyvalue);
end;
end;
reg.Free;
end;