gpt4 book ai didi

delphi - 如何在Delphi 7中的treeView中显示注册表

转载 作者:行者123 更新时间:2023-12-03 15:01:30 25 4
gpt4 key购买 nike

我想显示一个 TreeView ,其中包含所有注册表信息(即所有子项)。我将以下 Fn 放在一起来执行相同的操作。但我只得到一把 key 的信息,而不是全部。我的代码中缺少什么?

 function TForm1.DisplayKeys(TreeNode : TTreeNode;KeyToSearch:String):String;
var
i: Integer;
RootKey : Integer;
NewTreeNode : TTreeNode;
str : TStringList;

// str2: TStringList;
begin
i:=0;

if reg.OpenKey(KeyToSearch,False) then
begin
str:=nil;
str:=TStringList.create;
reg.GetKeyNames(str);
//For all SubKeys
for i:=0 to str.Count-1 do
begin
NewTreeNode:=TreeView1.Items.AddChild(TreeNode, Str.Strings[i]);
if reg.HasSubKeys then
begin
DisplayKeys(NewTreeNode,Str.Strings[i]);
end;
end;
end;

对函数的调用是

  procedure TForm1.FormCreate(Sender: TObject);
begin
reg:=nil;
reg:=TRegistry.create;
str2:=nil;
str2:=TStringList.create;
reg.RootKey:=HKEY_CURRENT_CONFIG;
TreeView1.Items.BeginUpdate; //prevents screen repaint every time node is added
DisplayKeys(nil,''); // call to fn here
TreeView1.Items.EndUpdate; // Nodes now have valid indexes
end;

请注意,我没有收到任何错误,只是信息不完整

最佳答案

一些问题:

  1. 您正在使用OpenKey,它尝试以写入权限打开 key 。相反,您应该使用 OpenKeyReadOnly 。如果您确实打算写入这些键,那么您必须以管理员身份运行提升权限。
  2. 使用完这些按键后,您无法关闭它们。

更严重的是,您对相关注册表项的使用是不够的。我相信您需要传递 key 的完整路径。我编写了一个小演示控制台应用程序来展示我的意思:

program RegistryEnumerator;

{$APPTYPE CONSOLE}

uses
Classes, Windows, Registry;

var
Registry: TRegistry;

procedure DisplayKeys(const Key: string; const Depth: Integer);
var
i: Integer;
SubKeys: TStringList;
begin
if Registry.OpenKeyReadOnly(Key) then begin
Try
SubKeys := TStringList.Create;
Try
Registry.GetKeyNames(SubKeys);
for i := 0 to SubKeys.Count-1 do begin
Writeln(StringOfChar(' ', Depth*2) + SubKeys[i]);
DisplayKeys(Key + '\' + SubKeys[i], Depth+1);
end;
Finally
SubKeys.Free;
End;
Finally
Registry.CloseKey;
End;
end;
end;

begin
Registry := TRegistry.Create;
Try
Registry.RootKey := HKEY_CURRENT_CONFIG;
DisplayKeys('', 0);
Readln;
Finally
Registry.Free;
End;
end.

关于delphi - 如何在Delphi 7中的treeView中显示注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8090151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com