Hallo !
Mit folgendem Source kann ich aus der Registry einen MIR BEKANNTEN Wert auslesen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| var RegKey: TRegistry; aRegistryKey: String; aValue: String;
begin
RegKey:=TRegistry.Create; RegKey.RootKey := HKEY_LOCAL_MACHINE;
aRegistryKey := 'SOFTWARE\Microsoft\Windows NT\CurrentVersion'; aValue := 'CurrentBuildNumber';
Result := RegKey.OpenKeyReadOnly(aRegistryKey);
if Result and (RegKey.ValueExists(aValue)) then begin
RegKey.ReadString(aValue); end else ShowMessage('Can not be read from the Windows-Registry !');
RegKey.Free;
end; |
Wie kann ich aber einen kompletten Baum (z.B. HKEY_LOCAL_MACHINE) auslesen um zu sehen, was da drinnen steht ?
Den kompletten Baum mit allen Untereinträgen meine ich, um zu sehen, welche Schlüssel es in diesem Baum gibt und welche Werte die haben.
Ich will die Bäume HKEY_PERFORMANCE_DATA und HKEY_DYN_DATA auslesen.
Ich weiß, dass ich eine rekirsive Funktion schreiben muss.
Habe mal den Inhalt meiner Fesplatte ausgelesen (alle Dateien und alle Dateien in allen Unterverzeichnissen).
Dazu habe ich mit
Findfirst (Source + '\*.*', faAnyFile, Dirinfo); und
findnext(dirinfo) Dateien gesucht und wenn ich ein Verzeichnis gefunden habe
if (dirinfo.attr and faDirectory <> 0) and ((dirinfo.name <> '..') and (dirinfo.name <> '.')) then habe ich die Funktion, in der ich gerae war, einfach noch mal aufgerufen (Rekursion).
Mein Problem ist nicht die Rkursion, sondern wie man in der Registry
- Den atuellen Schlüssel ermitteln kann und den ausgeben kann (Position im BaumKnten)
- Die unter-baumbnoten ermitteln kann
- Ermitteln kann welche Schlüssel der aktuelle Knoten hat
Obald ich den Knoten kenne (z.B.
'SOFTWARE\Microsoft\Windows NT\CurrentVersion') und die Schlüssel (z.B.
'CurrentBuildNumber'), kann ich die auslesen.
Bitte um Hilfe !
Danke
OLLI
P.S.
Wer das Beispiel zum Auslesen der gesamen Felstplatte mit Rekursion braucht, soll es agen, ich poste es dann hier als neuen Beitrag !!!