![]() |
Softwareliste
Gibt es eine Möglichkeit die Inhalte der "Software"-Liste (aus der Systemsteuerung) in ein Memo/ListBox aufzulisten?
aus der suche im forum weis ich jetzt, dass die Einträge in der Registry zu finden sind: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Uninstall Nur wie kann ich die Einträge aus der Registry in eine ListBox einfügen? danke im vorraus! |
Re: Softwareliste
Schlag doch mal die Hilfe fuer TRegistry auf.
|
Re: Softwareliste
die von delphi? die habe ich komischer weise nicht.. da kommt immer ein fehler das die hlp datei nicht vorhanden ist und ich soll sie suchen..
|
Re: Softwareliste
Dann installier dein Delphi noch mal richtig.
|
Re: Softwareliste
hab ich schon 4 mal versucht.. geht nicht. Kann man die irgendwo laden oder gibt es eine seite wo diese nochmal aufgefasst sind? oder kann mir einer bitte konkret helfen?
so.. hab jetzt was gefunden:
Delphi-Quellcode:
Da komm ich auch zu einem guten ergebnis, das mir der Name von dem Programm angezeigt wird.
procedure TForm1.Button4Click(Sender: TObject);
var reg:TRegistry; ergebnis:string; begin reg:=TRegistry.Create; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey( '\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{061126FC-5424-41BA-8D05-3C30C0F153C7}', False); //Schlüssel öffnen ergebnis:= reg.ReadString( 'DisplayName' ); //Wert auslesen reg.Free; //Freigeben edit1.text:=ergebnis; end; Aber mein Vorhaben ist ja, eine Liste zu erstellen, von ALLEN Einträgen.. und da ich ja auf fremden pcs nicht die Einträge kenne, müsste es doch eine möglichkeit geben, das gesamten /Uninstall Verzeichnis nach "DisplayName" zu durchwühlen und da die Werte lesen?! Ich hätte mir vorgestellt, dass man den Eintrag (z.b. {061126FC-5424-41BA-8D05-3C30C0F153C7} ) mit irgend was zu ersetzen was für alle gilt, alá "*" wie bei *.txt oder so.. edit: ich hab jetzt das folgender maßen gemacht!
Delphi-Quellcode:
procedure TForm1.Button5Click(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(Listbox2.Items); end else RaiselastOSError(); finally reg.Free; end; end; dadurch komm ich aber leider nur an die namen der einzelnen einträge ran.. wie komm ich jetzt noch an die "DisplayName" ran.. ? =( |
Re: Softwareliste
So geht's:
Delphi-Quellcode:
BTW: OpenKeyReadOnly ist besser als OpenKey wenn Du nix schreiben mußt.
var
reg: TRegistry; BaseKey: string; KeyNames: TStringList; i: Integer; begin ListBox2.Clear; reg := TRegistry.Create(KEY_READ); try reg.RootKey := HKEY_LOCAL_MACHINE; BaseKey := '\Software\Microsoft\Windows\Currentversion\Uninstall'; if reg.OpenKey(BaseKey, False) then begin KeyNames := TStringList.Create; try reg.GetKeyNames(KeyNames); for i := 0 to KeyNames.Count - 1 do if reg.OpenKey(BaseKey + '\' + KeyNames[i], False) then ListBox2.Items.Add(reg.ReadString('DisplayName')); finally KeyNames.Free; end; end else RaiselastOSError(); finally reg.Free; end; |
Re: Softwareliste
ok.. vielen danke =)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 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