![]() |
Programmpfad anderer Programme ermitteln
Hallo,
ich möchte in einem meiner Programme den Programmpfad eines anderen Programms ermitteln. Das Programm ist nicht nur für mich gedacht, es ist also auch keine Lösung, das Programm auf meiner Festplatte zu suchen, da ich stark bezweifle, dass jeder seine Programme genau da gespeichert hat, wo ich sie habe. Die SuFu dieses Forums hat mir nicht wirklich geholfen. Ich habe lediglich herausgefunden, dass man den Pfad in der Registry herausfinden kann: HKEY_LOCAL_MASCHINE -> SOFTWARE -> Mircosoft -> Windows -> CurrentVersion -> Uninstall. Der Name des Wertes, der den Programmpfad angibt, lautet "InstallLocation". Doch, wie greife ich jetzt auf die Registry zu, bzw. wie lese ich "InstallLocation" mithilfe von Delphi aus? Danke schon mal für die Antworten! Gruß, Chrischi |
Re: Programmpfad anderer Programme ermitteln
Schau dir mal die Delphi Hilfe zu TRegistry an.
|
Re: Programmpfad anderer Programme ermitteln
Delphi-Quellcode:
So z. B. ;-)
uses ..., Registry;
... ... function GetPath:String; var reg: tregistry; begin Result := ''; reg := Tregistry.create; reg.root := HKEY_LOCAL_MACHINE; if reg.openkeyreadonly('Software\Microsoft\Windows\CurrentVersion\Uninstall\DEINAPPNAME') then begin Result := reg.readstring('InstallLocation'); end; reg.free; end; |
Re: Programmpfad anderer Programme ermitteln
Wenn, dann bitte so:
Delphi-Quellcode:
uses ..., Registry;
... ... function GetPath:String; var reg: tregistry; begin Result := ''; reg := Tregistry.create; try reg.root := HKEY_LOCAL_MACHINE; if reg.openkeyreadonly('Software\Microsoft\Windows\CurrentVersion\Uninstall\DEINAPPNAME') then begin Result := reg.readstring('InstallLocation'); end; finally reg.free; end; end; |
Re: Programmpfad anderer Programme ermitteln
Danke für die schnellen Antworten! :thumb:
Jedoch ein Problem:
Code:
Soweit schön und gut, aber beim Ausführen kommt folgende Meldung:
function GetPath:String;
var reg: tregistry; begin Result := ''; reg := Tregistry.create; try reg.root := HKEY_LOCAL_MACHINE; if reg.openkeyreadonly('Software\Microsoft\Windows\CurrentVersion\Uninstall\Mozilla Firefox (3.0.1)') then begin Result := reg.readstring('InstallLocation'); end; finally reg.free; end; end;
Code:
[Fehler] Unit1.pas(31): E2003 Undefinierter Bezeichner: 'root'
|
Re: Programmpfad anderer Programme ermitteln
Das muss
Delphi-Quellcode:
heißen.
reg.RootKey := HKEY_LOCAL_MACHINE;
|
Re: Programmpfad anderer Programme ermitteln
Jepp, Sch... C&P :mrgreen:
|
Re: Programmpfad anderer Programme ermitteln
Klappt, super, danke!
Letzte Frage: Nehmen wir mal an, das Programm soll den Pfad von Firefox ermitteln. Nun gibt es aber verschiedene Versionen. Bei mir steht "Mozilla Firefox (3.0.1)" in der Registry. Was aber, wenn andere User eine andere Version haben? Gibt es so etwas wie einen >Platzhalter<? |
Re: Programmpfad anderer Programme ermitteln
Zitat:
Ein Beispiel zu GetKeyNames - das jedoch abgeändert muss - findest du ![]() |
Re: Programmpfad anderer Programme ermitteln
Was genau muss ich da ändern?
Wenn ichs so versuche zu starten, kommen folgende Meldungen:
Code:
[Fehler] Unit1.pas(36): E2003 Undefinierter Bezeichner: 'TlistItem'
[Fehler] Unit1.pas(52): E2003 Undefinierter Bezeichner: 'ListView1' [Fehler] Unit1.pas(54): E2003 Undefinierter Bezeichner: 'BeginUpdate' [Fehler] Unit1.pas(55): E2003 Undefinierter Bezeichner: 'Clear' [Fehler] Unit1.pas(70): E2003 Undefinierter Bezeichner: 'Add' [Fehler] Unit1.pas(71): E2066 Operator oder Semikolon fehlt [Fehler] Unit1.pas(72): E2066 Operator oder Semikolon fehlt [Fehler] Unit1.pas(82): E2066 Operator oder Semikolon fehlt [Fehler] Unit1.pas(83): E2003 Undefinierter Bezeichner: 'EndUpdate' [Fataler Fehler] Project1.dpr(5): F2063 Verwendete Unit 'Unit1.pas' kann nicht compiliert werden |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 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 by Thomas Breitkreuz