Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_Адм_инф_сист.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
1.87 Mб
Скачать

Объекты wsh

В поставку Windows Scripting Host входят 4 объекта: Wscript, WshShell, WshNetwork, и FileSystemObject.

Каждый объект, естественно, имеет набор собственных методов и свойств.

Объект Wscript позволяет скриптам "познать самих себя". Вдобавок этот объект позволяет скриптам запускать приложения и управлять ими. Основные свойства и методы этого объекта перечислены в таблице 1.

Таблица 1. Методы и свойства объекта WScript

Свойство

Описание

Arguments

Возвращает указатель на список аргументов командной строки

FullName

Возвращает имя исполняемого файла хоста и полный путь к нему (например, C:\Windows\wscript.exe)

Name

Выводит замечательную надпись Windows Scripting Host

Path

Определяет каталог и путь, содержащие wscript.exe или cscript.exe

ScriptFullName

Возвращает полный путь и имя исполняемого в данный момент скрипта

ScriptName

То же, что и ScriptFullName, но без пути

Version

Возвращает версию установленного Windows Scripting Host

Метод

Описание

CreateObject

Создает объект по его ProgID

ConnectObject

Позволяет подключиться к событиям объекта. В качестве параметра принимает объект, к которому надо подключиться и префикс соответствующих событиям процедур, реализованных в скрипте

DisconnectObject

Отключает от объекта, подключенного предыдущим методом

Echo

Выводит текстовую строку (в cscript - в StdOut, в Wscript - в виде диалогового окна.

GetObject

Позволяет получить указатель на объект из файла или объекта, указанного в параметре strProgID.

Quit

Завершает скрипт

Sleep

Переводит скрипт в неактивное состояние на время, указанное в миллисекундах

Объект WshShell позволяет скриптам устанавливать и конфигурировать другие приложения. Он также дает возможность общаться с пользователем, изменять Реестр и находить папки. Некоторые его свойства и методы перечислены в таблице 2.

Таблица 2. Свойства и методы объекта WshShell

Свойство

Описание

Environment

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

Set WSHShell = CreateObject("WScript.Shell")

Set WshSysEnv = WshShell.Environment("Process")

WScript.Echo WshSysEnv("windir")

SpecialFolders

Возвращает полный путь к специальным папкам типа меню Пуск. Вот список доступных папок: AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, AllUsersStartup, Desktop, Favorites, Fonts, MyDocuments, NetHood, PrintHood, Programs, Recent, SendTo, StartMenu, Startup, Templates.

Метод

Описание

Run

Запускает приложение. strCommand - исполняемая команда, параметр intWindowStyle позволяет управлять положением и поведением окон, а bWaitOnReturn позволяет указать объекту WshShell, надо ли ожидать окончания выполнения запущенного приложения.

Popup

Ещё один способ вывести текст в окне

CreateShortcut

Создает ярлыки файлов или URL

RegRead

Возвращает значение ключа или записи реестра по его имени

RegWrite

Создает новые ключ или запись Реестра или записывает новое значение существующих.

RegDelete

Удаляет ключ или запись реестра

LogEvent

Позволяет записать сообщение в event log Windows NT или W2K или файл WSH.log в случае Windows 9х

ExpandEnvironmentStrings

Позволяет раскрыть строку, содержащую переменные среды

SendKeys

Позволяет эмулировать клавиатурный ввод

Объект WshNetwork используется при создании скриптов, модифицирующих конфигурацию сети. Это включает задачи типа подключения к сети, инсталляцию принтеров, назначение буквенных обозначений сетевым дискам и так далее. Основные свойства и методы WshNetwork перечислены в таблице 3.

Таблица 3. Свойства и методы объекта WshNetwork

Свойства

Описание

ComputerName

Возвращает имя компьютера

UserDomain

Возвращает имя домена, в котором зарегистрирован пользователь

UserName

Возвращает догадаетесь что!

Метод

Описание

MapNetworkDrive

Присваивает назначенную пользователем букву сетевому диску

EnumNetworkDrives

Возвращает список подключенных сетевых дисков

RemoveNetworkDrive

Отключает сетевой диск

AddWindowsPrinterConnection

Позволяет установить новый принтер в Windows, то есть указать путь к принтеру и инициировать установку драйверов.

AddPrinterConnection

Подключает сетевой принтер

RemovePrinterConnection

Отключает сетевой принтер

SetDefaultPrinter

Задает принтер по умолчанию

EnumPrinterConnections

Возвращает список подключенных принтеров

Последний объект, FileSystemObject, нужен для дисковых операций. Это включает чтение, запись, удаление файлов и создание каталогов.

FileSystemObject имеет методы BuildPath, CopyFile, CopyFolder, CreateFolder, CreateTextFile, DeleteFile, DeleteFolder, DriveExists, FileExists, FolderExists, GetAbsolutePathName, GetBaseName, GetDrive, GetDriveName, GetExtensionName, GetFile, GetFileName, GetFolder, GetParentFolderName, GetSpecialFolder, GetTempName, MoveFile, MoveFolder, OpenTextFile. Их названия в отдельном объяснении не нуждаются. Его единственное свойство Drives возвращает список дисков, доступных на данной машине, включая сетевые.

Ну вот, на этом, пожалуй, теоретическую часть можно завершить и перейти непосредственно к написанию самих скриптов. В силу привычки я предпочитаю JScript, но по мере возможностей постараюсь приводить примеры как на JS, так и на VBS.

Так как раздел ориентирован в основном на реестр Windows, то и начать хотелось бы со скрипта, работающего с реестром. Итак, попробуем создать какой-нибудь раздел, в нем несколько параметров, а затем все это удалим. Создайте любой файл с расширением .js (например, test.js) и напишите в нем следующее:

//Пример работы с реестром на JScript

var WSHShell = WScript.CreateObject("WScript.Shell");

WSHShell.Popup("Создаем раздел");

WSHShell.RegWrite("HKCU\\MyRegKey\\", "Primer");

WSHShell.Popup("Создаем строковый параметр");

WSHShell.RegWrite("HKCU\\MyRegKey\\String", 1);

WSHShell.Popup("Создаем параметр DWORD");

WSHShell.RegWrite("HKCU\\MyRegKey\\DWORD", 2, "REG_DWORD");

WSHShell.Popup("Создаем двоичный параметр");

WSHShell.RegWrite("HKCU\\MyRegKey\\Binary", 3, "REG_BINARY");

WSHShell.Popup("Удаляем все параметры");

WSHShell.RegDelete("HKCU\\MyRegKey\\String");

WSHShell.RegDelete("HKCU\\MyRegKey\\DWORD");

WSHShell.RegDelete("HKCU\\MyRegKey\\Binary");

WSHShell.Popup("Удаляем раздел");

WSHShell.RegDelete("HKCU\\MyRegKey\\");

В первой строке создается объект типа WSHShell с тем же именем. Во второй строке выводится сообщение о том, что создается раздел. После нажатия на "ОК" в появившемся окне в реестре будет создан новый раздел. Перед каждым действием будет появляться окно с сообщением о том, что сейчас будет сделано. В нормальном рабочем скрипте такие окна, конечно, не нужны. Здесь они добавлены просто для того, чтобы вы могли отследить изменения в реестре (для обновления информации в редакторе реестра нажимайте F5 после каждого изменения). Последние строчки удаляют наши параметры и раздел, чтобы не забивать реестр разным мусором.

Если вы обратили внимание, то корневой раздел HKEY_CURRENT_USER в скрипте обозначается как HKCU. Здесь возможны сокращенные названия корневых разделов. HKEY_LOCAL_MACHINE будет писаться как HKLM, HKEY_CLASSES_ROOT - HKCR. Остальные разделы не имеют короткого имени.

Теперь проделаем аналогичную операцию на VBScript (test.vbs):

'Пример работы с реестром на VBScript

set WSHShell = WScript.CreateObject("WScript.Shell")

WSHShell.Popup "Создаем раздел"

WSHShell.RegWrite "HKCU\\MyRegKey\\", "Primer"

WSHShell.Popup "Создаем строковый параметр"

WSHShell.RegWrite "HKCU\\MyRegKey\\String", 1

WSHShell.Popup "Создаем параметр DWORD"

WSHShell.RegWrite "HKCU\\MyRegKey\\DWORD", 2, "REG_DWORD"

WSHShell.Popup "Создаем двоичный параметр"

WSHShell.RegWrite "HKCU\\MyRegKey\\Binary", 3, "REG_BINARY"

WSHShell.Popup "Удаляем все параметры"

WSHShell.RegDelete "HKCU\\MyRegKey\\String"

WSHShell.RegDelete "HKCU\\MyRegKey\\DWORD"

WSHShell.RegDelete "HKCU\\MyRegKey\\Binary"

WSHShell.Popup "Удаляем раздел"

WSHShell.RegDelete "HKCU\\MyRegKey\\"

Как видите, отличия весьма незначительные (по другому задается комментарий, отсутствует ";" в конце строки, нет круглых скобок при задании параметров, var заменена на set).