![]() |
Frage zu TRegIniFile.Create
Hallo,
ich über gerade wie man die Registry ausliest. Nun habe ich hier ein Beispiel gefunden wie man die Installierte Software auslesen kann.Hier die Code:
Code:
Nun habe ich aber ein kleines Problem. Ich benutze Delphi3 Professional und bei
var
reg: TRegIniFile; SoftList: TStringList; i: Integer; Name: String; begin reg := TRegIniFile.Create; SoftList := TStringList.Create; try reg.RootKey := HKEY_LOCAL_MACHINE; if reg.OpenKey('Software\Microsoft\Windows\Currentversion\Uninstall', FALSE) then begin reg.ReadSections(SoftList); for i := 0 to SoftList.Count - 1 do begin Name := Reg.ReadString(SoftList[i], 'DisplayName', ''); if Name <> '' then ListBox1.Items.Add(Name); end; end; finally SoftList.Free; reg.Free; end; ListBox1.Sorted := True; end;
Code:
Möchte Delphi 3 das ich einen StringParameter übergebe in dem die location des anzulegenden TRegIniFile Objekts steht. Wenn ich das mache schreibt Delphi diesen String natürlich als Schlüssel in die Registry. Unter Delphi 5 brauche ich keinen Parameter übergeben muss aber Delphi 3 nutzen. Was soll ich da am sinnvollsten übergeben? Eigentlich möchte ich nicht das mein Programm in die Registry schreibt!
reg := TRegIniFile.Create
Kann mir jemand sagen was ich da am Sinnvollsten schreibe und welches die sauberste Lösung ist? Vielen Dank Dragi |
Re: Frage zu TRegIniFile.Create
AFAIK arbeitet die D3-Implementierung von TRegistry immer mit schreibzugriff und verursacht deshalb z.B. ohne Admin-Rechte probleme.
Du kannst aber die Jedi Code Library verwenden. Dort gibt es Registry-Zugriffsfunktionen, welche auch ohne Schreibrechte (und damit Schreibzugriff auskommen). |
Re: Frage zu TRegIniFile.Create
Hmm, alles was ich bei Jedi finde ist nur ab Delphi 4 aufwärts. Gibt es Jedi auch für Delphi 3?
Und dann gibt es hier im Board noch dieses Beispiel:
Code:
Aber wenn ich es so mache finde ich keine Möglichkeit an die Strings die in 'DisplayName' stehen ranzukommen. Gibt es eine Möglichkeit?
uses Registry;
procedure TForm1.Button1Click(Sender: TObject); var reg : TRegistry; begin reg := TRegistry.Create(KEY_READ); try reg.RootKey := HKEY_LOCAL_MACHINE; if reg.OpenKey('Software\Microsoft\Windows\Currentversion\Uninstall', FALSE) then begin reg.GetKeyNames(Listbox1.Items); end else RaiselastOSError(); finally reg.Free; end; end; Gruss Dragi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz