10

Немного важной предыстории: у моей компании есть общий 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\

У кого-нибудь еще была похожая проблема, и было ли какое-то решение? Когда я погуглил на помощь, я наткнулся на это:

(Связанные с?) Поток StackOverflow

Мне пришло в голову, что если сценарий входа в систему был инициирован чем-то другим, чем моя среда Explorer.exe, то это была проблема. Однако когда я сам запустил скрипт входа в систему, мой PATH из командной строки не изменился. Какое это имеет отношение к PowerShell? Мне не хватает, как это связано с этой установкой полностью.

1 ответ1

11

В Windows есть два класса переменных среды: системные переменные среды и переменные среды пользователя. Если вы используете echo %PATH% вы увидите переменную окружения пользователя PATH . Только если пользовательская переменная не определена, системная переменная будет действовать для пользовательских процессов.

Разделитель PATH ; не должно сопровождаться пробелом.

Следующая заметка Microsoft может быть полезна:

Вы можете изменить переменные среды пользователя, отредактировав следующий ключ реестра:

   HKEY_CURRENT_USER \ 
         Environment

Вы можете изменить системные переменные среды, отредактировав следующий ключ реестра:

   HKEY_LOCAL_MACHINE \ 
               SYSTEM \ 
    CurrentControlSet \ 
              Control \ 
      Session Manager \ 
          Environment

Обратите внимание, что любая переменная среды, которую необходимо развернуть (например, когда вы используете %SYSTEM%), должна храниться в реестре как значение реестра REG_EXPAND_SZ . Любые значения типа REG_SZ не будут расширены при чтении из реестра.

Дополнительное замечание: всякий раз, когда процесс изменяет свою среду (а не параметры реестра, которые определяют среду для новых процессов), изменения видны только для дочерних процессов.

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