Как добавить переменную среды Windows без перезагрузки?

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

Скажем, у вас есть производственный сервер, на котором размещается множество приложений, а для нового приложения требуется конкретная переменная среды для запуска. Вы не хотите перезагружать его, пока пользователи подключены к вашим другим приложениям. Какой у вас выбор? Мне не нравится опция «дожидаться» до «хорошего времени». Должен быть лучший способ. Что мне не хватает?

156 голосов | спросил Chad Braun-Duin 16 Mayam09 2009, 08:09:31

6 ответов


150

Изменения в переменных среды должны вступить в силу немедленно, если вы внесете это изменение через главный диалог свойств для данного компьютера (перейдите в раздел «Мой компьютер | Свойства | Дополнительные параметры среды»). После сохранения изменений Explorer передает сообщение WM_SETTINGCHANGE всем окнам, чтобы сообщить им об этом изменении. Любые программы, порожденные через Explorer, после этого должны получить обновленную среду, хотя уже запущенные программы не будут работать, если они не обрабатывают сообщение об изменении настроек.

Я не могу сказать из описания проблемы, какую конкретную проблему вы испытываете с этим. Не могли бы вы рассказать нам больше о конкретном сценарии, который не работает?

Эта статья также может быть полезной: Как распространять переменные среды в системе

ответил Charlie 16 Mayam09 2009, 08:16:34
53
  1. В командной строке введите: runas /user: yourusername @ yourdomain cmd
  2. Он откроет новую подсказку cmd, а затем введите: taskkill /f /im explorer.exe
  3. Затем введите: explorer.exe

Теперь, после закрытия всех команд, вы увидите, что переменная PATH была действительно обновлена.

Все командные подсказки должны быть закрыты. Повторно запустите новую командную строку, введите путь, и вы увидите новые данные.

ответил Ron AndKim Stengel 20 MaramWed, 20 Mar 2013 10:36:14 +04002013-03-20T10:36:14+04:0010 2013, 10:36:14
16

Следует иметь в виду, что многие программы получают переменные среды при первом запуске, поэтому, несмотря на то, что для окон может не понадобиться перезагрузка, некоторые программы могут, прежде чем они смогут использовать новые переменные. Хорошим примером этого является открытие нового окна командной строки после добавления PATH (да, я с этим справился).

ответил nedm 16 Mayam09 2009, 10:11:58
12

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

статья kb, связанная с этим ответом , фактически утверждает, что:

  

Однако обратите внимание, что изменения переменных среды не   приводят к немедленным изменениям. Например, если вы запустите другую команду   После внесения изменений, переменные среды будут   отражают предыдущие (а не текущие) значения. Изменения не принимаются   пока вы не выйдете из системы, а затем снова войдите в систему.

Часть переменных среды, возвращающихся к предыдущим значениям после перезагрузки командной строки, является тем, что я испытал в Windows Server 2008.

Далее в статье говорится:

  

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

Это не означает, что Explorer передает сообщение WM_SETTINGCHANGE после того, как вы изменили переменные системной среды или что она действительно работает. Я не уверен, как вы будете делать то, что предлагается в статье KB (для немедленного распространения изменений) из командной строки.

ответил testworks 27 32013vEurope/Moscow11bEurope/MoscowWed, 27 Nov 2013 02:30:54 +0400 2013, 02:30:54
4

Сделайте env. переменная доступна сразу:

1. Открыть оболочку

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

2. PATH =% PATH%; C: \ тип \ ваш \ новый \ путь \ здесь

проверьте, что ваш новый путь был добавлен в переменную среды

3. echo% PATH%

Готово.

Сделать переменную доступной при перезагрузке

1. Нажмите WinLogoKey + Pause /Break
2. На левой панели нажмите «Дополнительные настройки системы»,
3. На вкладке «Дополнительно» нажмите «Переменные среды»,
4. В «Системные переменные» выберите тот, который вы хотите изменить.
5. Нажмите «ОК».

Протестировано и работает в Windows 7/10

ответил Pedro Sousa 18 32015vEurope/Moscow11bEurope/MoscowWed, 18 Nov 2015 20:00:44 +0300 2015, 20:00:44
3

Возможное решение для служб - временно запустить их как другого пользователя (кроме LocalSystem, LocalService, NetworkService). Например, для службы Apache это работает без проблем. Чтобы изменить сервисную учетную запись open services.msc, выберите службу, щелкните свойства службы, а на второй вкладке введите учетные данные для входа пользователя. Перезапустите службу, и ее переменные среды должны быть обновлены.

Если это пользователь, который был зарегистрирован, это должно работать без проблем. Если вы используете текущую учетную запись пользователя, может потребоваться перезагрузка explorer.exe. Также обратите внимание, что запуск служб как обычной учетной записи пользователя может привести к угрозам безопасности.

ответил Odin 10 AM000000120000002231 2010, 00:26:22

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132