ОСВМ   мобильные ОС   Системное ПО   ОС Windows   к экономической информатике   ТПОИ  

Операционная система корпорации Microsoft Windows

Windows Script Host (WSH)

  1. Знакомство с WSH
  2. Что такое Windows Script Host?
  3. Где взять Windows Script Host?
  4. Первые шаги по программированию WSH
  5. Объектная модель WSH
  6. Объект Wscript
  7. Возможности WSH
  8. Drag-and-Drop в WSH
  9. Создание ярлыков WSH
  10. Специальные папки
  11. Работа WSH с реестром
  12. Работа WSH с файлами
  13. Автоматизация задач с помощью скриптов.
    Интересные возможности WSH
  14. Итоги
  15. Работаем с файловой системой
  16. Работаем с переменными окружения
  17. Выполнение внешних программ
  18. Работаем с реестром Windows
  19. Работаем с WMI

Знакомство с WSH

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

Что такое Windows Script Host?

Для чего же все-таки нужен WSH? WSH позволяет работать с файловой системой, реестром, сетевыми соединениями (диски, принтеры), окружением и др. С помощью wsh-скриптов можно управлять запуском программ, посылать сигналы другим процессам, удаленно администрировать систему, работать с сетевым принтером, управлять входом в систему (login-скрипты) и многое другое. Скрипты для Windows Script Host могут быть не только отдельными программами, но и встраиваться в HTML-страницы, и использоваться в Active Server Pages (ASP), JScript, VBScript или PerlScript

Где взять Windows Script Host?

Windows Script Host (WSH) встроена в Microsoft Windows 98/Me/2000. Если вы до сих пор пользуетесь Windows 95,то можете загрузить Windows Script Host с сайта Microsoft. Кстати, последняя версия имеет номер 5.6, поэтому пользователи Windows 98/Me/2000 также могут обновить свою версию с 1.0 или 2.0 до текущей, имеющей дополнительные возможности.

Первые шаги по программированию WSH

Скрипт WSH является обычным текстовым файлом с расширениями .js, vbs и подключаются с помощью ActiveXObject в JS- и VBS-скриптах (в т.ч. в HTML). Кроме этого, WSH-скрипты могут содержаться в "своих" файлах - *.wsh и *.wsf (wsh-файлы - это скрипты для старых версий WSH). Эти файлы представляют собой специальные XML-конструкции. В одном файле можно использовать все доступные скриптовые языки.

Создадим первый учебный скрипт в обычном блокноте.

Запустите блокнот. Напечатайте следующий текст:

WScript.Echo("Здравствуй, мир!");

Сохраните файл с расширением .js (вместо .txt). Пусть это будет Hello.js.
Запустите Проводник и щелкните на созданном файле.
WSHost запустит движок JScript и исполнит наш скрипт.
В результате наших действий появится сообщение "Здравствуй, мир!"

Итак, у вас получилось! Но действительные возможности WSH гораздо шире. Вы можете создавать полноценные программы, имеющие очень маленькие размеры файлов. Для примера могу посоветовать скачать две программы (Настроить вид папки 1.0 и Сохранить выделенный текст 1.0) с сайта http://winchanger.narod.ru. Эти программы полностью написаны на WSH. Обратите внимание, что даже инсталяция этих программ сделана на WSH.

Объектная модель WSH

Для того, чтобы воспользоваться всеми возможностями, которые представляет эта технология, нужно хорошенько разобраться в ее структуре. Windows Script Host состоит из 14 объектов. Самым главным объектом является объект WScript.

Рассмотрим основные объекты и их возможности

WScript
WshArguments
Получает доступ к аргументам командной строки
WshNamed
Получает доступ к именованным аргументам командной строки
WshUnnamed
Получает доступ к безымянным аргументам командной строки
WshNetwork
Работа с сетью
WshController
Для работы со скриптами удаленного управления
WshRemote
Удаленные скрипты
WshRemote Error
Информация об ошибках (для WshRemote)
WshShell
Работа с оболочкой Windows
WshShortcut
Создание ярлыков
WshSpecialfolders
Пути к специальным папкам Windows
WshURLShortcut
Создание интернет-ссылок
WshEnvironment
Доступ к коллекции переменных окружения
WshScriptExec
Работа со скриптами

Объект Wscript

Все объекты имеют свои свойства и методы. Не будем утомлять читателя перечислением всех свойств объектов. Приведем только свойства для Wscript
Свойство Описание
Arguments Возвращает указатель на список аргументов командной строки
FullName Возвращает имя исполняемого файла хоста и полный путь к нему (например, C:\Windows\wscript.exe)
Name Выводит замечательную надпись Windows Scripting Host
Path Определяет каталог и путь, содержащие wscript.exe или cscript.exe
ScriptFullName Возвращает полный путь и имя исполняемого в данный момент скрипта
ScriptName То же, что и ScriptFullName, но без пути
Version Возвращает версию установленного Windows Scripting Host
Приведем теперь пример с использованием VBScript

Листинг файла sample.vbs

' Пример работы со свойствами WScript
WScript.Echo WScript.FullName
WScript.Echo WScript.Name
WScript.Echo WScript.Path
WScript.Echo WScript.ScriptFullName
WScript.Echo WScript.ScriptName
WScript.Echo WScript.Version

Возможности WSH

Пора перейти к конкретным примерам, которые могут пробудить ваш интерес к WSH

Drag-and-Drop в WSH

Как уже говорилось выше, WSH имеет богатые возможности для работы с файлами, реестром и так далее. Кроме того, WSH поддерживает Drag'n'Drop. С помощью объекта WScript.Arguments в своем скрипте вы получаете имена файлов, с которыми вам надо работать. Сохраните файл dragndrop.vbs (листинг ниже) на диске, откройте Проводник и теперь просто перетащите любые файлы на ваш скрипт, который покажет их имена (пути к ним).

Листинг файла dragndrop.vbs

' Пример Drag'n'Drop
Set objArgs = WScript.Arguments
For I = 0 to objArgs.Count - 1
   WScript.Echo objArgs(I)
Next

Создание ярлыков WSH

Также просто создавать ярлыки. Рассмотрим пример создания ярлыка к калькулятору и поместим его в Автозагрузку.

Листинг файла createshortcut.vbs

 ' Этот пример показывает, как создавать ярлык к программе
 ' и копировать его в заданную папку
 
 L_Welcome_MsgBox_Message_Text   = _
 "Этот скрипт создаст ярлык к калькулятору и поместит его в Автозагрузку"
 L_Welcome_MsgBox_Title_Text = "Для журнала Программист"

 Call Welcome()
 
  ' Создаем ярлык
 
 Dim WSHShell
 Set WSHShell = WScript.CreateObject("WScript.Shell")
 
 Dim MyShortcut, MyDesktop, StartupPath
 
 ' Узнаем путь к специальной папке Автозагрузка
 StartupPath = WSHShell.SpecialFolders("Startup")
 
 ' Создаем ярлык для Автозагрузки
 Set MyShortcut = WSHShell.CreateShortcut(StartupPath & _
 "\Ярлык к калькулятору.lnk")
 
 ' Устанавливаем свойства для ярлыка
 MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings("%windir%\calc.exe")
 MyShortcut.WorkingDirectory = WSHShell.ExpandEnvironmentStrings("%windir%")
 MyShortcut.WindowStyle = 4
 MyShortcut.IconLocation = _
 WSHShell.ExpandEnvironmentStrings("%windir%\calc.exe, 0")
 MyShortcut.Save
 
 WScript.Echo "Ярлык к калькулятору создан и помещен в Автозагрузку"
 
 Sub Welcome()
     Dim intDoIt
 
     intDoIt =  MsgBox(L_Welcome_MsgBox_Message_Text,    _
                       vbOKCancel + vbInformation,       _
                       L_Welcome_MsgBox_Title_Text )
     If intDoIt = vbCancel Then
     WScript.Quit
     End If
 End Sub

Специальные папки

Здесь необходимо сказать несколько слов о специальных папках. В предыдущем примере мы использовали одну такую папку Автозагрузка. Но дело в том, что в английской версии Windows аналогичная папка носит имя Startup, и если вы укажете точный путь вроде C:\WINDOWS\Главное меню\Программы\Автозагрузка, то это сработает в русской версии Windows и нигде больше. Чтобы избежать этих проблем Microsoft создала список специалных папок.Чтобы получить доступ к какой-либо специальной папке можно воспользоваться свойством SpecialFolders объекта WshShell.

Листинг файла specfol.js

// Десктоп текущего пользователя
var WshShell = WScript.CreateObject("WScript.Shell");
strDesktop = WshShell.SpecialFolders("Desktop");
WScript.Echo( strDesktop);
// Десктоп общий для всех пользователей
strDesktop = WshShell.SpecialFolders("AllUsersDesktop");
WScript.Echo( strDesktop);
//Автозагрузка
strDesktop = WshShell.SpecialFolders("Startup");
WScript.Echo( strDesktop);
//Главное меню
strDesktop = WshShell.SpecialFolders("StartMenu");
WScript.Echo( strDesktop);

Работа WSH с реестром

Еще больше возможностей для реализации ваших фантазий предоставляет работа с реестром. Для этого используется объект Wscript.Shell с его методами RegRead, RegWrite, RegDelete.

Приведу пример создания записи в реестре, позволяющий менять заголовок в Internet Explorer

Листинг файла ie_title.vbs

' меняем заголовок у Internet Explorer

Dim WshShell, bKey
Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Main\Window Title", "Я читаю журнал Программист", "REG_SZ"

WScript.Echo "Запустите браузер и посмотрите на заголовок!"

' чтобы удалить созданную строку,
' уберите комментарий со следующий строки
'WshShell.RegDelete "HKCU\Software\Microsoft\Internet Explorer\Main\Window Title"

Запуск других приложений

Объект WshShell позволяет запускать другие приложения. В следующем примере мы запускаем две копии Блокнота - новый экземпляр и с содержимым нашего скрипта

Set WshShell = WScript.CreateObject("WScript.Shell")
' Запускаем новый экземпляр Блокнота
WshShell.Run "%windir%\notepad"
' Открываем наш скрипт в Блокноте
WshShell.Run "%windir%\notepad " & WScript.ScriptFullName

Работа WSH с файлами

Также легко можно копировать, переносить и удалять файлы и папки. Не представляет сложности и работа с просмотром содержимого файла и его редактирования. Освоив данные возможности, вы получаете возможность работать с файлами autoexec.bat и config.sys, проверять значения параметров в win.ini, вести логи работы пользователей

Для этого надо инициализировать объект файловой системы FSO, а затем воспользоваться одним из его методов для открытия файла:

Листинг для файла open.vbs

' Только для примера!
   Const ForReading = 1, ForWriting = 2, ForAppending = 8
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.OpenTextFile("c:\autoexec.bat", ForAppending, True)
   f.Write "Hello world!"
   f.Close

Итак, OpenTextFile открывает файл, если его нет, то создается новый файл. Из параметров, передаваемых методу, обязательным является только первый - имя файла. Остальные параметры можно не указывать. Вторым параметром устанавливается режим открытия файла. Возможные значения следующие:

Третья переменная может принимать значение true или false. Она показывает, создавать ли новый файл, если его до этого не существовало. Если значение равно true, то новый файл будет создан.

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

Windows Script Host   ОСВМ   мобильные ОС   Системное ПО   ОС Windows   к экономической информатике   ТПОИ  

Знаете ли Вы, как разрешается парадокс Ольберса?
(Фотометрический парадокс, парадокс Ольберса - это один из парадоксов космологии, заключающийся в том, что во Вселенной, равномерно заполненной звёздами, яркость неба (в том числе ночного) должна быть примерно равна яркости солнечного диска. Это должно иметь место потому, что по любому направлению неба луч зрения рано или поздно упрется в поверхность звезды.
Иными словами парадос Ольберса заключается в том, что если Вселенная бесконечна, то черного неба мы не увидим, так как излучение дальних звезд будет суммироваться с излучением ближних, и небо должно иметь среднюю температуру фотосфер звезд. При поглощении света межзвездным веществом, оно будет разогреваться до температуры звездных фотосфер и излучать также ярко, как звезды. Однако в дело вступает явление "усталости света", открытое Эдвином Хабблом, который показал, что чем дальше от нас расположена галактика, тем больше становится красным свет ее излучения, то есть фотоны как бы "устают", отдают свою энергию межзвездной среде. На очень больших расстояниях галактики видны только в радиодиапазоне, так как их свет вовсе потерял энергию идя через бескрайние просторы Вселенной. Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution