SetX — создание или изменение переменных среды Windows
    Команда SETX используется для создания новых и изменения существующих переменных среды окружения в командной строке Windows. Переменные окружения, это переменные, принимаемые значения которых характеризуют программную среду, в которой выполняется текущая программа — пути системных файлов, сведения об аппаратных средствах, каталоги пользователей и т.п. Значения переменных среды формируются в процессе загрузки Windows, регистрации пользователя в системе, при выполнении отдельных программ или с помощью команды SET . Команда SetX, является более мощным средством администрирования Windows, позволяющим изменять системные или пользовательские переменные не только на локальном компьютере, но и на удаленном. Переменные можно задавать с помощью аргументов, параметров реестра или ввода из файла. В отличие от команды SET, изменения переменных окружения, сделанные командой SetX, записываются в реестр и действуют не только в данном сеансе командной строки, но и в любом другом.
Первоначально, утилита SetX.exe входила в состав Windows 2000 Resource Kit в качестве дополнительного средства системного администрирования, но начиная с Windows Vista — входит в стандартный пакет поставки системы.
Используются три варианта синтаксиса команды SetX :
SETX [/S система [/U [домен\]пользователь [/P [пароль]]]] var значение [/M]
SETX [/S система [/U [домен\]пользователь [/P [пароль]]]] var /K путь [/M]
SETX [/S система [/U [домен\]пользователь [/P [пароль]]]] /F файл [/M] | /X> [/D разделители]
Параметры командной строки:
/S система — Имя или IP-адрес удаленного компьютера. Если не указан, то команда выполняется по отношению к локальному компьютеру.
/U домен\]пользователь — Пользовательский контекст, в котором должна выполняться эта команда.
/P пароль — Пароль для этого пользовательского контекста.
var — Задаваемая переменная среды.
значение — Значение, назначаемое переменной среды.
/K путь — Задание переменной по информации, cодержащейся в параметре реестра. Путь должен задаваться в формате куст\раздел\. \параметр . Например, HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Control\timeZoneInformation\StandardName.
/F файл — Имя текстового файла, который следует использовать.
/A x,y — Задание абсолютных координат файла (строка X, элемент Y) как параметров поиска в файле.
/R x,y строка — Задание координат относительно значения «строка» как параметров поиска.
/M — Указание создания переменной среды на системном уровне (HKEY_LOCAL_MACHINE). По умолчанию переменная среды создается в разделе HKEY_CURRENT_USER на уровне пользователя.
/X — Отображение содержимого файла с координатами x,y.
/D разделители — Указание дополнительных разделителей, таких как «,» или «\». Встроенные разделители: символы пробела, табуляции, возврата каретки и перевода строки. Дополнительным разделителем может быть любой знак ASCII. Максимальное число разделителей, включая встроенные, равняется 15. Вывод справки по использованию.
1) SETX записывает переменные в главную среду в реестре.
2) На локальном компьютере переменные, созданные или измененные данным средством, будут доступны в будущем окне командной строки, но не в текущем окне CMD.exe.
3) На удаленном компьютере переменные, созданные или измененные данным средством, будут доступны со следующего сеанса входа.
4) Допустимые типы параметров реестра: REG_DWORD, REG_EXPAND_SZ, REG_SZ, REG_MULTI_SZ.
5) Поддерживаемые кусты: HKEY_LOCAL_MACHINE (HKLM), HKEY_CURRENT_USER (HKCU).
6) Разделители определяются с учетом регистра.
7) Значения типа REG_DWORD извлекаются из реестра в десятичном формате.
Значения переменных окружения ( Environment variables ) записываются в реестр:
Пользовательские переменные — в раздел : HKEY_CURRENT_USER\Environment
Системные переменные — в раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
Если значения каких либо переменных изменены в данной сессии командной строки Windows, то изменения вступят в силу только в новом сеансе, после перезапуска CMD ( или PowerShell ). Для изменения системных переменных ( ключ /M ) требуются права администратора ( «Запуск от имени администратора » в Windows 7).
Пользовательские переменные запоминаются в профиле и действительны, для перемещаемого профиля, на любом компьютере домена.
Если одно и то же имя переменной имеется в среде пользователя и в среде системы, то значение пользовательской переменной имеет более высокий приоритет.
Для редактирования переменных можно использовать панель управления — Панель управления — Система — Дополнительно — Переменные среды ( Control Panel — System — Advanced — Environment Variables )
Для удаления переменных среды можно воспользоваться Панелью управления, удалением ключей с переменными среды редактором реестра или консольной утилитой REG
REG delete HKCU\Environment /V MyVar — удалить пользовательскую переменную MyVar
Присвоение переменной пустого значения командой Setx не приводит к удалению ее имени из реестра, что может стать причиной проблем с выполнением некоторых программ. Если например, имеется пользовательская переменная с пустым значением, то по команде SET она не отображается, и при наличии системной переменной с таким же именем, ее значение станет недоступным из-за более высокого приоритета пользовательской переменной. Поэтому, во избежание конфликтов желательно не оставлять в реестре мусор из переменных с неприсвоенными значениями.
Примеры использования Setx:
SETX MACHINE COMPAQ — создать на локальном компьютере переменную среды пользователя с именем MACHINE, принимающую значение COMPAQ. Для просмотра значений переменных можно воспользоваться командой echo :
echo %MACHINE% — отобразить значение переменной MACHINE
Можно также использовать команду SET в цепочке с командой поиска текста FIND:
set | Find /i «machine»
setx.exe MACHINE «Asustek Computer» /M — создать на локальном компьютере системную переменную MACHINE, принимающую значение Asustek Computer . Если значение переменной содержит пробелы, то оно заключается в двойные кавычки.
Setx MYPATH «» — сбросить значение переменной окружения MYPATH ( сделать пустым )
SETX MYPATH «%PATH%» — создать на локальном компьютере пользрвательскую переменную окружения с именем MYPATH , принимающую текущее значение переменной PATH – пути поиска исполняемых файлов, сформированные на момент выполнения команды, например, Path=С:\Program Files\Far;С:\Program Files\NVIDIA Corporation\PhysX\Common;С:\WINDOWS\system32;С:\WINDOWS;С:\WINDOWS\System32\Wbem; . SETX MYPATH
— в качестве значения переменной будет записана строка, в которой символы
будут заменены на символы % , т.е в качестве значения переменной MYPATH будет записана строка %PATH%
SETX /S Server /U Mydomain\Admin /P AdmPass MYPATH «%PATH%» — установить на удаленном компьютере Server значение переменной окружения MYPATH равное текущему значению переменной PATH локального компьютера. Для подключения к удаленному компьютеру используется имя пользователя Admin в домене Mydomain и пароль AdmPass
SETX TZONE /K HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Control\timeZoneInformation\StandardName — установить значение среды TZONE равным содержимому ключа реестра
При выполнении команды SetX отображается извлеченное значение ключа реестра и результат записи нового значения переменной:
Извлечено значение: «@tzres.dll,-912».
Успех. Указанное значение сохранено.
setx /s 192.168.0.1 /U admin /P Admpass BUILD /K «HKLM\Software\Microsoft\Windows NT\CurrentVersion\CurrentBuildNumber» — создать на удаленном компьютере с IP-адресом 192.168.0.1 переменную BUILD , принимающую значение ключа реестра HKLM\Software\Microsoft\Windows NT\CurrentVersion\CurrentBuildNumber
SETX /F ipconfig.out /X — разбор содержимого текстового файла ipconfig.out с выводом координат каждого поля в виде x,y – (номер строки, номер колонки) . Нумерация строк и колонок начинается с 0 .
Для того, чтобы получить наглядное представление об обработке содержимого текстового файла, попробуйте создать текстовый файл следующего содержания:
a1 a2 a3 a4 a5
b1 b2 b3 b4 b5
c1 c2 c3 c4 c5
d1 d2 d3 d4 d5
Результат обработки этого содержимого командой SetX :
(0,0 a1)(0,1 a2)(0,2 a3)(0,3 a4)(0,4 a5)
(1,0 b1)(1,1 b2)(1,2 b3)(1,3 b4)(1,4 b5)
(2,0 c1)(2,1 c2)(2,2 c3)(2,3 c4)(2,4 c5)
(3,0 d1)(3,1 d2)(3,2 d3)(3,3 d4)(3,4 d5)
Таким образом, элемент (0,0 a1) — это координаты 0,0 , которым соответствует значение a1
Переменные окружения Windows
Переменные среды хранят информацию о среде операционной системы. Эта информация включает такие сведения, как путь к операционной системе, количество процессоров, используемых операционной системой, и расположение временных папок.
Переменные среды хранят данные, которые используются операционной системой и другими программами. Например, переменная среды WINDIR содержит местоположение установочного каталога Windows. Программы могут запрашивать значение этой переменной, чтобы определить, где находятся файлы операционной системы Windows.
Полный список переменных среды Windows
Переменная | Тип | Описание |
---|---|---|
%ALLUSERSPROFILE% | Локальная (пользовательская) | Возвращает расположение файлов профилей общих для всех пользователей. |
%APPDATA% | Локальная | Возвращает расположение, где приложение по умолчанию хранят данные. |
%CD% | Локальная | Возвращает строку с текущей папкой. |
%CMDCMDLINE% | Локальная | Возвращает точную строку команды, запустившую текущий Cmd.exe. |
%CMDEXTVERSION% | Системная (на уровне всей машины) | Возвращает номер версии текущего Command Processor Extensions. |
%COMPUTERNAME% | Системная | Возвращает имя компьютера. |
%COMSPEC% | Системная | Возвращает точный путь до исполнимого файла командной оболочки. |
%DATE% | Системная | Возвращает текущую дату. Использует такой же формат, как и команда date /t. Генерируется в Cmd.exe. |
%ERRORLEVEL% | Системная | Возвращает код ошибки самой последней исполненной команды. Ненулевое значение говорит об ошибке. |
%HOMEDRIVE% | Системная | Возвращает, какая буква диска локальной рабочей станции подключена к домашнему каталогу пользователя. Устанавливается в зависимости от значения домашнего каталога. Домашний каталог пользователя указан в Local Users and Groups («Локальные пользователи и группы»). |
%HOMEPATH% | Системная | Возвращает полный путь домашней директории пользователя. Устанавливается на основе значения домашней директории. Домашняя пользовательская директория указана в Local Users and Groups. |
%HOMESHARE% | Системная | Возвращает сетевой путь к общему домашнему каталогу пользователя. Устанавливается в зависимости от значения домашнего каталога. Домашний каталог пользователя указан в разделе «Локальные пользователи и группы». |
%LOGONSEVER% | Локальная | Возвращает имя контроллера домена, который проверил текущий сеанс входа в систему. |
%NUMBER_OF_PROCESSORS% | Системная | Указывает количество процессоров (ядер), установленных в компьютер. |
%OS% | Системная | Возвращает имя операционной системы. Все ОС после Windows 2000 показывают имя операционной системы как Windows_NT. |
%PATH% | Системная | Содержит список папок, в которых ищутся исполнимые файлы. |
%PATHEXT% | Системная | Возвращает список расширений, которые операционная система расценивается как исполнимые. |
%PROCESSOR_ARCHITECTURE% | Системная | Возвращает архитектуру чипа процессора. Примеры значений: x86, IA64, AMD64. |
%PROCESSOR_IDENTFIER% | Системная | Возвращает описание процессора. |
%PROCESSOR_LEVEL% | Системная | Возвращает номер модели процессора, установленного в компьютер. |
%PROCESSOR_REVISION% | Системная | Возвращает номер ревизии процессора. |
%PROMPT% | Локальная | Возвращает настройки приглашения командной строки для текущего интерпретатора. Генерируется в Cmd.exe. |
%RANDOM% | Системная | Возвращает случайное целое число между 0 и 32767. Генерируется в Cmd.exe. |
%SYSTEMDRIVE% | Системная | Возвращает диск, содержащий корневую директорию Windows (то есть это корень системы). |
%SYSTEMROOT% | Системная | Возвращает расположение корневой директории Windows. |
%TEMP% и %TMP% | Системная и пользовательская | Возвращает временные каталоги по умолчанию, которые используются приложениями, доступными для пользователей, вошедших в систему. Некоторые приложения требуют TEMP, а другие требуют TMP. |
%TIME% | Системная | Возвращает текущее время. Использует такой же формат, как и команда time /t. Генерируется в Cmd.exe. |
%USERDOMAIN% | Локальная | Возвращает имя домена, содержащего аккаунт пользователя. |
%USERNAME% | Локальная | Возвращает имя пользователя, который в данный момент выполнил вход в систему. |
%USERPROFILE% | Локальная | Возвращает расположение профиля текущего пользователя. |
%WINDIR% | Системная | Возвращает расположение директории операционной системы. |
%CommonProgramFiles% | Системная | Путь до папки с совместными файлами программ. |
%ProgramFiles(x86)% | Системная | Папка с файлами 32-битных программ. |
%CommonProgramW6432% | Системная | Путь до папки с совместными файлами программ. |
%USERDOMAIN_ROAMINGPROFILE% | Локальная | Домен профиля. |
%ProgramData% | Системная | Папка, в которой программы хранят данные. |
%WT_PROFILE_ID% | Локальная | Идентификатор профиля. |
%DriverData% | Системная | Папка хранения данных некоторых служб. |
%ProgramW6432% | Системная | Каталог с файлами программ. |
%PSModulePath% | Системная и пользовательская | Папки с модулями PowerShell. |
%WSLENV% | ||
%POWERSHELL_DISTRIBUTION_CHANNEL% | Системная и пользовательская | Канал распространения PowerShell. |
%LOCALAPPDATA% | Локальная | Папка хранения данных программ, индивидуальная для каждого пользователя. |
%ProgramFiles% | Системная | Папка с файлами программ. |
%JAVA_HOME% | Системная | Путь в который установлена виртуальная машина Java. |
%OneDrive% | Локальная | Путь до папки для хранения данных OneDrive. |
%WT_SESSION% | Локальная | Идентификатор сессии. |
%LOGONSERVER% | Локальная | Сервер, где был выполнен вход. |
%PUBLIC% | Системная | Папка для публичного доступа. |
%PROCESSOR_IDENTIFIER% | Системная | Описание процессора. |
%CommonProgramFiles(x86)% | Системная | Путь для общих файлов 32-битных программ. |
Как использовать переменные окружения
Переменные окружения, содержащие путь до каталога, можно вводить в адресную строку проводника и любого менеджера файлов.
Узнать, установить и изменить значение переменной окружения можно в командной строке и в программах.
Переменные окружения в графическом интерфейсе
Чтобы увидеть и отредактировать переменные окружения в настройках, в строку поиска на панели задач введите «Изменение системных переменных среды» и кликните Enter.
В открывшемся окне «Свойства системы» нажмите на кнопку «Переменные среды».
Вы увидите переменные среды пользователя (верхняя половина открывшегося окна) и системные переменные (нижняя половина).
Здесь вы можете создать новые переменные, а также изменить или удалить существующие.
Сделанные здесь изменения являются постоянными и сохраняться после перезагрузки.