Объект WScript.Shell свойство Environment — Переменные окружения Windows

Объект WScript.Shell свойство Environment — Переменные окружения Windows Объектная модель Windows Script Host

Всем доброго дня, с вами автор блога scriptcoding.ru. Сегодня мы рассмотрим работу с переменными окружения Windows, а именно: теоретические основы и программный код для написания сценариев.

Переменные окружения Windows – теоретические основы

Переменные среды – Это по своей природе простые текстовые строки, которые позволяют хранить системную или пользовательскую информацию. Оны нужны, что бы быстро получить доступ к нужному ресурсу в операционной системе windows или системному значению. Все среды разделяют на два типа:

  • Системные – Данный тип создается автоматически операционной системой, они доступны для всех пользователей. Информация хранится в реестре, в большинстве случаев, что бы изменения вступили в силу, нужно произвести перезапуск операционной системы.
  • Пользовательские – Данный тип создается конкретным пользователей, поэтому информация доступна в большинстве случаев только для того пользователя, которые ее записал. В отличии от системных сред, пользовательские переменные окружения ОС Windows вступают сразу в силу, однако, нужно перезапустить те приложения, которые будут их использовать.
переменные среды системы windows

Доступ к средам в Windows XP осуществляется через значок «мой компьютер«: нажимаем правой кнопкой мыши по значку и из контекстного меню выбираем пункт "Свойства», далее переходим на вкладку «Дополнительно» и там нажимаем на кнопку «переменные_среды«. Частично, работу с переменными окружения Windows я рассмотрел в статье «Урок 4 по CMD — переменные окружения«.

Переменные среды Windows – практическая часть

Переменные окружения системы Windows

Хорошо, теперь давайте перейдем непосредственно к основной части статьи. Мы рассмотрим объект WScript.Shell, его свойство Environment позволяет работать с переменными окружения Windows:

Environment([strType]) – По умолчанию, данное свойство предоставляет доступ ко всем переменным окружения Windows типа System, но можно задать и другой тип, их всего четыре:

  • "System" – системные переменные_среды, создаются самой операционной системой Windows.
  • "User" – переменные_среды пользователя.
  • "Volatile" – временные_переменные.
  • "Process" – переменные_среды текущего командного окна.

И так, переменная среда Windows, это переменная, которая хранится в самой системе, она может быть временной, системной или, может быть создана пользователем. Так, благодаря переменным окружения Windows мы можем через меню Пуск/Выполнить запускать командную строку или калькулятор (все то, что лежит в системных каталогах) не вводя полного пути. Также, Windows переменные окружения хранят информацию о процессоре, профиле пользователя и многое другое.

Давайте напишем простой сценарий на языке vbscript для лучшего понимания ситуации:

'*********************************************' wscript_shell_environment' Переменные среды Windows' environment.vbs'**********************************************OptionExplicit dim WshShell, indexdim WshEnvirSys, WshEnvirUsr, WshEnvirVol, WshEnvirProcdim s, u, v, ps = ""v = ""u = ""p = "" ' формируем ссылку на объектset WshShell = WScript.CreateObject("WScript.Shell"' тип SYSTEMset WshEnvirSys = WshShell.Environment' тип USERset WshEnvirUsr = WshShell.Environment("USER")' тип VOLATILEset WshEnvirVol = WshShell.Environment("VOLATILE")' тип PROCESSset WshEnvirProc = WshShell.Environment("PROCESS"ForEach index In WshEnvirSyss = s & index & vbCrLfNext ForEach index In WshEnvirUsru = u & index & vbCrLfNext ForEach index In WshEnvirVolv = v & index & vbCrLfNext ForEach index In WshEnvirProcp = p & index & vbCrLfNext MsgBox "Системные:" & vbCrLf & vbCrLf& sMsgBox "Пользовательские:" & vbCrLf & vbCrLf & uMsgBox "Временные:" & vbCrLf & vbCrLf & vMsgBox "Текущий процесс:" & vbCrLf & vbCrLf & p

Видим, что WshShell хранит ссылку на объект WScript.Shell, WshEnvirSys хранит ссылку на коллекцию переменных окружения Windows типа SYSTEM, WshEnvirUsr – USER, WshEnvirVol – VOLATILE и WshEnvirProc – PROCESS. Видим, что при создании ссылки на объект или коллекцию в языке vbscript используется ключевое слово set. Далее мы используем цикл For Each для перебора элементов коллекции и формирования списка. Списки выводятся в конце сценария с помощью функции MsgBox.

А вот аналогичный пример, но уже на языке jscript:

//*********************************************// wscript_shell_environment// Переменные среды Windows// environment.js//********************************************** var WshShell2;var WshEnvirSys, WshEnvirUsr1, WshEnvirVol, WshEnvirProc;var s="", u="", v="", p=""; // формируем ссылку на объектWshShell2 = WScript.CreateObject("WScript.Shell") // тип SYSTEMWshEnvirSys =new Enumerator(WshShell2.Environment("SYSTEM"));// тип USERWshEnvirUsr1 =new Enumerator(WshShell2.Environment("USER"));// тип VOLATILEWshEnvirVol =new Enumerator(WshShell2.Environment("VOLATILE"));// тип PROCESSWshEnvirProc =new Enumerator(WshShell2.Environment("PROCESS")); for(;!WshEnvirSys.atEnd(); WshEnvirSys.moveNext())s+=WshEnvirSys.item()+"n";for(;!WshEnvirUsr1.atEnd(); WshEnvirUsr1.moveNext())u+=WshEnvirUsr1.item()+"n";for(;!WshEnvirVol.atEnd(); WshEnvirVol.moveNext())v+=WshEnvirVol.item()+"n";for(;!WshEnvirProc.atEnd(); WshEnvirProc.moveNext())p+=WshEnvirProc.item()+"n"; WScript.Echo("Системные:nn"+ s);WScript.Echo("Пользовательские:nn"+ u);WScript.Echo("Временные:nn"+ v);WScript.Echo("Текущий процесс:nn"+ p);

Хорошо, у коллекции wscript shell environment есть свойство length, которое хранит в себе число всех элементов, метод Remove(strName) позволяет удалить переменную окружения ОС Windows, которая задана строковым параметром strName.

Хорошо, давайте рассмотрим следующий пример на языке vbscript:

'*********************************************' wscript_shell_environment' Переменные окружения ОС Windows' environment_1.vbs'**********************************************OptionExplicit dim WshShell1, index, udim WshEnvirUsr, WshEnvirProc ' формируем ссылку на объектset WshShell1 = WScript.CreateObject("WScript.Shell")set WshEnvirUsr = WshShell1.Environment("USER") u = "Количество: " & vbTab & WshEnvirUsr.Length & vbCrLf & vbCrLf ForEach index In WshEnvirUsru = u & index & vbCrLfNext MsgBox u '************************************************************************' Создаем переменную_окружения с именем my_usr_var' и значением "простой текст"'************************************************************************ WshEnvirUsr("my_usr_var") = "простой текст"u = "Количество: " & vbTab & WshEnvirUsr.Length & vbCrLf & vbCrLf ForEach index In WshEnvirUsru = u & index & vbCrLfNext MsgBox u '***********************************' Удаляем my_usr_var'***********************************WshEnvirUsr.Remove("my_usr_var") u = "Количество: " & vbTab & WshEnvirUsr.Length & vbCrLf & vbCrLf ForEach index In WshEnvirUsru = u & index & vbCrLfNext MsgBox u

В этом примере по wscript shell environment свойству мы создали собственную переменную среду my_usr_var, записав в нее текстовую строку. Перед этим, мы вывели общее количество всех сред.

Скачать архив с примерами

А вот аналогичный пример на языке jscript:

//*********************************************// wscript_shell_environment// Переменные окружения ОС Windows// environment_1.js//********************************************** var WshShell1, uvar WshEnvirUsr2, WshEnvirProc // формируем ссылку на объектWshShell1 = WScript.CreateObject("WScript.Shell"); WshEnvirUsr2 = WshShell1.Environment("USER");WshEnum =new Enumerator (WshEnvirUsr2); u ="Количество:t"+ WshEnvirUsr2.Length+"nn"; for(;!WshEnum.atEnd(); WshEnum.moveNext())u+=WshEnum.item()+"n"; WScript.Echo(u); //************************************************************************// Создаем переменную_окружения с именем my_usr_var// и значением "простой текст"//************************************************************************ WshEnvirUsr2("my_usr_var_1")="простой текст";WshEnum =new Enumerator (WshEnvirUsr2);u ="Количество:t"+ WshEnvirUsr2.Length+"nn"; for(;!WshEnum.atEnd(); WshEnum.moveNext())u+=WshEnum.item()+"n"; WScript.Echo(u); //***********************************// Удаляем my_usr_var//***********************************WshEnvirUsr2.Remove("my_usr_var_1");WshEnum =new Enumerator (WshEnvirUsr2);u ="Количество:t"+ WshEnvirUsr2.Length+"nn"; for(;!WshEnum.atEnd(); WshEnum.moveNext())u+=WshEnum.item()+"n"; WScript.Echo(u);

И так, в этой статье мы рассмотрели работу со свойством Environment класса WScript.Shell. Подписывайтесь на обновление блога, что бы быть в курсе новых материалов.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий