![Почему запускается статическое программное приложение «NotePad++»?](https://rvso.com/image/1601159/%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83%20%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D0%B5%D1%82%D1%81%D1%8F%20%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5%20%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5%20%C2%ABNotePad%2B%2B%C2%BB%3F.png)
Было время, когда нужно было добавить в
PATH
переменную среды папку дляNotePad++
статического программного приложения, чтобы запустить его из диалогового окна «Выполнить». Эта папка:Было время, когда
start notepad++
для его запуска приходилось вводить команду только в диалоговом окне «Выполнить», хотя путь к нему отсутствовал вPATH
переменной среды.Теперь достаточно просто ввести
notepad++
в диалоговом окне «Выполнить», чтобы запустить его, хотя путь к нему отсутствует вPATH
переменной среды:Как это происходит?
решение1
Похоже , что и диалоговое окно «Выполнить», и start
команда в Cmd используют одну и ту же функцию ShellExecute(), которая имеет дополнительный список расположений:«Пути приложений»ключ реестра.
Вместо того, чтобы добавлять себя в %PATH%, программы могут регистрировать расположение отдельных исполняемых файлов по адресу:
HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths
HKCU\Software\Microsoft\Windows\CurrentVersion\App Paths
Это дает преимущества, поскольку не требует перезапуска всех приложений, которые все еще имеют старое значение %PATH%, и не загромождает путь внутренними исполняемыми файлами.
См. MicrosoftдокументацияБольше подробностей.