AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Liste der Exe-Pfade aller installierten Programme
Thema durchsuchen
Ansicht
Themen-Optionen

Liste der Exe-Pfade aller installierten Programme

Ein Thema von PeterPanino · begonnen am 4. Jan 2013 · letzter Beitrag vom 6. Jan 2013
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#1

Liste der Exe-Pfade aller installierten Programme

  Alt 4. Jan 2013, 00:37
Hallo!

Ich hab jetzt wirklich lange gesucht, aber nichhts Passendes gefunden: Wie kann man eine Liste der EXE-Pfade aller installierten Programme erhalten, sowohl 32bit als auch 64bit, XP bis W7? Also nicht die Liste der Displaynamen oder die Liste der Uninstall-Programme, sondern z.B.:

Zitat:
C:\Program Files (x86)\XYProgramm\XYProgramm.exe
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Liste der Exe-Pfade aller installierten Programme

  Alt 4. Jan 2013, 01:52
Delphi-Quellcode:
procedure GetFiles(Path, ExtMask: String; List: TStrings; SubFolder: Boolean);
const
  Attrib = faArchive or faReadOnly or faHidden;
var
  Tmp: String;
  k: Integer;
  Search: TSearchRec;
begin
  Path := IncludeTrailingBackslash(Path);

  with TStringList.Create do
  try
    CommaText := ExtMask;

    for k := 0 to Count - 1 do
    begin
      Tmp := Strings[k]; //Entfernt führenden Punkt vor der Ext
      while Copy(Tmp, 1, 1) = '.do System.Delete(Tmp, 1, 1);
      Strings[k] := Tmp;

      if FindFirst(Path + '*.' + Strings[k], Attrib, Search) = 0 then
      repeat
        if List.IndexOf(Path + Search.Name) < 0 then //Doppelte Filtern
          List.Add(Path + Search.Name);
      until FindNext(Search) <> 0;
    end;

    FindClose(Search);
  finally Free end;

  //----------------------------------------------------------------------------
  //Application.ProcessMessages;

  if SubFolder then
  begin
    if FindFirst(Path + '*.*', faDirectory, Search) = 0 then
    begin
      repeat
        if ((Search.Attr and faDirectory) = faDirectory) and
          (Search.Name[1] <> '.') then
          GetFiles(Path + Search.Name, ExtMask, List, SubFolder);
      until FindNext(Search) <> 0;

      FindClose(Search);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  GetFiles('c:\', 'exe', ListBox1.Items, True);
end;
Ansonsten die Frage genauer stellen.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Liste der Exe-Pfade aller installierten Programme

  Alt 4. Jan 2013, 03:42
Danke, aber das ist nicht das, was ich suchte. Eine Dateisuche findet auch Programme, die nicht installiert wurden.
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#4

AW: Liste der Exe-Pfade aller installierten Programme

  Alt 4. Jan 2013, 08:00
Ist das hier was du suchst?
Lars
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: Liste der Exe-Pfade aller installierten Programme

  Alt 4. Jan 2013, 08:07
Was ist mit der Registry?

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uni nstall
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#6

AW: Liste der Exe-Pfade aller installierten Programme

  Alt 4. Jan 2013, 08:17
http://theroadtodelphi.wordpress.com...uter-software/
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Liste der Exe-Pfade aller installierten Programme

  Alt 4. Jan 2013, 08:18
Danke, aber das ist nicht das, was ich suchte. Eine Dateisuche findet auch Programme, die nicht installiert wurden.
Dann definiere doch bitte, welche Installer du in deiner Suche berücksichtigen willst.
Dabei wirst du deiner Lösung von selber näher kommen.

BTW: Das meinte Popov mit "Ansonsten die Frage genauer stellen"
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Liste der Exe-Pfade aller installierten Programme

  Alt 4. Jan 2013, 11:17

Nein. Abgesehen davon, dass dieser Code voller Fehler ist, liefert er nur die Uninstall-Displaynamen, was ich ja in meiner obigen Definition ausgeschlossen habe. Hier ist der soweit entwanzte Code, der das nicht brauchbare Ergebnis liefert:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
const
  REGKEYAPPS = '\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\';
var
  reg: TRegistry;
  List1: TStringList;
  List2: TStringList;
  j, n: Integer;
begin
  reg := TRegistry.Create;
  List1 := TStringList.Create;
  List2 := TStringList.Create;

  { Load all the subkeys }
  with reg do
  begin
    RootKey := HKEY_LOCAL_MACHINE;
    Access := KEY_READ; // WICHTIG WEGEN UAC !
    OpenKey(REGKEYAPPS, false);
    GetKeyNames(List1);
  end;
  { Load all the Value Names }
  for j := 0 to List1.Count - 1 do
  begin
    reg.OpenKey(REGKEYAPPS + '' + List1.Strings[j], false);
    reg.GetValueNames(List2);

    { We will show only if there is 'DisplayName' }
    n := List2.IndexOf('DisplayName');
    if (n <> -1) and (List2.IndexOf('UninstallString') <> -1) then
    begin
      memoPrograms.Lines.Add((reg.ReadString(List2.Strings[n])));
    end;
  end;
  List1.Free;
  List2.Free;
  reg.CloseKey;
  reg.Destroy;
end;
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Liste der Exe-Pfade aller installierten Programme

  Alt 4. Jan 2013, 11:25
Was ist mit der Registry?

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uni nstall

In diesem Registry-Zweig sind nur die Uninstall-Schlüssel, die nicht die Exe-Pfade der Programme enthalten. Außer: Einige wenige Unterzweige von 'Uninstall' enthalten den Schlüssel 'DisplayIcon' mit dem Exe-Pfad; dies sind jedoch nur wenige Programme insgesamt. Und die Uninstall-Werte habe ich ja durch meine obige Definition ausgeschlossen.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Liste der Exe-Pfade aller installierten Programme

  Alt 4. Jan 2013, 11:27
Dann definiere doch bitte, welche Installer du in deiner Suche berücksichtigen willst.
Dabei wirst du deiner Lösung von selber näher kommen.

BTW: Das meinte Popov mit "Ansonsten die Frage genauer stellen"

Siehe Beiträge 8 und 9.

Edit: Lies bitte nochmal meine Frage.

Geändert von PeterPanino ( 4. Jan 2013 um 11:34 Uhr) Grund: Ergänzung
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


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:24 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