Entwickler-Ecke
Sonstiges (Delphi) - Registry Eintrag -> DisplayName
monty.ms - So 06.02.05 19:41
Titel: Registry Eintrag -> DisplayName
Hallo..
Ich hoffe das ist hier der richtige Bereich dafür.. hab nichts anderes gefunden :?
Ich habe vor ein kleine Programm zu machen..
es soll eigentlich die Liste der Programme/Spiele aus der Softwareliste (unter Systemsteuerung) auflisten.
Ich weis das die Einträge in folgendem Pfad sind:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Daraus hab ich dann folgendes geschrieben:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| 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); ergebnis:= reg.ReadString( 'DisplayName' ); reg.Free; edit1.text:=ergebnis; end; |
Allerdings, ließt er hier ja aus einem bestimmten Eintrag die Information "DisplayName" ... Da ich aber die Einträge von anderen nicht alle kenne, sind diese ja unbekannt und ich will, dass er im \Uninstall\ Verzeichnis die Einträge durch geht und dort die "DisplayName" Einträge rausfischt.
geht das irgendwie? ich habe bisher nur diesen Weg:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| 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; |
Aber hier, ließt er nur den Namen der Einträge im \Uninstall\ und da kommt bei manchen dingen viel Müll raus..
Also gibt es irgendwie eine alternative? Wäre schön wenn ihr mir helfen könntet, also danke im vorraus =)!
Delete - So 06.02.05 20:00
Deine Hilfe ist vermutlich kaputt, sonst hättest du die entsprechenden Befehle (GetKeyNames, GetValueNames) wohl selbst gefunden. :lol:
monty.ms - So 06.02.05 20:17
lol ^^ .. du wirst es kaum glauben,.. aber die ist wirklich kaputt :evil: .. aber ich habe doch den "getkeynames" befehl benutzt?!
ich habe das problem jetzt folgendermaßen gelöst:
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: 27: 28:
| procedure TForm1.Button5Click(Sender: TObject); 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 listbox2.items.add(name); memo1.lines.Add(Name); end; end; finally SoftList.Free; reg.Free; end; ListBox2.Sorted := True; end; |
Nun bekomm ich die gewünschten Einträge in mein Memo (und meiner listbox) hinzugefügt.
Jetzt will ich noch die Versionsnummer der Software raussuchen lassen.. und beides in einem ValueListEditor ausgeben!
Ist das irgendwie möglich? Also die Versionsnummern habe ich bereits raussuchen lassen, nur wie füge ich die Werte in diesen ListEditor? Oder eignet sich eine andere Tabelle besser, da ich später die namen der programme noch raussuchen lassen will..
Delete - Mo 07.02.05 10:46
Also eigentlich würde sich wohl am besten eine List-View mit mehreren Spalten (vsReport-Modus) anbieten. Da kannst du alles anzeigen lassen, was dich interessiert. Du könntest auch einen Tree-View nehmen und dort alle Schlüssel im "Uninstall"-Schlüssel auflisten. Wählt man dann einen Eintrag aus, werden alle gefundenen Daten dieses Schlüssels in der List-View daneben angezeigt.
Nur so als Tipp: Du solltest dich nicht nur auf "UninstallString" und "DisplayName" beschränken. Ich habe mir vor geraumer Zeit ein Tool geschrieben, das mir alles in "Uninstall" auflistet. Selbst Sachen, die in der Systemsteuerung nicht zu sehen sind. Einige von denen kann man sogar deinstallieren ... wenn man mutig genug ist ...
monty.ms - Mo 07.02.05 11:02
also mich interessieren eigentlich nur die versionsnummer und der name, denn ich will ein kleines tool basteln, welches die programme vergleicht und so mögliche kompatibilitäts probleme anzeigt.
trotzdem danke für den tip.
könntest du vielleicht mir die funktion des listviews erklären, also wie ich den einbaue?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!