Немного важного фона: у моей компании есть общий VBS-скрипт входа в систему, который вносит изменения в переменную среды PATH пользователя при входе в систему и позволяет мне запускать программное обеспечение, которое зависит от сопоставленных файловых ресурсов DFS. Я также недавно установил Windows Powershell SDK на свой компьютер с Windows 7 Enterprise и попытался изменить переменную среды PATH из командной строки Powershell.
После этого я заметил, что больше не могу запускать приложения, соответствующие этим модификациям PATH при входе в систему, и что PATH редактора переменных среды был настроен на что-то отличное от того, что отображалось при выдаче 'echo %PATH%'
из командной строки.
Так, например (упрощение), из редактора переменных среды ( My Computer properties -> Advanced System Settings -> Environment Variables
) у меня было
C:\MyDir\; C:\MyOtherDir
тогда как, когда я сделал 'echo %PATH%'
из командной строки, я получил:
C:\MyDir\
У кого-нибудь еще была подобная проблема, и было ли какое-то решение? Когда я погуглил на помощь, я наткнулся на это:
Мне пришло в голову, что если сценарий входа в систему был инициирован чем-то другим, чем моя среда Explorer.exe, то это была проблема. Однако, когда я сам запустил скрипт входа в систему, мой PATH из командной строки не изменился. Какое это имеет отношение к PowerShell? Мне не хватает, как это связано с этой установкой полностью.
источник
Ответы:
В Windows есть два класса переменных среды: системные переменные среды и пользовательские переменные среды . Если вы используете,
echo %PATH%
вы увидите свою переменную среды пользователяPATH
. Только если не определена пользовательская переменная, системная переменная будет действовать для пользовательских процессов.PATH
Сепаратор;
не должен следовать пробел.Следующее примечание Microsoft может быть полезным:
Вы можете изменить переменные среды пользователя, отредактировав следующий ключ реестра:
Вы можете изменить системные переменные среды, отредактировав следующий ключ реестра:
Обратите внимание, что любая переменная среды, которую необходимо расширить (например, при использовании
%SYSTEM%
), должна храниться в реестре в качествеREG_EXPAND_SZ
значения реестра. Любые значения типаREG_SZ
не будут расширены при чтении из реестра.Дополнительное замечание: всякий раз, когда процесс изменяет свою среду (а не параметры реестра, которые определяют среду для новых процессов), изменения видны только для дочерних процессов.
источник
tmp
иtemp
. Вы уверены, что это путь для пользователя, который должен быть изменен?