Введение
Несколько лет назад компания Microsoft предложила в качестве инструмента разработки и выполнения специальных сценариев для операционной системы Windows сервер сценариев Windows Script Host (WSH), различные версии которого входят в стандартную поставку Windows 98/2000/ХР (до этого на уровне операционной системы поддерживались только пришедшие из MS-DOS командные файлы). Сценарии WSH могут создаваться с помощью специализированных языков (например, Microsoft Visual Basic Script Edition (VBScript) или Microsoft JScript) и использовать любые объекты ActiveX, зарегистрированные в системе, что и определяет чрезвычайно мощные возможности таких сценариев.
Собственная объектная модель WSH позволяет из сценариев работать с файловой системой, системным реестром, специальными папками и ярлыками Windows, ресурсами локальной сети, а также запускать процессы и контролировать ход их выполнения.
Еще одна важная задача, которую решают сценарии WSH, — это организация взаимодействия с разработанными Microsoft современными ActiveX- технологиями:
□ ActiveX Data Object (ADO) — доступ к базам данных разных форматов;
□ Active Directory Service Interface (ADSI) — работа со службами каталогов (Active Directory для Windows 2000, Windows Directory Service для Windows NT 4.0 и т.д.);
□ Windows Management Instrumentation (WMI) — управление операционной системой Windows.
Надо сказать, что в то время как за рубежом сценариям WSH и используемым в них ActiveX-технологиям Microsoft посвящено много серьезных и объемных книг [10, 20–28], на русском языке подобных специальных книг пока немного (переводы книг Г. Борна [3] и Т. Экка [18], а также предыдущая книга автора [8]). В последнее время, правда, появилось довольно много публикаций о WSH, ADSI и WMI в журналах [1, 2, 6, 7, 9–16, 29]; краткое описание WSH и примеры сценариев приводятся в некоторых книгах, посвященных Windows 2000/ХР (например, в [5] имеются примеры работы с системным реестром). Отметим также, что в последней версии WSH 5.6, которая является неотъемлемой частью Windows ХР, появились новые возможности (запуск сценариев на удаленных машинах, использование для сценариев политики ограниченного использования программ и т.д.), описания которых в русскоязычной литературе на момент написания книги автору не встречалось.
Итак, целью настоящей книги является решение следующих задач.
□ Детально описать объектные модели, использующиеся в WSH 5.6 и в технологии Windows Script Components (WSC), и дать примеры использования этих объектных моделей.
□ Привести практические примеры применения в сценариях WSH технологий ADO, ADSI и WMI, а также показать, каким образом из сценариев можно просматривать или изменять файлы в формате XML и управлять приложениями пакета Microsoft Office.
□ Обсудить проблемы безопасности, возникающие при работе с WSH, и описать способы решения этих проблем в Windows ХР.
Для кого предназначена эта книга
Книга может быть полезна пользователям, программистам и администраторам Windows, которые желают получить систематизированную информацию о мощных возможностях ActiveX-сценариев WSH 5.6, а также об использовании в сценариях смежных технологий Microsoft (WMI, ADSI, ADO, WSC).
Информация, представленная в книге, позволяет применять ее и в качестве последовательного руководства по разработке сценариев Windows различной степени сложности (от простых JScript- или VBScript-сценариев, работающих без какого-либо вывода на экран, до многозадачных WS-файлов с XML-разметкой, предоставляющих пользователю полноценный графический интерфейс), и как справочник по объектам и XML-элементам, которые используются в WSH 5.6 (в том числе и для создания СОМ-объектов по технологии WSC).
Многие сценарии, приведенные в книге, могут применяться практически без изменений для решения конкретных практических задач по администрированию Windows (особенно это относится к примерам
При изучении материала книги от читателя может потребоваться некоторое знакомство с языками JScript и VBScript (краткие справочники по этим языкам включены в приложения), а также понимание основ объектно-ориентированного программирования и СОМ-технологий.
Структура книги
В
□ использовать внешние объекты ActiveX и ресурсы локальной сети;
□ выводить информацию в стандартный выходной поток или в окно Windows;
□ считывать данные из стандартного входного потока;
□ получать доступ к специальным папкам Windows и системному реестру;
□ создавать или изменять переменные среды и ярлыки Windows;
□ запускать процессы на локальной или удаленной рабочей станции.
В
В
ВFileSystemObject
. Здесь объяснено, какие свойства и методы нужно использовать для выполнения тех или иных файловых операций, а также приведено подробное описание этих свойств и методов. Также в этой главе приведены несколько полезных сценариев, позволяющих, например, производить поиск нужных файлов с использованием регулярных выражений или перемещать файлы из одного каталога в другой с ведением журнала действий.
В
В
В
В
В
В
В
Примеры сценариев, которые приведены в книге, можно набирать вручную или загружать с прилагаемой дискеты. Структура дискеты и инструкции по ее использованию приведены в
Принятые в книге соглашения
При описании операторов, функций и методов объектов мы использовали стандартные соглашения. Названия параметров и аргументов набраны курсивом, необязательные параметры заключены в квадратные скобки [], например:
CreateObject(strProgID [,strPrefix])
Если при вызове команды может быть указан только один параметр/аргумент из нескольких возможных, то такие параметры/аргументы разделены знаком |, например:
<?job debug="true|false"?>
Благодарности
Я благодарю всех сотрудников издательства "БХВ-Петербург", в особенности Анатолия Николаевича Адаменко и Петра Анатольевича Науменко за их вклад в редактирование плана и текста книги, а также других людей, помогавших мне во время работы над книгой.
Особую признательность я хочу выразить Эдуарду Батаршину и Евгению Шикину за их ценные консультации и предложения.
Спасибо моей жене Татьяне и другим родственникам за их терпение и поддержку во всем.
Глава 1
Первое знакомство с Windows Script Host
В ранних версиях Windows стандартным средством для автоматизации однотипных повторяющихся задач служили командные (пакетные) файлы и утилиты пакета Resource Kit для соответствующей версии. Однако даже с помощью имеющегося в Windows NT/2000/XP усовершенствованного командного интерпретатора cmd.exe трудно написать какую-либо сложную программу-сценарий (script): отсутствует полноценная интерактивность, нельзя напрямую работать с рабочим столом Windows и системным реестром и т.д.
Для исправления этой ситуации компанией Microsoft был разработан сервер сценариев WSH — Windows Script Host, с помощью которого можно выполнять сценарии, написанные, в принципе, на любом языке (при условии, что для этого языка установлен соответствующий модуль (scripting engine), поддерживающий технологию
Вообще говоря, принцип работы сценариев, поддерживаемых WSH, состоит в использовании
Возможности технологии ActiveX
Напомним, что в Windows с самого начала для обеспечения обмена данными между приложениями была разработана технология
В общих словах, компонентное программное обеспечение — это способ разработки программ, при котором используются технологии создания программных модулей, подобные технологиям, применяемым для разработки аппаратных средств. Сложные элементные схемы собираются из стандартизированных микросхем, которые имеют четко определенные документированные функции. Разработчик может эффективно пользоваться такими микросхемами, не задумываясь об их внутренней структуре. В программных компонентах, написанных на каком-либо языке программирования, детали реализации используемых алгоритмов также скрыты внутри компонента (объекта), а на поверхности находятся общедоступные
В настоящее время, по заявлению Microsoft, термин OLE используется только по историческим причинам. Вместо него Microsoft с 1996 года применяет новый термин —
Технология ActiveX до последнего времени являлась ключевой в продуктах Microsoft. Наиболее полное воплощение она нашла в программах Microsoft Office, Internet Explorer, IIS (Internet Information Service). В эти продукты для управления соответствующими объектами автоматизации были встроены интерпретаторы специальных языков сценариев: VBScript (используется в Microsoft Office, Internet Explorer, IIS) и JScript (используется в Internet Explorer, IIS). Однако непосредственно в операционной системе, вне этих продуктов, выполнять сценарии, написанные на VBScript или JScript, было нельзя.
Сервер сценариев WSH является мощным инструментом, предоставляющим единый интерфейс (объектную модель) для специализированных языков (VBScript, JScript, PerlScript, REXX, TCL, Python и т.п.), которые, в свою очередь, позволяют использовать любые внешние объекты ActiveX. С помощью WSH сценарии могут быть выполнены непосредственно в операционной системе Windows, без встраивания в HTML-страницы.
Нумерация версий WSH
Скажем несколько слов относительно нумерации версий WSH. Самая первая версия WSH, входившая в качестве стандартного компонента в Windows 98, имела номер 1.0. С другой стороны, эта версия опиралась на языки сценариев JScript и VBScript версии 5.0, которые поддерживались Internet Explorer 5.0, поэтому можно к самой первой версии WSH относиться и как к WSH 5.0. Следующей версии WSH, входившей в поставку Windows 2000, был присвоен номер 2.0; в этой версии использовались языки JScript и VBScript версии 5.1. Наконец, номер последней версии WSH, являющейся неотъемлемой частью Windows ХР, компания Microsoft решила все же привязать к номеру версии языков JScript и VBScript — таким образом появился сервер сценариев WSH 5.6.
Отметим также, что даже сама аббревиатура "WSH" сначала расшифровывалась Microsoft как "Windows Scripting Host", а затем было принято название "Windows Script Host".
Несмотря на то, что WSH 5.6 является стандартной частью Windows ХР, эту версию можно также установить и использовать во всех предыдущих 32-разрядных версиях Windows 95/98/ME/NT/2000. Для этого необходимо скачать инсталляционный файл для WSH 5.6 с сервера Microsoft (http://msdn.microsoft.com/scripting); там же можно найти и документацию по WSH 5.6.
Назначение и основные свойства WSH
WSH предъявляет минимальные требования к объему оперативной памяти и является очень удобным инструментом для автоматизации повседневных задач пользователей и администраторов операционной системы Windows. Используя сценарии WSH, можно непосредственно работать с файловой системой компьютера, а также управлять работой других приложений (серверов автоматизации). При этом возможности сценариев ограничены только средствами, которые предоставляют доступные серверы автоматизации.
Перечислим только наиболее очевидные задачи, для автоматизации которых прекрасно подходят сценарии WSH.
□ Организация резервного копирования на сетевой сервер файлов с локальной машины, которые отбираются по какому-либо критерию.
□ Быстрое изменение конфигурации рабочего стола Windows в зависимости от задач, выполняемых пользователем.
□ Автоматический запуск программ Microsoft Office, создание там сложных составных документов, распечатка этих документов и закрытие приложений.
□ Управление работой приложений, не являющихся серверами автоматизации, с помощью посылки в эти приложения нажатий клавиш.
□ Подключение и отключение сетевых ресурсов (дисков и принтеров).
□ Создание сложных сценариев регистрации для пользователей.
□ Выполнение задач администрирования локальной сети (например, добавление или удаление пользователей).
Создание и запуск простейших сценариев JScript и VBScript
Простейший WSH-сценарий, написанный на языке JScript или VBScript, — это обычный текстовый файл с расширением js или vbs соответственно, создать его можно в любом текстовом редакторе, способном сохранять документы в формате "Только текст".
Специальные мощные программы, позволяющие создавать и отлаживать сценарии, описаны в
Размер сценария может изменяться от одной до тысяч строк, предельный размер ограничивается лишь максимальным размером файла в соответствующей файловой системе.
В качестве первого примера создадим JScript-сценарий, выводящий на экран диалоговое окно с надписью "Привет!" (рис. 1.1).
Рис. 1.1. Простое диалоговое окно
Для вывода такого окна достаточно с помощью, например, стандартного Блокнота Windows (notepad.exe) создать файл First.js, содержащий всего одну строку:
WScript.Echo("Привет!");
Тот же самый сценарий на языке VBScript, естественно, отличается синтаксисом и выглядит следующим образом:
WScript.Echo "Привет!"
Несмотря на то, что для работы наших сценариев достаточно всего одной строки, желательно сразу приучить себя к добавлению в начало файла информации о находящемся в нем сценарии: имя файла, используемый язык, краткое описание выполняемых действий. На языке JScript такая информация, оформленная в вице комментариев, может выглядеть следующим образом:
/*******************************************************************/
/* Имя: First.js */
/* Язык: JScript */
/* Описание: ВЫВОД на экран приветствия */
/*******************************************************************/
Рис. 1.2. Сценарий First.js
На языке VBScript то же самое выглядит следующим образом:
'*******************************************************************
' Имя: First.vbs
' Язык: VBScript
' Описание: Вывод на экран приветствия
'*******************************************************************
Для запуска сценариев WSH существует несколько способов.
Запуск сценария из командной строки в консольном режиме
Можно выполнить сценарий из командной строки с помощью консольной версии WSH cscript.exe. Например, чтобы запустить сценарий, записанный в файле C:\Script\First.js, нужно загрузить командное окно и выполнить в нем команду