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 Installierte Programme listen (https://www.delphipraxis.net/140400-installierte-programme-listen.html)

ASoraru 17. Sep 2009 15:55


Installierte Programme listen
 
Hallo zusammen,

ich versuche die Liste aller installierten Programme zu erhalten ... das mache ich mit der im Web so oft gepublishten Routine die über die Registry sucht und eine Liste mit GetKeyNames erstellt. Leider funktioniert diese Routine mit Windows 7 überhaupt nicht und ich finde auch keinen Ansatz wo man die Sachen in der Registry findet .... gibt es da schon Lösungsansätze oder suche ich in der MSND falsch ?

Grüße,

Andreas

Bernhard Geyer 17. Sep 2009 15:57

Re: Installierte Programme listen
 
Windows 7 64-Bit?

ASoraru 17. Sep 2009 15:58

Re: Installierte Programme listen
 
Zitat:

Zitat von Bernhard Geyer
Windows 7 64-Bit?

Hallo Bernhard ...

ja ... 64 Bit

Bernhard Geyer 17. Sep 2009 16:01

Re: Installierte Programme listen
 
Das Stichwort ist "Virtualisierung Registry (und Dateisystem)". Ist schon seit Windows Vista so.

RWarnecke 17. Sep 2009 16:02

Re: Installierte Programme listen
 
Fragst Du auch ab, ob es ein 64Bit oder ein 32Bit System ist. Denn es liegt an unterschiedlichen Stellen.

WOW64WOW64

ASoraru 17. Sep 2009 16:06

Re: Installierte Programme listen
 
Zitat:

Zitat von RWarnecke
Fragst Du auch ab, ob es ein 64Bit oder ein 32Bit System ist. Denn es liegt an unterschiedlichen Stellen.

WOW64WOW64

Das frage ich ab ... aber ich finde den pfad in der registry nicht für 64 bit .. bzw windows 7

RWarnecke 17. Sep 2009 16:22

Re: Installierte Programme listen
 
Das ist doch der gleiche wie unter Windows VISTA.

ASoraru 17. Sep 2009 16:26

Re: Installierte Programme listen
 
Zitat:

Zitat von RWarnecke
Das ist doch der gleiche wie unter Windows VISTA.

ist dem so ? ... ich nutze 'Software\Microsoft\Windows\CurrentVersion\Uninsta ll' und es gab bisher keine probs ... hatte vorher vista ultimate ... habe aber dann umgestellt ... gibt es irgendwo den richtigen link oder einen demosource ?

RWarnecke 17. Sep 2009 17:13

Re: Installierte Programme listen
 
Probiere mal mein SystemInfo aus. Das zeigt bei der Windows 7 RC 64Bit die richtigen Einträge an. Wenn es bei Dir klappt, dann kann ich Dir sagen wie ich es gemacht habe. Sollte es nicht funktionieren, so muss auch ich nacharbeiten.

ASoraru 17. Sep 2009 17:21

Re: Installierte Programme listen
 
Zitat:

Zitat von RWarnecke
Probiere mal mein SystemInfo aus. Das zeigt bei der Windows 7 RC 64Bit die richtigen Einträge an. Wenn es bei Dir klappt, dann kann ich Dir sagen wie ich es gemacht habe. Sollte es nicht funktionieren, so muss auch ich nacharbeiten.

Hallo Rolf,

dein SystemInfo funktioniert .... by the way ... die Browser ermittelst du auch über das durchsuchen der registry der installed progs ... oder?

RWarnecke 17. Sep 2009 17:30

Re: Installierte Programme listen
 
Zitat:

Zitat von ASoraru
dein SystemInfo funktioniert

Der liest also die richtig Installierten Programme aus ?

Zitat:

Zitat von ASoraru
die Browser ermittelst du auch über das durchsuchen der registry der installed progs ... oder?

Ja, ich ermittel die Browser über die Registry, aber nicht über die Liste die unter Uninstall steht.

ASoraru 17. Sep 2009 17:35

Re: Installierte Programme listen
 
Zitat:

Zitat von RWarnecke
Zitat:

Zitat von ASoraru
dein SystemInfo funktioniert

Der liest also die richtig Installierten Programme aus ?

Zitat:

Zitat von ASoraru
die Browser ermittelst du auch über das durchsuchen der registry der installed progs ... oder?

Ja, ich ermittel die Browser über die Registry, aber nicht über die Liste die unter Uninstall steht.

Ja .... die Programme werden richtig ausgelesen ... ich brauche die sachen um eine liste der installierten browser sowie des defaultbrowser zu erstellen

RWarnecke 17. Sep 2009 18:22

Re: Installierte Programme listen
 
Ich öffne den Registrykey
Zitat:

HKLM\Software\Microsoft\Windows\CurrentVersion\Uni nstall
Dann lese ich mit GetKeyNames die Unterschlüssel in eine StringListe. Danach gehe ich die Stringliste mit einer FOR-Schleife durch und lasse mir dann den Wert von DisplayName anzeigen.

Den Default-Browser bekommst Du aber nicht über den Uninstall-Key.

ASoraru 17. Sep 2009 18:24

Re: Installierte Programme listen
 
Zitat:

Zitat von RWarnecke
Ich öffne den Registrykey
Zitat:

HKLM\Software\Microsoft\Windows\CurrentVersion\Uni nstall
Dann lese ich mit GetKeyNames die Unterschlüssel in eine StringListe. Danach gehe ich die Stringliste mit einer FOR-Schleife durch und lasse mir dann den Wert von DisplayName anzeigen.

Den Default-Browser bekommst Du aber nicht über den Uninstall-Key.

das ist ja das was ich meine .... für den defaultbrowser habe ich schon alles soweit ...

wie machst du das denn nun mit der reg und den installed proggis ? ... mir fehlt nur das korrekte öffnen der reg und der richtige pfad in der reg
rest ist schon soweit fertig

RWarnecke 17. Sep 2009 18:31

Re: Installierte Programme listen
 
Diese Funktion benutze ich :
Delphi-Quellcode:
///////////////////////////////////////////////////////////////////////////////
//
//  Eine Liste der installierten Software zurückgeben
//
function GetUninstallList : string;
const
  cUninstallPath = 'Software\Microsoft\Windows\CurrentVersion\Uninstall';
var
  reg: TRegistry;
  TmpKeyNames: TStringList;
  i: Integer;
  TmpResult: string;
begin
  TmpResult := '';
  Result := TmpResult;
  TmpKeyNames := TStringList.Create;
  TmpKeyNames.Clear;
  reg := TRegistry.Create;
  reg.RootKey := HKEY_LOCAL_MACHINE;
  if reg.KeyExists(cUninstallPath) then
    if reg.OpenKeyReadOnly(cUninstallPath) then
      reg.GetKeyNames(TmpKeyNames);
  reg.CloseKey;
  for i := 0 to TmpKeyNames.Count - 1 do
    if reg.OpenKeyReadOnly(cUninstallPath + '\' + TmpKeyNames.Strings[i]) then
    begin
      if reg.ValueExists('DisplayName') then
        TmpResult := TmpResult + reg.ReadString('DisplayName') + CRLF;
      reg.CloseKey;
    end;
  reg.Free;
  TmpKeyNames.Free;
  Result := TmpResult;
end;

ASoraru 17. Sep 2009 18:32

Re: Installierte Programme listen
 
Zitat:

Zitat von RWarnecke
Diese Funktion benutze ich :
Delphi-Quellcode:
///////////////////////////////////////////////////////////////////////////////
//
//  Eine Liste der installierten Software zurückgeben
//
function GetUninstallList : string;
const
  cUninstallPath = 'Software\Microsoft\Windows\CurrentVersion\Uninstall';
var
  reg: TRegistry;
  TmpKeyNames: TStringList;
  i: Integer;
  TmpResult: string;
begin
  TmpResult := '';
  Result := TmpResult;
  TmpKeyNames := TStringList.Create;
  TmpKeyNames.Clear;
  reg := TRegistry.Create;
  reg.RootKey := HKEY_LOCAL_MACHINE;
  if reg.KeyExists(cUninstallPath) then
    if reg.OpenKeyReadOnly(cUninstallPath) then
      reg.GetKeyNames(TmpKeyNames);
  reg.CloseKey;
  for i := 0 to TmpKeyNames.Count - 1 do
    if reg.OpenKeyReadOnly(cUninstallPath + '\' + TmpKeyNames.Strings[i]) then
    begin
      if reg.ValueExists('DisplayName') then
        TmpResult := TmpResult + reg.ReadString('DisplayName') + CRLF;
      reg.CloseKey;
    end;
  reg.Free;
  TmpKeyNames.Free;
  Result := TmpResult;
end;

geht das auch unter 64 bit oder nicht ?

RWarnecke 17. Sep 2009 18:33

Re: Installierte Programme listen
 
Das ist die Funktion aus meinem SystemInfo.

ASoraru 17. Sep 2009 18:43

Re: Installierte Programme listen
 
Zitat:

Zitat von RWarnecke
Das ist die Funktion aus meinem SystemInfo.

funktioniert einwandfrei


thank you so much .... thats great ....


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 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