Андрей Попов - Windows Script Host для Windows 2000/XP
- Название:Windows Script Host для Windows 2000/XP
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2004
- Город:Санкт-Петербург
- ISBN:5-94157-197-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Андрей Попов - Windows Script Host для Windows 2000/XP краткое содержание
В книге описывается сервер сценариев Windows Script Host (WSH) версии 5.6, который является одним из стандартных компонентов Windows ХР, а также может быть установлен в более ранних версиях Windows. Приводятся сценарии на языках VBScript и JScript, иллюстрирующие применение стандартных объектов WSH 5.6, включая создание из сценариев дочерних процессов и запуск сценариев на удаленных компьютерах. В качестве более сложных примеров рассматриваются сценарии, работающие с базами данных, управляющие приложениями Microsoft Office, организующие графический пользовательский интерфейс, использующие технологии ADSI (Active Directory Service Interface) и WMI (Windows Management Instrumentation) для решения задач администрирования. Освещены вопросы практической работы с XML-файлами и создания СОМ-объектов. Особое внимание уделяется вопросам безопасности при работе со сценариями, приводятся конкретные примеры настроек политик безопасности. К книге прилагается дискета с исходными текстами большинства примеров.
Windows Script Host для Windows 2000/XP - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Для создания нужных нам резервных копий можно также написать сценарий WSH (назовем этот сценарий Logoff.js), который, конечно, будет намного больше по объему, чем командный файл, но будет выводить сообщения в красивые графические диалоговые окна (рис. 11.21–11.23).
Сначала в сценарии Logoff.js создаются экземпляры объектов WshShell
, FileSystemObject
и WshSpecialFolders
, после чего в переменную SHomePath
заносится путь к каталогу с документами текущего пользователя (специальная папка с именем My Documents):
//Создаем объект WshShell
WshShell = WScript.CreateObject("WScript.Shell");
//Создаем объект FileSystemObject
FSO = WScript.CreateObject("Scripting.FileSystemObject");
//Создаем объект WshSpecialFolders
WshFldrs=WshShell.SpecialFolders;
//Определяем путь к папке выборочной автозагрузки
SHomePath=WshFldrs.item("MyDocuments");
Путь к каталогу, в который будет производиться копирование документов, формируется с помощью переменной среды %UserName%
; значение такой переменной извлекается c помощью метода ExpandEnvironmentStrings()
объекта WshShell
:
//Определяем имя пользователя
SUserName=WshShell.ExpandEnvironmentStrings("%UserName%");
//Формируем полный путь к каталогу с резервными копиями документов
//пользователя
SBackupPath+=SUserName;
Копирование документов мы будем производить только после утвердительного ответа пользователя на соответствующий вопрос (см. рис. 11.21):
//Запрос на создание резервной копии
Res=WshShell.Popup("Выполнить резервное копирование документов в\n" + SBackupPath + " ?", 0, "Выход пользователя " + SUserName, vbQuestion+vbYesNo);

Рис. 11.21.Диалоговое окно с запросом о необходимости копирования
Если пользователь согласен, мы копируем нужный каталог с помощью метода CopyFolder()
, причем делаем это внутри блока try
конструкции try…catch
.
IsError=false;
try {
//Производим копирование каталога
FSO.CopyFolder(SHomePath,SBackupPath);
}
В случае возникновения ошибки переменной IsError в блоке catch присваивается значение true, а на экран выводится диалоговое окно с соответствующим сообщением (см. рис. 11.22):
catch (е) { //Обрабатываем возможные ошибки
if (е != 0) {
//Выводим сообщение об ошибке
IsError=true;
Mess="Ошибка при копировании каталога "+SHomePath+"\nКод ошибки: " + е.number + "\nОписание: " + е.description;
WshShell.Popup(Mess, 0, "Выход пользователя " + SUserName, vbCritical);
}
}

Рис. 11.22.Диалоговое окно с сообщением о возникшей ошибке
Если же в процессе копирования ошибок не возникло (переменная IsError
равна false
), то пользователю также выдается сообщение об этом (см. рис. 11.23):
if (!IsError) {
//Производим копирование каталога
FSO.CopyFolder(SHomePath, SBackupPath);
//Все в порядке
Mess = "Копирование документов произведено";
WshShell.Popup(Mess, 0, "Выход пользователя " + SUserName, vbInformation);
}

Рис. 11.23.Диалоговое окно с сообщением о возникшей ошибке
Полностью текст сценария Logoff.js приведен в листинге 11.12.
/********************************************************************/
/* Имя: Logoff.js */
/* Язык: JScript */
/* Описание: Сценарий выхода, позволяющий производить резервное */
/* копирование документов пользователя */
/********************************************************************/
//Объявляем переменные
var
WshShell, //Экземпляр объекта WshShell
WshFldrs, //Экземпляр объекта WshSpecialFolders
FSO, //Экземпляр объекта FileSystemObject
SUserDocPath, //Путь к папке с документами пользователя
SUserName, //Имя пользователя
SBackupPath="D:\\Backup\\", //Каталог для резервных копий документов
Res,IsError;
//Инициализируем константы для диалоговых окон
var vbYesNo=4,vbQuestion=32,vbInformation=64,vbYes=6,vbOkOnly=0,
vbCritical=16;
//Создаем объект WshShell
WshShell = WScript.CreateObject("WScript.Shell");
//Создаем объект FileSystemObject
FSO = WScript.CreateObject("Scripting.FileSystemObject");
//Создаем объект WshSpecialFolders
WshFldrs=WshShell.SpecialFolders;
//Определяем путь к папке выборочной автозагрузки
SHomePath=WshFldrs.item("MyDocuments");
//Определяем имя пользователя
SUserName=WshShell.ExpandEnvironmentStrings("%UserName%");
//Формируем полный путь к каталогу с резервными копиями документов
//пользователя
SBackupPath+=SUserName;
//Запрос на создание резервной копии
Res=WshShell.Popup("Выполнить резервное копирование документов в\n"+
SBackupPath+" ?", 0, "Выход пользователя "+SUserName, vbQuestion+vbYesNo);
if (Res==vbYes) { //Нажата кнопка Да
IsError=false;
try {
//Производим копирование каталога
FSO.CopyFolder(SHomePath,SBackupPath);
} catch (e) { //Обрабатываем возможные ошибки
if (e != 0) {
//Выводим сообщение об ошибке
IsError=true;
Mess="Ошибка при копировании каталога "+SHomePath+"\nКод ошибки: "+
e.number+"\nОписание: "+e.description;
WshShell.Popup(Mess,0,"Выход пользователя "+SUserName,vbCritical);
}
}
if (!IsError) {
//Все в порядке
Mess="Копирование документов произведено";
WshShell.Popup(Mess,0,"Выход пользователя "+SUserName,vbInformation);
}
}
/************* Конец *********************************************/
Вызов системных функций и стандартных диалоговых окон оболочки Windows
Из сценариев WSH можно выводить на экран стандартные диалоговые окна Windows (например, Выполнить(Run)) и модули панели управления (например, Установка даты и времени(Date/Time)). Для этого используются системные функции Windows (API-функции) и объект Shell.Application
, который позволяет получить доступ к оболочке Windows.
Конкретные примеры применения системных функций и методов объекта-оболочки Windows приведены ниже.
Вызов модулей панели управления
Напомним, что в Windows ХР модули панели управления хранятся в каталоге %SystemRoot%\System32 в нескольких файлах с расширением cpl. Эти модули можно вывести на экран с помощью утилиты Control.exe, запустив ее из командной строки или из меню Выполнить(Run) с тремя параметрами (два из них необязательны):
Control.exe File.cpl, [ Name ],[ Page ]
Здесь File.cpl
— название cpl-файла; Name
— имя модуля; Page
— номер страницы в диалоговом окне, которая будет выведена на передний план.
Интервал:
Закладка: