Pfad zu einer Programmdatei finden


    Tags: , ,

    KommandozeileWenn mehrere Versionen einer ausführbaren Datei oder verschiedene Programme mit dem gleichen Dateinamen auf einem Rechner existieren, dann ist nicht klar, welches davon startet, wenn man es ohne Pfadangabe aufruft. Um dies herauszufinden, bieten die Bordmittel ein spartanisches Tool, aber besser geht das mit einer Freeware.

    Bei kritischen Aufgaben der Systemverwaltung ist es eine gute Praxis, Anwendungen mit vollem Pfad aufzurufen, um sicher zu gehen, dass dem privilegierten User kein bösartiges Programm unter­geschoben wird.

    Verzichtet man zusätzlich noch auf die Dateiendung, dann kann es sich dabei sogar um ein Script handeln, das im Pfad vor der der gewünschten Programmdatei liegt. Um sich die Tipparbeit dennoch zu sparen, kann man zuerst den Pfad des Programms verifizieren.

    Integriertes Dienstprogramm

    Unter Unix bzw. Linux gibt es schon seit jeher den Befehl which, um anzuzeigen, von wo ein bestimmtes Programm gestartet würde. Das Gegenstück dazu unter Windows ist where.exe:

    where certutil

    Als Ergebnis erhält man den Dateinamen inklusive des vollständigen Pfads.

    Unter PowerShell existiert jedoch mit Where ein vordefiniertes Alias für Where-Object, so dass man es dort so aufrufen muss:

    where.exe certutil

    Kostenloses Tool findEXE

    Die Freeware findEXE von Uwe Sieber leistet das Gleiche, ist darüber hinaus aber auch in der Lage, das assoziierte Programm zu finden, wenn man den Namen einer Datendatei eingibt:

    FindEXE.exe beispiel.txt

    In diesem Fall würde man standardmäßig den vollständigen Pfad zu notepad.exe erhalten.

    Pfad von certutil mit where und findEXE anzeigen. Der Aufruf ohne Pfad aus dem lokalen Verzeichnis scheitert in PowerShell.

    Beide Tools schauen nicht nur in die Verzeichnisse des Suchpfads, sondern auch in den aktuellen Ordner. Das ist unter cmd.exe nützlich, weil die alte Kommandozeile die Programme von dort startet, bevor sie den Pfad auswertet.

    Unter PowerShell hat das jedoch keine Bedeutung, weil diese das aktuelle Verzeichnis bei der Suche nach ausführbaren Dateien nicht berücksichtigt. Wenn man bloß den Dateinamen eingibt, erhält man eine Fehlermeldung, wonach das Programm nicht gefunden werden konnte. Dort muss man dem Dateinamen ein ".\" voranstellen.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Wolfgang Sommergut
    Wolfgang Sommergut hat lang­jährige Erfahrung als Fach­autor, Berater und Kon­ferenz­sprecher zu ver­schie­denen Themen der IT. Da­ne­ben war er als System­ad­mi­ni­stra­tor und Con­sultant tätig.
    // Kontakt: E-Mail, XING, LinkedIn //

    Verwandte Beiträge

    Weitere Links