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

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Переменные среды Windows»)
Перейти к: навигация, поиск

Переменная окружения (переменная среды́, англ. environment variable) в Windows используются для хранения текстовых строк пользователя и информации о настройках операционных систем.

Список переменных[править | править исходный текст]

В современных ОС компании Microsoft на платформе NT для получения информации о системе используются следующие переменные (Полужирным выделен текст, относящийся только к Windows Vista/7):

Название Тип Описание
ALLUSERSPROFILE локальная Возвращает размещение профиля «All Users». В Windows 7 возвращает путь к папке C:\ProgramData\.
APPDATA системная Возвращает используемое по умолчанию размещение данных приложений. В Windows XP это C:\Documents and Settings\%UserName%\Application Data. В Windows 7 - C:\Users\%UserName%\AppData\Roaming.
CD локальная Указывает путь к текущему каталогу. Идентична команде CD без аргументов.
CLIENTNAME локальная динамическая Переменная определена только в среде удаленного подключения к рабочему столу. Хранит имя компьютера (%COMPUTERNAME%) клиента удаленного доступа.
CMDCMDLINE локальная Точная команда, использованная для запуска текущего cmd.exe.
CMDEXTVERSION системная Версия текущего Command Processor Extensions.
COMMONPROGRAMFILES системная Расположение каталога "Common Files" (обычно %ProgramFiles%\Common Files).
COMMONPROGRAMFILES(x86) системная Расположение каталога "Common Files" в Program Files (x86) для 64-разрядной ОС (обычно %ProgramFiles(x86)%\Common Files).
COMPUTERNAME системная Имя компьютера
COMSPEC системная Путь к исполняемому файлу командного процессора (shell).
DATE системная Возвращает текущую дату. Использует тот же формат, что и команда date /t. Создаётся командой Cmd.exe.
ERRORLEVEL системная Возвращает код ошибки последней использовавшейся команды. Значение, не равное нулю, обычно указывает на наличие ошибки.
HOMEDRIVE системная Возвращает имя диска локальной рабочей станции, связанного с основным каталогом пользователя. Задаётся на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы».
HOMEPATH системная Возвращает полный путь к основному каталогу пользователя. Задаётся на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы».
HOMESHARE системная Возвращает сетевой путь к общему основному каталогу пользователя. Задаётся на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы».
LOCALAPPDATA системная Возвращает используемое по умолчанию локальное размещение данных приложений (C:\Users\%UserName%\AppData\Local).
LOGONSERVER локальная Имя контроллера домена, использовавшегося для авторизации текущего пользователя.
NUMBER_OF_PROCESSORS системная Количество процессоров в системе (фактически, количество ядер).
OS системная Название операционной системы. Windows XP и Windows 2000 отображаются как Windows_NT.
PATH системная Указывает путь поиска исполняемых файлов.
PATHEXT системная Возвращает список расширений файлов, которые рассматриваются операционной системой как исполняемые.
PROCESSOR_ARCHITECTURE системная Архитектура процессора. Возможные варианты: x86, IA64, AMD64.
PROCESSOR_IDENTIFIER системная Описание процессора (в Интернете часто встречается ошибочное написание PROCESSOR_IDENTFIER - пропущена буква).
PROCESSOR_LEVEL системная Номер модели процессора.
PROCESSOR_REVISION системная Ревизия процессора.
PROGRAMDATA системная Возвращает путь к каталогу C:\ProgramData\ (аналогично ALLUSERSPROFILE).
PROGRAMFILES системная Путь к каталогу Program Files.
PROGRAMFILES(x86) системная Путь к каталогу Program Files (x86) в 64-разрядных системах для приложений архитектуры x86.
PROMPT локальная Возвращает параметры командной строки для текущего интерпретатора. Создаётся командой Cmd.exe.
PUBLIC системная В Windows 7 возвращает путь к каталогу C:\Users\Public.
RANDOM системная Случайное десятичное число от 0 до 32767. Генерируется Cmd.exe.
SESSIONNAME локальная Хранит имя активного пользовательского сеанса. При локальном входе имеет значение "Console", при удаленном доступе имеет вид RDP-Tcp#<номер сеанса>
SYSTEMDRIVE системная Диск, на котором расположен корневой каталог Windows.
SYSTEMROOT системная Путь к корневому каталогу Windows.
TEMP и TMP системная и локальная Возвращает временные каталоги, по умолчанию используемые приложениями, которые доступны пользователям, выполнившим вход в систему. Некоторые приложения требуют переменную TEMP, другие — переменную TMP. Потенциально TEMP и TMP могут указывать на разные каталоги, но обычно совпадают.
TIME системная Возвращает текущее время. Использует тот же формат, что и команда time /t. Создаётся командой Cmd.exe. Дополнительные сведения о команде time см. в разделе Time.
USERDOMAIN локальная Имя домена, которому принадлежит текущий пользователь.
USERNAME локальная Имя текущего пользователя.
USERPROFILE локальная Путь к профилю текущего пользователя.
WINDIR системная Каталог, в котором установлена Windows.

Работа с переменными[править | править исходный текст]

Чтобы получить доступ к значению переменной, необходимо поставить знак % перед её названием и после него, например:

echo %PROCESSOR_ARCHITECTURE%

Чтобы установить значение переменной:

SET TEMP=C:\TEMP

Кроме того, с переменными среды можно работать, нажав кнопку «Переменные среды» на вкладке «Дополнительно» в диалоговом окне «Свойства системы» (контекстное меню значка «Мой компьютер» → пункт «Свойства»).

Также необходимо помнить, что, в отличие от UNIX-систем, в DOS и в стандартной командной строке Windows переменные среды не наследуются запускаемыми процессами, а используются совместно. Это позволяет, например, возвращать через них результаты работы программ, но, с другой стороны, создаёт возможность порчи или переполнения. Особенно актуально переполнение для переменной PATH, поскольку она часто дополняется при работе различных скриптов. При возникновении такого переполнения достаточно просто перезапустить интерпретатор командной строки. Интерпретаторы, портированные из UNIX-систем (например, Z-shell), такой проблеме не подвержены.

Получить значение переменной в программном коде можно с помощью метода ExpandEnvironmentStrings COM-объекта WScript.Shell:

WScriptShell = ObjCreate("WScript.Shell")
UserName = WScriptShell.ExpandEnvironmentStrings("%USERNAME%")

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

Значения переменных среды LOGONSERVER, CLIENTNAME, SESSIONNAME, APPDATA, HOMEDRIVE, HOMEPATH устанавливаются при открытии сеанса на основании значений в ветке реестра [HKEY_CURRENT_USER\Volatile Environment].

Трудности перевода[править | править исходный текст]

Часто встречается неправильное понимание слова «среды» в словосочетании «Переменные среды». Непонимание возникает из-за прочтения слова «среды» с неправильным ударением на первый слог, что приводит к распознаванию этого слова как формы именительного падежа множественного числа слова «среда» (окружение). Правильным является понимание слова «среды» как формы родительного падежа единственного числа слова «среда» и произношение с ударением на второй слог.

Таким образом, неправильно говорить, например, «с переменными сре́дами» ("с переменными окружениями"), а правильно — «с переменными среды́» ("с переменными окружения").