• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 846
  • Last Modified:

Recursive search in registry

Hi All,

Can someone please help me by providing sample code of a function that can make recursive search in Registry and place all the results in a StringList?

So in other words I need a function where I can send to it:
- HKEY (Ex. HKEY_LOCAL_MACHINE).
- Starting Key (Ex. \Software\)

Function Return
- StringList (Ex. MyStringList)

Then the function should get me all keys, SubKeys under HKEY_LOCAL_MACHINE\Software\ and return them to the calling function in a StringList.

Thanks in advance for your time...

0
GiantMatrix
Asked:
GiantMatrix
2 Solutions
 
Eddie ShipmanAll-around developerCommented:
0
 
JaccoCommented:
Here is a coded sample:

uses
  Registry;

{$R *.dfm}

procedure GetRegistryList(const aRoot: HKEY; const aPath: string; const aStrings: TStrings);
var
  lList: TStringList;
  liEntry: Integer;
begin
  with TRegistry.Create do
  begin
    RootKey := aRoot;
    if OpenKey(aPath, False) then
    begin
      lList := TStringList.Create;
      try
        GetKeyNames(lList);
        for liEntry := 0 to lList.Count-1 do
        begin
          aStrings.Add(aPath + '\' + lList[liEntry]);
          GetRegistryList(aRoot, aPath + '\' + lList[liEntry], aStrings);
        end;
      finally
        lList.Free;
      end;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  GetRegistryList(HKEY_LOCAL_MACHINE, 'Software\Borland', Memo1.Lines);
end;

Regards Jacco
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now