Ist XYZ.exe vorhanden?
-
Hallo,
FileExists ist schon klar, aber ich brauche eine Möglichkeit, die auch dann funktioniert, wenn der Pfad nicht bekannt ist.
Kannst Du die Option '/s' bitte erläutern. In der Hilfe finde ich dazu keine Erklärung.Gruß
Leo
-
FileExists ist schon klar, aber ich brauche eine Möglichkeit, die auch dann funktioniert, wenn der Pfad nicht bekannt ist.
Bitte was? Willst du auf Umgebungsvariablen prüfen oder was?
-
Willst du auf Umgebungsvariablen prüfen oder was?
Nein, das hatte ich (bisher) nicht vor. Aber vielleicht erläuterst Du, was genau damit gemeint ist bzw. wie so ein Weg aussähe.
Ansonsten warte ich gespannt auf Jansons Antwort.
Gruß
Leo
-
Ich warte gespannt auf deine Antwort: Wie stellst du dir das vor auf ein Programm zu prüfen, ohne dass du seinen Pfad kennst!? Das funktioniert mit ShellExecute genau so wenig, wie mit FileExists. Ich kann mir höchstens erklären dass du Umgebungsvariablen oder doe Shortcuts in der Registry meinst.
-
Reyx schrieb:
(...) Ich kann mir höchstens erklären dass du Umgebungsvariablen oder doe Shortcuts in der Registry meinst.
Genau das ist meine Vermutung, dass nämlich 'normalerweise' Programmpfade entweder in der Registry oder in den Umgebungsvariablen gespeichert sind.
Da ich aber in beiden Fällen nicht weiß, wie ich das herauffinden kann, hatte ich hier die Frage gestellt in der bescheidenen Hoffnung, wenn schon keine Fertiglösung präsentiert zu bekommen, dann doch vielleicht einen verständlichen Hinweis.Gruß
Leo
-
Das s ist keine Option, ich war mir nur nicht sicher, wie der genaue Name der Funktion lautet.
Wenn du den Pfad nicht kennst, bleibt dir nichts weiter übrig, als das Dateisystem zu durchsuchen (Stichwort FindFirst/FindNext).
-
Um das nochmal zu entschlüsseln. Du musst um die Existenz einer Anwendung zu prüfen immer den Pfad bzw. den Ort der Registry wissen um zu kontrollieren ob sie Installiert ist oder nicht! Selbst wenn der Pfad in einer Umgebungsvariable stehen würde, müsstest du den Namen der Variable kennen. Standard sind z.B. Windows-Systempfade, zu finden in der globalen Variable "path".
-
Wobei das auch nicht unbedingt etwas nützt, da sowie in PATH als auch in der Registry ungültige Pfade von längst deinstallierten/gelöschten Programmen stehen können. Suchen mit FindFirst/FindNext (oder anderen) ist hier wohl die beste Lösung.
-
Hallo,
dass man in der Registry nicht einfacher suchen kann, verblüfft mich.
Dass man einen vollständigen Key übergeben muss, um dessen Werte auszulesen, d.h., dass es nicht möglich sein soll nach Vorgabe eines Anwendungstitels (z.B. xyz.exe) einen oder mehrere Keys als Ergebnis zu erhalten, hätte ich so nicht erwartet.Wie ist dann zu erklären, dass es ausreicht unter Start/ Ausführen lediglich den Anwendungstitel eingeben zu müssen (z.B. xyz.exe), den ich zuvor per NSIS-Installer wie folgt in die Registry geschrieben habe:
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\xyz.exe" "Path" "C:\Programme\Leos" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\xyz.exe" "" "C:\Programme\Leos\xyz.exe"um die Anwendung zu starten?
Der Pfad zur Anwendung wird unter 'Ausführen' offensichtlich aus der Registry gelesen. D.h. hier ist es offensichlich möglich auch ohne Kenntnis des vollständigen Keys in der Registry zu suchen!?
Gruß
Leo
-
Dass man einen vollständigen Key übergeben muss, um dessen Werte auszulesen, d.h., dass es nicht möglich sein soll nach Vorgabe eines Anwendungstitels (z.B. xyz.exe) einen oder mehrere Keys als Ergebnis zu erhalten, hätte ich so nicht erwartet.
Ist ja auch nicht so -> du kannst von der Wurzel losgehend alle Schlüssel und Werte durchsuchen -> musst es bloß programmieren