Как работает программа, которая не в моем пути? [Дубликат]

57

Возможный дубликат:
Почему я могу выполнить программу, которая не входит в переменную окружения PATH?

Я учил коллегу о% PATH% и обнаружил, что если я запускаю «Firefox», он работает, но был удивлен, увидев, что это не на моем пути.

Чего мне не хватает?

Mathew
источник
2
Это зависит от контекста. Если вы вводите «firefox» из командной строки, то firefox.exe должен находиться либо в пути, либо в папках Windows или Windows \ System32. Если вы вводите «Firefox» в диалоговом окне «Выполнить», используется реестр путей к приложениям, поэтому там регистрируется firefox.exe.
boot13
Спасибо boot13, я не знал о ключах реестра App Paths.
Мэтью

Ответы:

101

Если вы пытаетесь запустить исполняемый файл, указав только его имя, Windows ищет файл в следующих местах :

  1. Текущий рабочий каталог.
  2. Только Windowsкаталог (без подкаталогов ищется).
  3. Windows\System32Каталог.
  4. Каталоги, перечисленные в переменной среды PATH.
  5. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths(также HKEY_CURRENT_USERначиная с Windows 7)

Microsoft фактически рекомендует «регистрировать» приложения в App Pathsподразделе, чтобы избежать необходимости применения приложениями изменений системной PATHпеременной среды. Установщик приложения зарегистрирует исполняемый файл.

JC2k8
источник
3
Один из лучших ответов на вопрос, который я когда-либо видел. +1
Эверетт
Вот и все, спасибо, сэр. Узнавайте что-то новое каждый день.
Мэтью
8
@ Мэтью Не за что. Помните, что подраздел «Пути к приложениям» также существует в кусте HKCU для приложений, которые были установлены только для одного пользователя .
JC2k8
1
Вот почему мне никогда не приходилось возиться с PATH, пока я не перешел от разработки .NET к разработке на Java. Я никогда не задумывался, почему все в .NET разработке "просто работает"!
Стивен Свенсен
2
Это верно только для диалогового окна Windows Run, в cmd.exe и powershell используются только от 1 до 4. См. Также комментарий boot13.
Александр