71

Как опытный пользователь, я часто использую диалог Run.

Я могу понять, почему следующие команды работают, так как они находятся в переменной окружения PATH .

mspaint
diskmgmt.msc
explorer

Эти команды также работают в CMD.

Приведенные ниже команды работают в рабочем режиме, но их нет в PATH , и они не работают в CMD.

firefox
winword
iexplore

Как Run узнает, где находятся эти файлы?

3 ответа3

89

Когда вы выполняете команду из диалогового окна «Выполнить», система просматривает раздел реестра « App Paths к приложениям» здесь:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

а также

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

ПРИМЕР

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\filezilla.exe

(default) значение данных имеет полный путь к исполняемому файлу.

Если он не найден, он просматривает каждую папку, включенную в PATH.

Принимая во внимание, что командная строка не ссылается на эти ключи реестра. Он только ищет ПУТЬ.

4

Ответ w32sh правильно указывает на то, что дополнительные ключи, которые ищет диалог Run, находятся здесь:

  • HKEY_CURRENT_USER\ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows \ CurrentVersion \ Пути к приложениям \
  • HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows \ CurrentVersion \ Пути к приложениям \

Для этих путей есть официальная документация.

Важным фактом об этих ключах является то, что имя ключа (например, «filezilla.exe») не обязательно должно соответствовать полному пути. В Windows 7 значением может быть даже простая командная строка, аналогичная той, которая может использоваться в качестве "цели" ярлыка.

Например, я имел обыкновение иметь это в моем реестре:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\jedit.exe]
@="\"C:\\WINDOWS\\system32\\javaw.exe\" -Xms24M -Xmx512M -jar \"C:\\Program Files\\jEdit\\jedit.jar\" -reuseview"

Я не могу заставить это работать в Windows 10, но вы все равно можете указать на любой файл, включая командный файл, например

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\jedit.exe]
@="C:\\Program Files\\jEdit\\run-jedit.bat"

Это позволяет вам набирать "jedit" или «jedit C:\foo\bar\something.txt» для запуска JVM с соответствующими параметрами и запуска / повторного использования jEdit.

Насколько я вижу, имя ключа должно заканчиваться на «.exe», поэтому для создания псевдонима "abc" вы создаете ключ «abc.exe», даже если он не указывает на файл «.exe». ,

-1

В командной строке есть переменная окружения с именем PATH или% PATH%. Он содержит ряд мест для поиска.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .