W jaki sposób uruchamiany jest program, który nie jest na mojej ścieżce? [duplikować]

57

Możliwa duplikat:
Dlaczego mogę uruchomić program, który nie znajduje się w mojej zmiennej środowiskowej PATH?

Uczyłem współpracownika o% PATH% i odkryłem, że jeśli uruchomię „Firefox”, to działa, ale byłem zaskoczony, widząc, że nie było na mojej drodze.

czego mi brakuje?

Mathew
źródło
2
To zależy od kontekstu. Jeśli wpisujesz „firefox” z wiersza poleceń, firefox.exe musi znajdować się na ścieżce lub w folderach Windows lub Windows \ System32. Jeśli wpisujesz „Firefox” w oknie dialogowym Uruchom, używany jest rejestr Ścieżek aplikacji, więc firefox.exe jest tam zarejestrowany.
boot13
Dzięki boot13 nie wiedziałem o kluczach rejestru ścieżek aplikacji.
Mathew

Odpowiedzi:

101

Jeśli próbujesz uruchomić plik wykonywalny, podając tylko jego nazwę, system Windows szuka pliku w następujących lokalizacjach :

  1. Bieżący katalog roboczy.
  2. Tylko Windowskatalog (nie są przeszukiwane żadne podkatalogi).
  3. Windows\System32Katalogiem.
  4. Katalogi wymienione w zmiennej środowiskowej PATH.
  5. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths(także HKEY_CURRENT_USERod Windows 7)

Microsoft faktycznie zaleca „rejestrowanie” aplikacji w App Pathspodkluczu, aby uniknąć konieczności modyfikowania systemowej PATHzmiennej środowiskowej przez aplikacje . Instalator aplikacji zarejestruje plik wykonywalny.

JC2k8
źródło
3
Jedna z najlepszych odpowiedzi na pytanie, jakie kiedykolwiek widziałem. +1
Everett,
To było to, dziękuję, proszę pana. Naucz się czegoś nowego każdego dnia.
Mathew
8
@Mathew Nie ma za co. Należy pamiętać, że podklucz „Ścieżki aplikacji” istnieje również w gałęzi HKCU dla aplikacji zainstalowanych tylko dla jednego użytkownika .
JC2k8,
1
Dlatego właśnie tak naprawdę nigdy nie musiałem zmarnować PATH, dopóki nie przeszedłem z programowania .NET do programowania Java. Nigdy tak naprawdę nie zastanawiałem się, dlaczego wszystko w rozwoju .NET „po prostu działa”!
Stephen Swensen
2
Dotyczy to tylko okna dialogowego Uruchamianie systemu Windows, w cmd.exe i programie PowerShell używane są tylko wersje 1. do 4., patrz także komentarz boot13.
Alexander