Wie wird ein Programm ausgeführt, das sich nicht in meinem Pfad befindet? [Duplikat]

57

Mögliches Duplikat:
Warum kann ich ein Programm ausführen, das sich nicht in meiner Umgebungsvariablen PATH befindet?

Ich habe einem Mitarbeiter% PATH% beigebracht und festgestellt, dass es funktioniert, wenn ich "Firefox" ausführe, aber ich war überrascht zu sehen, dass es nicht auf meinem Weg war.

Was vermisse ich?

Mathew
quelle
2
Es kommt auf den Kontext an. Wenn Sie "firefox" über eine Befehlszeile eingeben, muss sich firefox.exe entweder im Pfad oder in den Ordnern Windows oder Windows \ System32 befinden. Wenn Sie im Dialogfeld "Ausführen" "Firefox" eingeben, wird die App Paths-Registrierung verwendet, sodass firefox.exe dort registriert wird.
boot13
Danke boot13, mir waren die Registrierungsschlüssel für App Paths nicht bekannt.
Mathew

Antworten:

101

Wenn Sie versuchen, eine ausführbare Datei nur unter Angabe ihres Namens auszuführen, sucht Windows an den folgenden Speicherorten nach der Datei :

  1. Das aktuelle Arbeitsverzeichnis.
  2. WindowsNur das Verzeichnis (es werden keine Unterverzeichnisse durchsucht).
  3. Das Windows\System32Verzeichnis.
  4. Verzeichnisse, die in der Umgebungsvariablen PATH aufgeführt sind.
  5. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths(auch HKEY_CURRENT_USERseit Windows 7)

Microsoft empfiehlt tatsächlich, Anwendungen im App PathsUnterschlüssel zu registrieren , um zu vermeiden, dass Anwendungen die Systemumgebungsvariable ändern müssen PATH. Das Installationsprogramm der Anwendung registriert die ausführbare Datei.

JC2k8
quelle
3
Eine der besten Antworten auf eine Frage, die ich je gesehen habe. +1
Everett
Das war es, danke, Sir. Lerne jeden Tag etwas Neues.
Mathew
8
@Mathew Gern geschehen. Beachten Sie, dass der Unterschlüssel "App Paths" auch in der HKCU-Struktur für Anwendungen vorhanden ist, die nur für einen Benutzer installiert wurden .
JC2k8,
1
Deshalb musste ich nie wirklich mit dem PATH herumspielen, bis ich von der .NET-Entwicklung zur Java-Entwicklung überging. Ich habe nie wirklich darüber nachgedacht, warum alles in der .NET-Entwicklung "nur funktioniert"!
Stephen Swensen
2
Dies gilt nur für das Windows-Dialogfeld Ausführen. In cmd.exe und Powershell werden nur 1. bis 4. verwendet. Siehe auch den Kommentar von boot13.
Alexander