4.7 Объектные модели
Встроенные объектные модели Windows, объектные модели Windows Script Host (WSH), Scripting Runtime, ADO, SQLDMO, CDO, WMI, ADSI, Windows Explorer, Internet Explorer
Наборы объектов, которые предназначены для выполнения задач, относящихся к одной области, называются объектными моделями. Например, в объектной модели Excel предусмотрены объекты, представляющие само приложение Excel, рабочую книгу, отдельные листы на этой рабочей книге, наборы ячеек, диаграммы и т.п. В последней части этой книги подробно разобраны объектные модели приложений Microsoft Office: Word, Excel, Access, PowerPoint, Project, Outlook. Однако при программировании на языке VBA и создании своих собственных приложений ограничиваться только объектными моделей приложений Office совсем не обязательно.
В операционную систему Windows встроено множество других объектных моделей, применение которых может очень сильно расширить возможности ваших приложений. Ниже приведен список дополнительных объектных моделей, которые встроены в Windows или другие продукты Microsoft (об этом будет говориться отдельно), которыми я пользуюсь очень активно. Справку по большинству этих объектных моделей можно найти в MSDN.
Чтобы использовать возможности этих объектных моделей своей программе, необходимо добавить на нее ссылку в ваш проект. Делается это очень просто: в окне редактора Visual Basic выбираете Tools (Сервис) -> References (Ссылки) и выбираете нужную библиотеку.
Вот перечень наиболее интересных с точки зрения применения в своих приложениях объектных моделей:
- Windows Script Host Object Model (wshom.exe) — эта библиотека предназначена для автоматизации работы администраторов. Она обеспечивает возможности программной работы с сетью, принтерами, реестром, ярлыками, журналом событий, позволяет запускать внешние приложения и передавать в них нажатия клавиш и консольные строки и т.п. Есть на всех компьютерах с Windows 2000, XP, 2003 (в качестве необязательного компонента имеется и в Windows 98 Second Edition и Windows NT 4.0);
- Microsoft Scripting Runtime (scrrun.dll) — еще одна библиотека для администраторов. Главное ее богатство — очень удобный (и при этом простой) набор классов для работы с файловой системой — дисками, каталогами, файлами, содержимым текстовых файлов и т.п. Идет в одном наборе с Windows Script Host Object Model;
- Microsoft ADO (набор файлов, начинающийся на msado) — классы для работы с базами данных. Эта библиотека подробно рассмотрена в главе 8 этой книги. Также имеется на всех без исключения компьютерах под управлением Windows 2000, Windows XP и Windows 2003 Server (обычно сразу несколько версий);
- Microsoft SQLDMO Object Library (файл sqldmo.dll) — набор классов для получения полного контроля над Microsoft SQL Server (возможность производить любые административные операции, выполнять запросы и т.п.). Имеется только на компьютерах, на которых установлен SQL Server версий 7.0, 2000 или 2005. В SQL Server 2005 она разбита на несколько частей — SMO (SQL Server Management Objects), RMO (Replication Management Objects) и AMO (Analysis Management Objects);
- Microsoft CDO (версии 1.21, for NTS версии 1.2, for Windows 2000 версии 1.0) — файлы olemsg.dll, cdonts.dll, cdosys.dll) — наборы классов для работы с электронной почтой . Можно использовать для создания и отправки своих почтовых сообщений, просмотра новых сообщений в почтовом ящике и т.п. Есть на всех компьютерах под управлением Windows 2000, Windows XP и Windows 2003 Server. На компьютерах с более старыми операционными системами обычно также имеется, поскольку эта библиотека устанавливается вместе с Microsoft Office.
- Microsoft WMI Scripting v1.1 (wbemdisp.tlb) — расширение возможностей программ через программный интерфейс WMI (Windows Management Instrumentarium). Возможности — совершенно невероятные: от управления скоростью вращения вентилятора (и вообще возможности работы со всеми устройствами, про которые знает операционная система) до установки программного обеспечения, запуска процессов на удаленном компьютере, управления службами и т.п. В ней реализованы очень мощные возможности работы с событиями. Например, можно выполнять какой-либо код в ответ на запуск или завершение работы программы с определенным именем на удаленном компьютере, в ответ на запуск или удаление файла в каталоге, появления записи в журнале событий и т.п. Эта объектная модель (вместе со службой WMI) встроена во все компьютеры под управлением Windows 2000, Windows XP и Windows 2003 Server.
- Active Directory Scripting Interface, ADSI (adsldp.dll, wldap32.dll, adsnt.dll, adsnds.dll, adsnw.dll) — взаимодействие с объектами в каталогах Active Directory, NT, NetWare, то есть работа с учетными записями пользователей, группами, объектами компьютеров, принтеров и т.п. Также встроена в операционные системы Windows 2000, Windows XP и Windows 2003 Server (как в серверные, так и в пользовательские версии);
- объектная модель Windows Explorer. Информации по ней в справке не так много, но иногда она очень удобна для выполнения различных операций с файлами на диске;
- объектная модель Internet Explorer. Очень мощное и удобное средство для организации взаимодействия с пользователем. Позволяет показывать пользователю Web-страницы (последовательно их меняя, можно организовать «мультфильм»), флэш-ролики, демонстрировать видео и аудиоклипы и т.п. Очень удобна эта объектная модель и для сбора информации от пользователей при помощи скриптов и форм HTML, хотя в Microsoft Office для этой цели чаще всего используются обычные графические формы (о которых рассказывается в следующей главе).
Для тех, кто никогда не работал с этими объектными моделями, их применение может показаться темным лесом, но на практике все не так страшно. Они изначально создавались таким образом, чтобы с ними удобно было работать пользователям, не являющимися профессиональными программистами (например, администраторам). По опыту слушателей учебного курса «Программирование для администраторов», где эти рассматриваются эти объектные модели, освоить их можно очень быстро.
Using COM Objects in Windows Script Host
Microsoft Windows Script Host is a scripting utility you can use to run scripts within the base operating system. You can use Windows Script Host to automate common tasks and to create powerful macros and logon scripts. Windows Script Host comes with VBScript and JScript ActiveX scripting engines. Other software companies provide ActiveX scripting engines for languages such as PerlScript, PScript, Python, and others.
To use a COM object in a script run by Windows Script Host, you must first create an instance of the object. After a COM object has been created, you can then use it in scripts.
Windows Script Host consists of two applications. One runs scripts from the Windows desktop ( WScript.exe ); the other runs scripts from the command prompt ( CScript.exe ).
To run a script from the desktop, simply double-click a script file. Script files are text files. By convention, VBScript files have the extension .vbs and JScript files .js .
To run a script from the command prompt, run the Cscript.exe application with a command line such as the following:
where c:\\sample scripts\\chart.vbs is the path to the file containing the script.
You can print out a list of the parameters supported by Cscript.exe by entering the following command line:
To use a COM object in a script run by Windows Script Host, you must first create an instance of the object. In VBScript you can do this by calling the CreateObject() method. In JScript one can use either the ActiveXObject object or the WScript.CreateObject() method. The following example illustrates calling CreateObject() using VBScript:
The following example illustrates creating an ActiveXObject object using JScript:
Alternatively using WScript.CreateObject() method inside JScript:
After you have created an instance of the COM object, you can write script that uses the object, for example:
In addition to the CreateObject method and ActiveXObject object, both VBScript and JScript provide the method GetObject, which returns an object instance.
Устраняем ошибку Windows Script Host
Исправляем ошибку Windows Script Host
Сразу стоит сказать о том, что если вы писали свой скрипт и при его запуске получили ошибку, то необходимо искать проблемы в коде, а не в системном компоненте. Например, вот такое диалоговое окно говорит именно об этом:
Такая же ситуация может возникнуть и в том случае, когда в коде имеется ссылка на другой скрипт, путь к которому прописан неверно либо данный файл вовсе отсутствует на компьютере.
Далее мы поговорим о тех моментах, когда при старте Windows или запуске программ, например, Блокнота или Калькулятора, а также других приложений, использующих системные ресурсы, появляется стандартная ошибка Windows Script Host. Иногда подобных окон может появиться сразу несколько. Случается такое после обновления операционной системы, которое может пройти как в штатном режиме, так и со сбоями.
Причины такого поведения ОС следующие:
- Неверно выставленное системное время.
- Сбой в работе службы обновлений.
- Некорректная установка очередного апдейта.
- Нелицензионная сборка «винды».
Вариант 1: Системное время
Многие пользователи думают, что системное время, которое показывается в области уведомлений, существует только для удобства. Это не совсем так. Некоторые программы, обращающиеся к серверам разработчиков или к иным ресурсам, могут работать некорректно или вовсе отказаться функционировать по причине расхождений в дате и времени. Это же касается и Windows с ее серверами обновления. В том случае, если будет расхождение в вашем системном времени и времени сервера, то могут наблюдаться неполадки с апдейтами, поэтому на это стоит обратить внимание в первую очередь.
- Нажимаем на часы в правом нижнем углу экрана и переходим по ссылке, указанной на скриншоте.
Далее идем на вкладку «Время по интернету» и жмем на кнопку изменения параметров. Обратите внимание, что ваша учетная запись должна обладать правами администратора.
В окне настроек устанавливаем галку в указанный на изображении чекбокс, затем в выпадающем списке «Сервер» выбираем time.windows.com и нажимаем «Обновить сейчас».
Если все пройдет успешно, то появится соответствующая надпись. В случае ошибки с превышением времени ожидания просто нажимаем кнопку обновления еще раз.
Теперь ваше системное время будет регулярно синхронизироваться с сервером времени Майкрософт и расхождения не будет.
Вариант 2: Служба обновлений
Windows – это очень сложная система, с множеством одновременно протекающих процессов, и некоторые из них могут повлиять на работу службы, отвечающей за обновление. Высокое потребление ресурсов, различные сбои и занятость компонентов, помогающих апдейту, «заставляют» службу совершать бесконечные попытки выполнить свою работу. Сам сервис также может сбоить. Выход здесь один: отключить его, а затем перезагрузить компьютер.
- Вызываем строку «Выполнить» сочетанием клавиш Win+R и в поле с названием «Открыть» пишем команду, которая позволит получить доступ к соответствующей оснастке.
В списке находим «Центр обновления», кликаем ПКМ и выбираем пункт «Свойства».
В открывшемся окне жмем кнопку «Остановить», а затем ОК.
После перезагрузки служба должна запуститься автоматически. Стоит проверить, так ли это и, если она все еще остановлена, включить ее тем же способом.
Если после выполненных действий ошибки продолжают появляться, то необходимо поработать с уже установленными обновлениями.
Вариант 3: Некорректно установленные обновления
Данный вариант подразумевает удаление тех обновлений, после установки которых начались сбои в Windows Script Host. Сделать это можно как вручную, так и с помощью утилиты восстановления системы. В обоих случаях необходимо вспомнить, когда «посыпались» ошибки, то есть после какой даты.
- Идем в «Панель управления» и находим апплет с названием «Программы и компоненты».
Далее переходим по ссылке, отвечающей за просмотр обновлений.
Сортируем список по дате установки, кликнув по шапке последней колонки с надписью «Установлено».
Выбираем нужное обновление, кликаем ПКМ и выбираем «Удалить». Также поступаем с остальными позициями, помня про дату.
- Для перехода к данной утилите кликаем правой кнопкой мыши по значку компьютера на рабочем столе и выбираем пункт «Свойства».
Далее переходим к «Защите системы».
Нажимаем кнопку «Восстановление».
В открывшемся окне утилиты жмем «Далее».
Ставим галку, отвечающую за показ дополнительных точек восстановления. Необходимые нам поинты будут называться «Автоматически созданная точка», тип – «Система». Из них необходимо выбрать ту, которая соответствует дате последнего обновления (или того, после которого начались сбои).
Жмем «Далее», ждем, пока система предложит перезагрузиться и выполнит действия по «откату» к предыдущему состоянию.
Обратите внимание, что в этом случае могут быть удалены и те программы и драйвера, которые были установлены вами после этой даты. Узнать, произойдет ли это, можно нажав кнопку «Поиск затрагиваемых программ».
Читайте также: Как восстановить систему Windows XP, Windows 8, Windows 10
Вариант 4: Нелицензионная Windows
Пиратские сборки «винды» хороши лишь тем, что они совершенно бесплатны. В остальном же такие дистрибутивы могут принести массу проблем, в частности, некорректную работу необходимых компонентов. В этом случае рекомендации, приведенные выше, могут не сработать, так как файлы в скачанном образе уже были сбойными. Здесь можно только посоветовать поискать другой дистрибутив, но лучше воспользоваться лицензионной копией Windows.
Заключение
Решения проблемы с Windows Script Host довольно просты, и с ними справится даже начинающий пользователь. Причина здесь ровно одна: некорректная работа инструмента обновления системы. В случае с пиратскими дистрибутивами можно дать следующий совет: пользуйтесь только лицензионными продуктами. И да, правильно пишите ваши скрипты.