AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Programmpfad anderer Programme ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Programmpfad anderer Programme ermitteln

Ein Thema von Chrischi · begonnen am 8. Aug 2008 · letzter Beitrag vom 9. Aug 2008
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    
Chrischi

Registriert seit: 8. Aug 2008
21 Beiträge
 
#1

Programmpfad anderer Programme ermitteln

  Alt 8. Aug 2008, 18:58
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
  Mit Zitat antworten Zitat
HalloDu

Registriert seit: 24. Apr 2006
Ort: Oelde
267 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Programmpfad anderer Programme ermitteln

  Alt 8. Aug 2008, 19:01
Schau dir mal die Delphi Hilfe zu TRegistry an.
Frederic H.
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#3

Re: Programmpfad anderer Programme ermitteln

  Alt 8. Aug 2008, 19:15
Delphi-Quellcode:
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;
So z. B.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Programmpfad anderer Programme ermitteln

  Alt 8. Aug 2008, 19:21
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;
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
Chrischi

Registriert seit: 8. Aug 2008
21 Beiträge
 
#5

Re: Programmpfad anderer Programme ermitteln

  Alt 8. Aug 2008, 19:30
Danke für die schnellen Antworten!

Jedoch ein Problem:
Code:
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;
Soweit schön und gut, aber beim Ausführen kommt folgende Meldung:
Code:
[Fehler] Unit1.pas(31): E2003 Undefinierter Bezeichner: 'root'
  Mit Zitat antworten Zitat
Benutzerbild von bigben37
bigben37

Registriert seit: 19. Dez 2007
Ort: Freiburg
116 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Programmpfad anderer Programme ermitteln

  Alt 8. Aug 2008, 19:39
Das muss

reg.RootKey := HKEY_LOCAL_MACHINE; heißen.
Benjamin
Optimismus ist nur ein Mangel an Information
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Programmpfad anderer Programme ermitteln

  Alt 8. Aug 2008, 19:44
Jepp, Sch... C&P
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
Chrischi

Registriert seit: 8. Aug 2008
21 Beiträge
 
#8

Re: Programmpfad anderer Programme ermitteln

  Alt 8. Aug 2008, 19:46
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<?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#9

Re: Programmpfad anderer Programme ermitteln

  Alt 8. Aug 2008, 20:25
Zitat von Chrischi:
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<?
Durchlaufe einfach alle Keys und überprüfe mit POS, ob der String 'Mozilla Firefox' enthalten ist.
Ein Beispiel zu GetKeyNames - das jedoch abgeändert muss - findest du hier.
Thomas
  Mit Zitat antworten Zitat
Chrischi

Registriert seit: 8. Aug 2008
21 Beiträge
 
#10

Re: Programmpfad anderer Programme ermitteln

  Alt 8. Aug 2008, 20:35
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 6  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 17: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