Da ich bislang nirgends im www eine für mich nachvollziehbare Anleitung für das rekursive Duchsuchen der Registry gefunden habe, habe ich mich selbst versucht. Bislang leider ohne Erfolg.
Meine Theorie war die, dass ich ausgehend von den jeweiligen Roots (HKEY_CURRENT_USER etc.) rekursiv nach den Keys mit
TRegistry.GetKeyNames(TStringList);
suche und diese dann wiederum ebenso abklappere. So einfach scheint es aber nicht zu sein. Jedenfalls funktioniert der folgende Code nicht und ich hoffe, mir kann jemand auf die Sprünge helfen, warum das so ist:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Procedure GetSubKeys(Const SubKey: String; aReg: TRegistry);
Var
lList : TStringList;
S : String;
Begin
lList:=TStringList.Create;
Try
aReg.OpenKeyReadOnly(SubKey);
aReg.GetKeyNames(lList);
While (lList.Count > 0) Do
Begin
S:=lList.Strings[0];
ListBox1.Items.Append(S);
If (SubKey <> '') Then S:=SubKey + '\' + S;
GetSubKeys(S, aReg);
lList.Delete(0);
End;
Finally
lList.Free;
End;
End;
Var
lReg : TRegistry;
begin
lReg:=TRegistry.Create(KEY_READ);
Try
lReg.RootKey:=HKEY_CURRENT_USER;
GetSubKeys('', lReg);
Finally
lReg.Free;
End;
end;
Und Entschuldigung, dass ich das Thema wieder aufwecke. Wenn ich was funktionierendes und übersichtliches hinbekomme, kann das evtl. ja auch mal in die CodeLib???
Gruß, Alex