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

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

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

Обработчик команд предоставляет команду задать, чтобы отобразить блок среды или создать новые переменные среды. Можно также просмотреть или изменить переменные среды, выбрав System на панели управления , выбрав дополнительные параметры системыи щелкнув переменные среды.

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

Var1=Value1\0
Var2=Value2\0
Var3=Value3\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.

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

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