AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Liste aller installierten Programme
Thema durchsuchen
Ansicht
Themen-Optionen

Liste aller installierten Programme

Ein Thema von verkouter · begonnen am 26. Jun 2011 · letzter Beitrag vom 27. Jun 2011
Antwort Antwort
Seite 1 von 2  1 2      
verkouter

Registriert seit: 29. Dez 2004
64 Beiträge
 
Delphi 2010 Architect
 
#1

Liste aller installierten Programme

  Alt 26. Jun 2011, 01:17
Ich möchte in der Registry (HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Cur rentVersion\App Paths) allen installierte Programme
auflisten.Habe folgenden Code gefunden.Das Memofeld bleibt aber leer.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var
AppInfo: String;
TempStrings: TStringList;
I: Integer;
begin
TempStrings := TStringList.Create;
Memo1.Lines.Clear;
AppInfo := '';
with TRegistry.Create do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey('\Software\Microsoft\Windows\CurrentVersion\App Paths', True); //Open specific key...
GetKeyNames(TempStrings);
CloseKey;
for I := 0 to TempStrings.Count - 1 do
begin
OpenKey('\Software\Microsoft\Windows\CurrentVersion\App Paths\' + TempStrings[I], True);
AppInfo := 'File path: ' + ReadString('') + #13#10;
if ValueExists('Path') then AppInfo := AppInfo + 'Path: ' + ReadString('Path') + #13#10;
if ValueExists('Version') then AppInfo := AppInfo + 'Version: ' + ReadString('Version') + #13#10;
AppInfo := AppInfo + '--------------------------------------';
Memo1.Lines.Add(AppInfo);
CloseKey;
end;
Free;
end;
TempStrings.Free;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Liste aller installierten Programme

  Alt 26. Jun 2011, 01:25
Welches Betriebssystem? Der Konstruktor der Klasse TRegistry öffnet den Schlüssel immermit allen Rechten, also auch Schreibrechten. Als einfacher Benutzer hat man aber im Hive HKLM keine Schreibrechte, weswegen das Memo wohl leer beleibt. Gäbe es eine gescheite Fehlerbehandlung, wäre das wahrscheinlich auch aufgefallen. Ich hoffe du hast den Code nicht bei uns im Forum gefunden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
ASM

Registriert seit: 16. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Liste aller installierten Programme

  Alt 26. Jun 2011, 10:09
Den (Lese)Zugriff auf die Registry starten mit der Anweisung:
Code:
{..}
with TRegistry.Create(KEY_READ) do
{...}
  Mit Zitat antworten Zitat
Benutzerbild von skh
skh

Registriert seit: 17. Aug 2005
Ort: Saarland
28 Beiträge
 
Delphi 7 Professional
 
#4

AW: Liste aller installierten Programme

  Alt 26. Jun 2011, 10:09
Dein Code ist ok.
Ich habe XP und D7 im Einsatz...
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Liste aller installierten Programme

  Alt 26. Jun 2011, 10:27
Und arbeitest als Admin oder normaler Benutzer?
Ab Vista mit aktiver UAC arbeitet aber auch ein Adminbenutzer standradmässig nur mit Benutzerrechten.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#6

AW: Liste aller installierten Programme

  Alt 26. Jun 2011, 10:44
Win 7 // D7 // o.k.
Markus H.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#7

AW: Liste aller installierten Programme

  Alt 26. Jun 2011, 11:56
Oder so etwas ?

Delphi-Quellcode:
function GetWinAppInstallInfo(outStrings: TStrings): bool;
const
  REG_APPPATHS = '\Software\Microsoft\Windows\CurrentVersion\Uninstall';
var
  AppInfo: string;
  strLst: TStringList;
  i: Integer;
begin
  Result := False;

  if ASSIGNED(outStrings) then
  begin
    with TRegistry.Create(KEY_READ) do
    try
      RootKey := HKEY_LOCAL_MACHINE;

      strLst := TStringList.Create;
      try
        if OpenKey(REG_APPPATHS, False) then
        begin
          GetKeyNames(strLst);
          CloseKey;

          for I := 0 to strLst.Count - 1 do
          begin
            outStrings.Add(format('Application: %s', [strLst[I]]));
            if OpenKey(REG_APPPATHS + '\' + strLst[I], False) then
            begin
              AppInfo := #9'Location:';
              if ValueExists('InstallLocation')
                then AppInfo := AppInfo + #9#9 + ReadString('InstallLocation') + #13#10
                else AppInfo := AppInfo + #9#9'(System)' + #13#10;

              if ValueExists('Displayname') then
                AppInfo := AppInfo + #9'Displayname: ' + #9 + ReadString('Displayname') + #13#10;

              outStrings.Add(AppInfo);
              CloseKey;

              Result := True;
            end;
          end; //for
        end else
        begin
          // Error read
        end;
      finally
        strLst.Free;
      end;
    finally
      Free; // Registry
    end;
  end else
    ShowMessage('Zonk "outStrings" !');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Clear;
  GetWinAppInstallInfo(Memo1.Lines);
end;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: Liste aller installierten Programme

  Alt 26. Jun 2011, 11:59
Den Code könnte man bezüglich der Fehlerbehandlung noch etwas optimieren. Ich würde zum Beispiel eine Exception werfen und nicht mit Rückgabewerten arbeiten.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
verkouter

Registriert seit: 29. Dez 2004
64 Beiträge
 
Delphi 2010 Architect
 
#9

AW: Liste aller installierten Programme

  Alt 26. Jun 2011, 13:49
Danke der Tipp mit TRegistry.Create(key_read) war erfolgreich.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#10

AW: Liste aller installierten Programme

  Alt 26. Jun 2011, 22:58
Der Quelltext aus Beitrag #7 liefert (unter Delphi) falsche Ergebnisse.
Reine 64bit Anwendungen, welche durch einen 64bit Installer installiert wurden werden nicht gelistet!
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 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