Сначала я подумал, что cmd ищет только исполняемые файлы в каталогах, содержащихся в переменной PATH, поэтому я случайно выбрал приложение - winword.exe (Microsoft Word) и попытался запустить его из командной строки:
Причина в winword.exe
том, что существует раздел реестра, который определяет путь к Microsoft Word (Winword.exe). Аналогичный ключ существует для Firefox.exe и Chrome.exe, если эти приложения установлены.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
Я хочу знать, где именно командная строка ищет исполняемые файлы?
Переменная PATH системы, переменная PATH пользователя и различные ключи внутри ..\App Paths
. Я смог подтвердить, что Audacity не создает ключ для себя, когда он установлен.
Когда функция ShellExecuteEx вызывается с именем исполняемого файла в параметре lpFile, существует несколько мест, где функция ищет файл. Мы рекомендуем зарегистрировать ваше приложение в разделе реестра «Пути к приложениям». Это избавляет приложения от необходимости изменять системную переменную среды PATH.
- Текущий рабочий каталог.
- Только каталог Windows (подкаталоги не ищутся).
- Каталог Windows \ System32.
- Каталоги, перечисленные в переменной среды PATH.
- Рекомендуется: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Пути к приложениям
Источник: Регистрация приложения