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

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

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

Обработчик команд предоставляет команду set для отображения блока среды или создания переменных среды. Вы также можете просмотреть или изменить переменные среды, выбрав Система в панель управления, Дополнительные параметры системы и щелкнув Переменные среды.

Каждый блок среды содержит переменные среды в следующем формате:

Var1=Значение1\0
Var2=Значение2\0
Var3=Значение3\0
...
VarN=ValueN\0\0

Имя переменной среды не может содержать знак равенства (=).

Функция GetEnvironmentStrings возвращает указатель на блок среды вызывающего процесса. Это должно рассматриваться как блок только для чтения; не изменяйте его напрямую. Вместо этого используйте функцию SetEnvironmentVariable , чтобы изменить переменную среды. Завершив работу с блоком среды, полученным из GetEnvironmentStrings, вызовите функцию FreeEnvironmentStrings , чтобы освободить блок.

Вызов SetEnvironmentVariable не влияет на системные переменные среды. Чтобы программно добавить или изменить системные переменные среды, добавьте их в раздел реестраHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment , а затем разверните сообщение WM_SETTINGCHANGE с параметром lParam в строке "Среда". Это позволяет приложениям, таким как оболочка, получать обновления.

Максимальный размер пользовательской переменной среды составляет 32 767 символов. Нет технических ограничений на размер блока среды. Однако существуют практические ограничения в зависимости от механизма, используемого для доступа к блоку. Например, пакетный файл не может задать переменную, длиннее максимальной длины командной строки.

Windows Server 2003 и Windows XP: Максимальный размер блока среды для процесса составляет 32 767 символов. Начиная с Windows Vista и Windows Server 2008, нет технических ограничений на размер блока среды.

Функция GetEnvironmentVariable определяет, определена ли указанная переменная в среде вызывающего процесса, и, если да, то каково ее значение.

Чтобы получить копию блока среды для данного пользователя, используйте функцию CreateEnvironmentBlock .

Чтобы развернуть строки переменных среды, используйте функцию ExpandEnvironmentStrings .

Изменение переменных среды

Переменные пользовательской среды