Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Registry-Folder auslesen (https://www.delphipraxis.net/105639-registry-folder-auslesen.html)

Counter909 26. Dez 2007 17:35


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 ?

Apollonius 26. Dez 2007 17:39

Re: Registry-Folder auslesen
 
Du musst die Stringliste erzeugen ( Keys := TStringlist.Create) bevor du Reg.GetKeyNames aufrufen kannst.

DeddyH 26. Dez 2007 17:40

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;

Counter909 26. Dez 2007 17:48

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

DeddyH 26. Dez 2007 18:00

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 ;).

Counter909 26. Dez 2007 18:04

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:
begin
   Reg.GetKeyNames(Keys);
   keys.Add(memo1.Text);
   end;
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:

DeddyH 26. Dez 2007 18:05

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?

Counter909 26. Dez 2007 18:19

Re: Registry-Folder auslesen
 
ne das war nicht beabsichtigt :wall:

ich wollt ja die keys IN die memo/listbox einfügen :angel:

DeddyH 26. Dez 2007 18:32

Re: Registry-Folder auslesen
 
Dann mach es doch mit
Delphi-Quellcode:
Reg.GetKeyNames(Memo1.Lines);
Das spart auch die StringListe ein.

Counter909 26. Dez 2007 18:51

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 ?

DeddyH 26. Dez 2007 18:53

Re: Registry-Folder auslesen
 
Nu mal langsam: GetKeyNames listet Dir alle Unterschlüssel (sofern vorhanden). Was willst Du denn aufgelistet bekommen?

Counter909 26. Dez 2007 18:59

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]

DeddyH 26. Dez 2007 19:08

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 21:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz