Bagaimana program yang tidak ada di jalur saya dijalankan? [duplikat]

57

Kemungkinan Duplikat:
Mengapa saya dapat menjalankan program yang tidak ada dalam variabel lingkungan PATH saya?

Saya mengajar rekan kerja tentang% PATH% dan menemukan bahwa jika saya menjalankan "Firefox", itu berfungsi, tetapi terkejut melihat bahwa itu tidak ada di jalur saya.

Apa yang saya lewatkan?

Mathew
sumber
2
Itu tergantung pada konteksnya. Jika Anda memasukkan "firefox" dari baris perintah, maka firefox.exe harus berada di jalur atau di folder Windows atau Windows \ System32. Jika Anda memasukkan "Firefox" di dialog Run, registri App Paths digunakan, jadi firefox.exe terdaftar di sana.
boot13
Terima kasih boot13, saya tidak mengetahui kunci registri App Paths.
Mathew

Jawaban:

101

Jika Anda mencoba menjalankan executable dengan hanya menentukan namanya, Windows mencari file di lokasi berikut :

  1. Direktori kerja saat ini.
  2. Hanya Windowsdirektori (tidak ada subdirektori yang dicari).
  3. The Windows\System32direktori.
  4. Direktori yang tercantum dalam variabel lingkungan PATH.
  5. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths(juga HKEY_CURRENT_USERsejak Windows 7)

Microsoft sebenarnya merekomendasikan "mendaftarkan" aplikasi di App Pathssubkunci untuk menghindari kebutuhan aplikasi untuk memodifikasi PATHvariabel lingkungan sistem . Pemasang aplikasi akan mendaftarkan yang dapat dieksekusi.

JC2k8
sumber
3
Salah satu jawaban terbaik untuk pertanyaan yang pernah saya lihat. +1
Everett
Itu dia, terima kasih pak. Pelajari sesuatu yang baru setiap hari.
Mathew
8
@Mathew Sama-sama. Perlu diingat bahwa subkunci "Jalur Aplikasi" juga ada di sarang HKCU untuk aplikasi yang diinstal hanya untuk satu pengguna .
JC2k8
1
Jadi itu sebabnya saya tidak pernah benar-benar muck sekitar dengan PATH sampai saya beralih dari pengembangan .NET ke pengembangan Java. Saya tidak pernah benar-benar mempertimbangkan mengapa segala sesuatu dalam pengembangan .NET "hanya bekerja"!
Stephen Swensen
2
Ini hanya berlaku untuk dialog Windows Run, di cmd.exe dan hanya 1. yang digunakan untuk Powerhell, lihat juga komentar boot13.
Alexander