Ich muss mich hier mal einklinken und das Thema wieder aufmachen. Denn man gelangt hierhin, wenn man CurrentKey und/oder CurrentPath in der Suche eingibt:
Weiter oben wurde
property CurrentPath: string read FCurrentPath;
schon angesprochen. Bei einem von mir verwendeten Code (Siehe das Thema
hier) ist CurrentPath aber immer leer. Der Code-Schnipsel dazu sieht wie folgt aus:
Delphi-Quellcode:
Procedure TMainForm.SearchReg;
Var
SearchStr : String;
Procedure EnumAllKeys(hkey: THandle);
Var
l : TStringList;
n : Integer;
S : String;
Begin
With TRegistry.Create Do
Try
RootKey:=hkey;
OpenKeyReadOnly(EmptyStr);
l:=TStringList.Create;
Try
GetKeynames(l);
CloseKey;
For n:=0 To Pred(l.Count) Do
Begin
S:=l[n];
If Pos(SearchStr, UpperCase(S)) > 0 Then
LBRegistry.Items.Append(CurrentPath + '#'); // Warum ist das leer???
If OpenKeyReadOnly(S) Then
Begin
EnumAllKeys(CurrentKey);
CloseKey;
End;
End;
Finally
l.Free
End;
Finally
Free;
End;
End;
Begin
SearchStr:=UpperCase(EDSearch.Text);
LBRegistry.Items.Clear;
LBRegistry.Items.BeginUpdate;
Try
// EnumAllKeys(HKEY_CLASSES_ROOT );
// EnumAllKEys(HKEY_CURRENT_USER );
EnumAllKEys(HKEY_LOCAL_MACHINE );
// EnumAllKEys(HKEY_USERS );
// EnumAllKEys(HKEY_PERFORMANCE_DATA);
// EnumAllKEys(HKEY_CURRENT_CONFIG );
// EnumAllKEys(HKEY_DYN_DATA );
Finally
LBRegistry.Items.EndUpdate;
End;
End;
Was an meiner Code-Variante ist falsch?
[edit]
Es scheint ein Problem mit CurrentPath zu geben. Anders lässt sich nicht erklären, warum z.B. in
diesem Code der jeweilige Pfad durchgereicht und in
KeyName_
zwischengespeichert wird.
Ich wäre für Erhellung trotzdem dankbar.
[/edit]
Gruß, Alex