![]() |
Registry-Folder auslesen
hi
ich möchte aus der Registry (zum beispiel das Verzeichnis "Run") auslesen und diese dann in einer Memo-liste, list (ist egal) aufzeichnen. doch bei mir kommt immer ein Lesefehler:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var Reg:tregistry ; keys:tstringlist ; begin Reg := TRegistry.Create; reg.Rootkey:=HKEY_CURRENT_USER; if reg.OpenKey('Software\Microsoft\Windows\Run',true) then begin Reg.GetKeyNames(Keys); //// hier schmiert er iwie ab keys.Add(memo1.Text); end; reg.Free end; aber i.wie komm ich da gerade nicht weiter :-( weiß einer woran das liegen kann ? |
Re: Registry-Folder auslesen
Du musst die Stringliste erzeugen ( Keys := TStringlist.Create) bevor du Reg.GetKeyNames aufrufen kannst.
|
Re: Registry-Folder auslesen
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var Reg:tregistry ; keys:tstringlist ; begin Reg := TRegistry.Create; keys := TStringList.Create; try reg.Rootkey:=HKEY_CURRENT_USER; if reg.OpenKey('Software\Microsoft\Windows\Run',true) then begin Reg.GetKeyNames(Keys); //// hier schmiert er iwie ab keys.Add(memo1.Text); end; //hier noch irgendwas mit keys machen finally reg.Free; keys.Free; end; end; |
Re: Registry-Folder auslesen
was meinst du denn mit "//hier noch irgendwas mit keys machen "
eigentlich mach arbeite ich doch schon mit den, wenn ich sie in die liste hinzufüge oder ? aber abstürzen tut er schonmal nicht mehr :mrgreen: danke |
Re: Registry-Folder auslesen
Ich meinte, dass es wenig Sinn macht, ein Objekt zu erzeugen, zu befüllen und dann gleich wieder freizugeben. Irgendwo sollte der Inhalt schon abgelegt werden ;).
|
Re: Registry-Folder auslesen
hmmmmm
naja mein Ziel ist es ja .. in dieser Liste einmal die Keys aufgelistet zu bekommen! und eigentlich dachte ich auch dass ich es hiermit:
Delphi-Quellcode:
auch hinbekomme... :gruebel: und da tue ich dann doch auch was mit den keys und können danach wieder leer gemacht werden ^^ Oder was versteh ich da jetzt nicht ganz ? :spin2:
begin
Reg.GetKeyNames(Keys); keys.Add(memo1.Text); end; |
Re: Registry-Folder auslesen
Du liest die Schlüssel in die Liste und hängst anschließend noch den Inhalt Deines Memos an. Bist Du Dir sicher, dass das so beabsichtigt ist?
|
Re: Registry-Folder auslesen
ne das war nicht beabsichtigt :wall:
ich wollt ja die keys IN die memo/listbox einfügen :angel: |
Re: Registry-Folder auslesen
Dann mach es doch mit
Delphi-Quellcode:
Das spart auch die StringListe ein.
Reg.GetKeyNames(Memo1.Lines);
|
Re: Registry-Folder auslesen
ah ok....das war gar nicht der einzige Fehler...
problem ist i.wie dass die einzelnen Keys im Ordner "Run" gar nicht angezeigt werden können. es werden nur die Ordner angezeigt ! also nicht die wirklichen keys. woran liegt das denn ? |
Re: Registry-Folder auslesen
Nu mal langsam: GetKeyNames listet Dir alle Unterschlüssel (sofern vorhanden). Was willst Du denn aufgelistet bekommen?
|
Re: Registry-Folder auslesen
also ich hatte ja in meinem Source oben:
'Software\Microsoft\Windows\CurrentVersion\Run' doch wenn ich das so lasse, dann passiert gar nichts. erst wenn ich: 'Software\Microsoft\Windows\CurrentVersion' nehme, und wenn ich selber mal in der Regisrty gucke, dann sieht man ja dass bis ...\Windows noch Unterordner sind. Aber "Run" besitzt ja keine mehr! unnd ich wollt ja eben dass die Keys innerhalb des Ornders "Run" angezeigt werden. [Später will ich dann noch dass man selber den pfad wählen kann, aber das später] |
Re: Registry-Folder auslesen
Hier mal eine kleine Demo. Pack dazu mal eine ListView auf Dein Formular.
Delphi-Quellcode:
uses Registry;
procedure TForm1.FormCreate(Sender: TObject); var Reg: TRegistry; sList: TStringList; i: integer; Item: TListItem; Column: TListColumn; begin ListView1.ViewStyle := vsReport; ListView1.Columns.Clear; Column := ListView1.Columns.Add; Column.Caption := 'Name'; Column.AutoSize := true; Column := ListView1.Columns.Add; Column.Caption := 'Wert'; Column.AutoSize := true; Reg := TRegistry.Create; Reg.RootKey := HKEY_CURRENT_USER; sList := TStringList.Create; try if Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',false) then begin Reg.GetValueNames(sList); for i := 0 to sList.Count - 1 do begin Item := ListView1.Items.Add; Item.Caption := sList[i]; Item.SubItems.Add(Reg.ReadString(sList[i])); end; Reg.CloseKey; end; finally Reg.Free; sList.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:45 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