Операции с переменными окружения

WSH скрипты. Примеры.
Операции с переменными окружения.

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


Название, тип
 

Описание
 
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
Тип -локальная
Указывает путь к текущему каталогу.
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_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.
USERDOMAIN
Тип - локальная
Имя домена, которому принадлежит текущий пользователь.
USERNAME
Тип - локальная
Имя текущего пользователя.
USERPROFILE
Тип - локальная
Путь к профилю текущего пользователя.
WINDIR
Тип - системная
Каталог, в котором установлена Windows.


И еще ряд замечаний:
  • В отличие от UNIX систем, где процесс получает копию переменных окружения, в WINDOWS системах процесс получает доступ к самим переменным окружения. Т. е. изменения, сделанные одним процессом, будут доступны другим процессам.
  • Длина переменных окружения зависит от того, чем они создаются. Так, при создании переменных окружения средствами WSH их длина не должна превышать 2048 байт (включая завершающий NULL-символ).


Рассмотрим средства Windows Script Host (WSH) для работы с переменными окружения (переменными среды).
Свойство Environment объекта WScript.Shell позволяет работать с переменными окружения Windows.
Доступны следующие операции: просмотр значений, добавить переменную, изменить значение и удалить переменную окружения. А больше и не придумать)).
Свойство Environment([strType])
где strType - тип переменных окружения.
Возможные значения:



Тип
 

Описание
 
System Системные переменные окружения
User Пользовательские переменные окружения
Volatile Временные переменные окружения
Process Переменные окружения текущего командного окна


С помощью свойства Environment объекта WshShell создается объект WshEnvironment. Он позволяет получить доступ к коллекции, содержащей переменные среды заданного типа.
Объект WshEnvironment обладает следующими свойствами и методом:


Свойства
 

Описание
 
Item Получает или устанавливает значение указанной переменной окружения
Count Количество перечисленных элементов
Length Количество перечисленных элементов (JScript)

Метод
 

Описание
 
Remove Удаляет указанную переменную окружения


Метод ExpandEnvironmentStrings объекта WshShell.
Возвращает значение переменной среды текущего командного окна (Process), заданной строкой (имя переменной должно быть окружено знаками "%", не чувствительно к регистру).

На этом краткое теоретическое вступление закончим и перейдем к практическим вопросам.

Получить значение переменой окружения текущего командного окна.



var wshShell = WScript.CreateObject("WScript.Shell"); winDir = wshShell.ExpandEnvironmentStrings("%WinDir%"); WScript.Echo (winDir);


В следующих примерах будет использовано свойства Environment объекта WshShell так как оно позволяет получить доступ ко всем переменным окружения.

Вывести все значения переменных окружения.



var wshEnviromentUser, wshEnum; var wshShell = WScript.CreateObject("WScript.Shell"); var strRez=''; wshEnviromentUser = wshShell.Environment("USER"); wshEnum = new Enumerator (wshEnviromentUser); for (; !wshEnum.atEnd(); wshEnum.moveNext()) strRez+=wshEnum.item()+"\n"; WScript.Echo (strRez);


Если в предыдущем примере вместо USER поставить например, SYSTEM, то будут выведены все системные переменные окружения и их значения.

Добавить переменную и ее значения в список переменных окружения.



var wshEnviromentUser; var wshShell = WScript.CreateObject("WScript.Shell"); wshEnviromentUser = wshShell.Environment("USER"); wshEnviromentUser("my_super_var") = "NEW";


В списке пользовательских переменных окружения появится переменная my_super_var со значением "NEW". Вы можете убедиться в этом, запустив пример вывода всех значений пользовательских переменных окружения.

Удалить переменную из списка переменных окружения.



var wshEnviromentUser; var wshShell = WScript.CreateObject("WScript.Shell"); wshEnviromentUser = wshShell.Environment("USER"); wshEnviromentUser.Remove("my_super_var");


Здесь использовался метод Remove(strName) для удаления переменной окружения.

Изменить переменную из списка переменных окружения.



Для выполнения этой операции необходимо произвести те же действия, что и при создании новой переменной окружения.

var wshEnviromentUser; var wshShell = WScript.CreateObject("WScript.Shell"); wshEnviromentUser = wshShell.Environment("USER"); wshEnviromentUser("my_super_var") = "OLD";


Что бы убедиться в том, что значение изменилось, можно запустить пример вывода всех значений пользовательских переменных окружения.

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



Если говорить о операциях с переменными окружения вне связи с WSH то следовало бы упомянуть место, где эти переменные живут.

[HKEY_CURRENT_USER\Environment] [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ Session Manager\Environment]


Для изменения переменных окружения соответственно можно использовать команду Cmd Reg

REG ADD "HKEY_CURRENT_USER\Environment" /v my_var /t REG_EXPAND_SZ /d "Best"


или, что гораздо более правильно, команду SetX.


Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).






  TopList Rambler Top100 own counter Valid XHTML 1.0 Strict Valid CSS Rambler Top100

Фитотерапия Молитвы Водолечение Юмор Форум Кладовка link О авторе

Фитотерапия Молитвы Водолечение Юмор Форум Кладовка Ссылки О авторе Отправить сообщение Карта сайта Поиск по сайту Главная страница

Copyright © 1999 - 2017  Бронислав Краснер