Почему изменения к моему ПУТИ, не распознаваемому?

Когда я обновлю свой ПУТЬ с помощью или встроенного диалогового окна Переменных среды или чего-то как Редактор Пути, и затем открываю командную строку, изменения в моем ПУТИ не зарегистрируются в консоли, в зависимости от того, где командная строка была запущена с.

Например, если я редактирую свой ПУТЬ и затем запускаю cmd.exe с Меню "Пуск" или ярлыка на Рабочем столе, затем мой ПУТЬ выглядит хорошо: это было успешно обновлено; однако, если я запускаю cmd.exe с ярлыка где-нибудь кроме Меню "Пуск" или Рабочего стола, новый ПУТЬ не становится считанным, и я получаю старый путь вместо этого. Это очень странно.

Я попытался выполнить командную строку от ярлыка на рабочем столе, и это хорошо работает; я затем копирую тот точно тот же самый ярлык на подпапку на рабочем столе, и я получаю проблему ПУТИ необновления.

Я понимаю, что это довольно трудно объяснить, таким образом, я создал скринкаст для показа этой проблемы в действии.

Вот снимок экрана ярлыка Командной строки, как замечено в том скринкасте:

Command prompt shortcut settings

Это находится на Windows Vista Home Premium SP2.

36
задан 19.09.2011, 07:25

2 ответа

Как Rowland предполагает при запуске нового процесса, он считает переменные среды из процесса, который запускает его. Поэтому при запуске командной строки с Меню "Пуск" или Рабочего стола, это читает переменные среды из explorer.exe который, как сила тяжести предполагает, обнаруживает изменения в параметрах среды в реестре, и таким образом я вижу свой новый ПУТЬ в командных строках, запущенных с Настольного или Меню "Пуск".

Причина я не вижу обновления своего ПУТИ в скринкасте, который я отправил, состоит в том, потому что я первоначально запустил окно проводника с помощью создания ФАРРА FindAndRunRobot.exe родительский процесс. ФАРР автоматически не обнаруживает изменения среды и так, дочерние процессы, порожденные от него, не берут новый ПУТЬ. Мне также установили опцию 'Launch folder windows in a separate process' в Проводнике, что означает, что все окна explorer.exe я открылся последующий за начальным, открытым ФАРРОМ где также дети ФАРРА.

Путем выключения опции 'Launch folder windows in a separate process', новой explorer.exe процессы не создаются под ФАРРОМ, который решает мою проблему. Однако я также запускаю консоли и другие вещи непосредственно из ФАРРА; они также получают старые параметры среды. Если я перезапускаю ФАРР, то новые параметры среды распространены.

Вот снимок экрана процессов показа Проводника Процесса, порожденных из ФАРРА. Ни один из этих процессов не получает новые параметры среды от верхнего уровня explorer.exe если я не перезапускаю ФАРР:

process explorer

27
ответ дан 07.12.2019, 08:58

При запуске нового процесса (такого как новая командная строка), это поднимет переменные среды с процесса, который запускает его. Когда путь обновляется, только процесс, выполняющий обновление, может знать, что это изменилось, и установка не распространяет, пока Вы не входите на (для настроек в расчете на пользователя) или перезагрузка (для настроек в масштабе всей системы)

30
ответ дан 07.12.2019, 08:58

Теги

Похожие вопросы