Если я выполняю set PATH=%PATH%;C:\\Something\\bin
из командной строки ( cmd.exe
), а затем выполняю, echo %PATH%
я вижу, что эта строка добавлена в PATH. Если я закрою и открою командную строку, этой новой строки нет в PATH.
Как я могу постоянно обновлять PATH из командной строки для всех процессов в будущем, а не только для текущего процесса?
Я не хочу этого делать, перейдя в Свойства системы → Дополнительно → Переменные среды и обновив там PATH.
Эта команда должна выполняться из приложения Java (см. Мой другой вопрос ).
Runtime.getRuntime().exec("my command");
Ответы:
Документацию о том, как это сделать, можно найти на MSDN . Ключевой отрывок таков:
Обратите внимание, что вашему приложению потребуются повышенные права администратора, чтобы иметь возможность изменять этот ключ.
Вы указываете в комментариях, что были бы счастливы изменить только среду для каждого пользователя. Сделайте это, отредактировав значения в HKEY_CURRENT_USER \ Environment . Как и раньше, убедитесь, что вы транслируете
WM_SETTINGCHANGE
сообщение.Вы должны легко сделать это из своего Java-приложения, используя классы реестра JNI.
источник
HKEY_CURRENT_USER\Environment
чтобы избежать требований к высоте.requestedExecutionLevel
дляrequireAdministrator
в приложении манифеста.Ты можешь использовать:
Однако
setx
сохраненная строка будет усечена до 1024 байтов, что может привести к повреждению PATH./M
будет менятьсяPATH
вHKEY_LOCAL_MACHINE
вместоHKEY_CURRENT_USER
. Другими словами, системная переменная, а не пользовательская. Например:Вы должны иметь в виду, что новый PATH не отображается в вашем текущем
cmd.exe
.Но если вы посмотрите в реестре или на новый
cmd.exe
с"set p"
вами может увидеть новое значение.источник
setx
изменить путь к машине вместо пути пользователя?/m
в конце команды, на Windows Xp и 7. Я не пробовал , хотя.setx
команды «Параметр по умолчанию не допускается более 2 раз» Как обойти это?Я предостерегаю от использования команды
для изменения переменной PATH из-за «особенности» ее реализации. На многих (большинстве?) Установок в наши дни переменная будет длинной -
setx
будет усекать сохраненную строку до 1024 байтов, потенциально повреждая PATH (см. Обсуждение здесь ).( Я подписался специально, чтобы отметить эту проблему, и поэтому у меня нет репутации сайта, чтобы напрямую комментировать ответ, опубликованный 2 мая 2012 года. Благодарю beresfordt за добавление такого комментария )
источник
Этот Python-скрипт [*] делает именно это:
Ниже приведены некоторые примеры использования, если он был сохранен в файле, который называется
setenv.py
где-то по вашему текущему пути. Обратите внимание, что в этих примерах у меня не было прав администратора , поэтому изменения коснулись только дерева реестра моего локального пользователя:[*] Взято из: http://code.activestate.com/recipes/416087-persistent-environment-variables-on-windows/
источник
Для справки, для тех, кто ищет, как изменить путь с помощью кода, я цитирую полезное сообщение программиста Delphi с этой веб-страницы: http://www.tek-tips.com/viewthread.cfm?qid=686382
источник
В корпоративной сети, где пользователь имеет только ограниченный доступ и использует портативные приложения, существуют следующие уловки командной строки:
reg query "HKEY_CURRENT_USER\Environment"
. Используйте"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
для LOCAL_MACHINE.reg add "HKEY_CURRENT_USER\Environment" /v shared_dir /d "c:\shared" /t REG_SZ
. ИспользуетсяREG_EXPAND_SZ
для путей, содержащих другие переменные %%.reg delete "HKEY_CURRENT_USER\Environment" /v shared_dir
.источник
Этот скрипт http://www.autohotkey.com/board/topic/63210-modify-system-path-gui/
включает все необходимые вызовы Windows API, которые можно отредактировать для ваших нужд. На самом деле это графический интерфейс AutoHotkey, позволяющий легко изменить системный путь. Требуется запускать от имени администратора.
источник