13

Я знаю, как установить системные или пользовательские переменные среды:

Переменные среды Windows

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

То есть, скажем, у меня есть

(SYSTEM) PATH=C:\Windows\System32;C:\Program Files\Foo\bin;...

и (USER) PATH=C:\Program Files\Bar\bin (обратите внимание, что в этом значении нет %PATH% )

тогда результирующая переменная окружения для этого пользователя будет:

(эффективно) PATH=C:\Windows\System32;C:\Program Files\Foo\bin;...;C:\Program Files\Bar\bin

Однако я бы предпочел, чтобы для очень конкретной учетной записи пользователя ОС переменная среды PATH имела каталог bar\bin в начале PATH, а не в конце.

Есть ли правильный способ сказать Windows, чтобы полностью переопределить переменную PATH пользователя со значением для этого пользователя вместо добавления его в системную PATH ?

Примечание. Очевидно, что из пакетного файла все это не имеет значения, поскольку вы можете устанавливать и настраивать env.vars по своему усмотрению.

3 ответа3

1

Если это необходимо только для работы с сеансами командной строки, создайте пакетный файл профиля /init и настройте его в реестре по адресу https://stackoverflow.com/questions/17404165/how-to-run-a-command-on. -command-prompt-startup-in-windows. Например,

reg add "HKCU\Software\Microsoft\Command Processor" /v AutoRun ^
  /t REG_EXPAND_SZ /d "%"USERPROFILE"%\init.cmd" /f

Затем просто внесите изменения в PATH в этом пакетном файле. Например,

SET USER_PATH=c:\whatever
SET PATH=%USER_PATH%;%PATH%
0

У меня была такая же проблема, и это сработало для меня:

Вы можете получить "переменную пути пользователя" через:

>reg query HKCU\Environment /v path

Вывод (на моей машине):

HKEY_CURRENT_USER\Environment
    path    REG_SZ    C:\Program Files (x86)\GnuWin32\bin

Но тогда вы должны разобрать это и использовать соответствующую часть.

Я прочитал решение здесь здесь и протестирован на моей машине.

-1

Я не знаю, как игнорировать системные переменные, но я знаю, что если вы используете переменные сеанса (с помощью команды SET ), они имеют приоритет над другими переменными. Таким образом, вы можете использовать инструкцию SET PATH=C:\Program Files\Bar\bin и ваш желаемый путь будет первой частью переменной.

Вот действительная ссылка, и я сообщаю здесь простой период с этой страницы:

Если переменные с одинаковыми именами хранятся как переменные среды пользователя и среды компьютера, переменная пользователя будет иметь приоритет. Если создается переменная Session, которая будет иметь приоритет над любой переменной User и / или Machine Environment с тем же именем.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .