Доброго дня всем читателям блога scriptcoding.ru. В этой статье мы познакомимся с методом объекта WScript Shell – LogEvent. Данный метод позволяет заносить в журнал событий Windows информацию различного типа.
Для начала давайте кратко освежим память относительно журнала событий системы Windows.
Журнал событий Windows
Журнал событий Windows хранит информацию о любых изменениях в системе, например: успешный или неудачный вход в систему, ошибки и неполадки на диске, информация относительно работы программного и аппаратного обеспечения компьютера и так далее. Для начала стоит рассмотреть, какие основные есть типы журналов событий Windows:
- Журнал приложений – тут хранится информация, добавленная программным путем, например, при попытке получить доступ к базе данных приложение потерпело неудачу, и записало информацию про это в журнал.
- Журнал безопасности – В большинстве случаев тут записывается информация относительно успешного или неудачный входа в систему Windows, по сути, все, что связано с авторизацией и аутентификацией в Windows.
- Журнал системы – Тут хранится информация, записанная системными компонентами, например, сбой при загрузке драйвера.
Хорошо, теперь давайте посмотрим, как можно просмотреть журнал событий Windows.
В первую очередь надо открыть папку Панель управления, далее открываем каталог Администрирование и Просмотр событий, но можно и по-другому, в папке Панель управления открываем Управление компьютером, в открывшемся окне нажимаем на папку Просмотр событий. Есть и третий способ, который позволяет открыть журнал событий ОС Windows из меню Пуск/Выполнить, для этого надо запустить файл-оснастку eventvwr.msc.
В самом меню журнала событий Windows разобраться несложно, поэтому, я не буду на этом зацикливаться, поэтому давайте перейдем к основной теме данной публикации.
Метод LogEvent объекта WScript.Shell по своей природе довольно просто, мы просто указывает тип сообщения и само сообщение. Стоит помнить, что в журнале событий отображаются значки для того или иного типа события.
Общий синтаксис метода следующий:
LogEvent(intType, strMessage [ ,strTarget]) – видим, что методу передаются три параметра, плюс, он возвращает true, если событие было записано, и false в противном случае.
intType – данный параметр определяет тип сообщения, он принимает целые значения:
- 0 – Неопределенный тип, отображается значок информации (SUCCESS)
- 1 – Сообщение об ошибке (ERROR)
- 2 – Предупреждение (WARNING)
- 4 – Информация (INFORMATION)
- 8 – Аудит успехов (AUDIT_SUCCESS)
- 16 – Аудит отказов (AUDIT_FAILURE)
strMessage – собственно, сообщение, которое будет записано в журнале событий, строковой тип.
strTarget — строка, название системы, в которой протоколируется событие (по умолчанию — локальная система), может задаваться только в Windows NT/2000/XP.
Хорошо, теперь можно приступить к программированию, мы напишем два программных кода на языке vbscript и jscript. Давайте так, для начала я приведу пример кода на языке vbscript, дам пояснения, а уже потом мы рассмотрим пример на языке программирования jscript.
'***************************************** ' wscript_shell_logevent ' Запись в журнал событий Windows ' logevent1.vbs '***************************************** 'Включаем проверку переменных Option Explicit dim WshShell ' Формируем ссылку на объект set WshShell = WScript.CreateObject("WScript.Shell") ' Записываем сообщения в журнал событий WshShell.LogEvent 0,"Неопределенный тип, отображается значок информации (SUCCESS)" WshShell.LogEvent 1,"Сообщение об ошибке (ERROR)" WshShell.LogEvent 2,"Предупреждение (WARNING)" WshShell.LogEvent 4,"Информация (INFORMATION)" WshShell.LogEvent 8,"Аудит успехов (AUDIT_SUCCESS)" WshShell.LogEvent 16,"Аудит отказов (AUDIT_FAILURE)" ' Выводим сообщение об успехе MsgBox "Все прошло успешно OK!!!!!!" |
Видим, прежде всего мы объявили переменную WshShell, которая будет хранить ссылку на экземпляр класса WScript.Shell, связь с объектом в языке vbscript прописывается с помощью ключевого слова set. Далее мы произвели последовательную запись информации в журнал событий Windows для каждого типа.
Стоит заметить, что я тут не проводил проверки на успех выполнения операции. Сам сценарий я запускал как под правами гостя, так и под правами администратора. Для более полной картины, стоило бы сделать проверку на ошибки. Вы конечно можете сказать: какой смысл указывать тот или иной тип события, ведь можно всегда указывать один тип? Верно, но визуально, нам проще будет, если для той или иной задачи будет определен разный тип в журнале событий ОС Windows.
Так, мы можем написать сценарий для мониторинга системы с помощью инструментарий Windows. Можно следить за каталогом с файлами, и проверять следующие события: создание в нем файлов и папок, чтение или запись, общий размер каталога и так далее.
Хорошо, теперь давайте рассмотрим аналогичный пример, но уже на языке jscript:
//***************************************** // wscript_shell_logevent // Запись в журнал событий Windows // logevent1.js //***************************************** var WshShell; // Формируем ссылку на объект WshShell = WScript.CreateObject("WScript.Shell"); // Записываем сообщения в журнал событий WshShell.LogEvent (0,"Неопределенный тип, отображается значок информации (SUCCESS)"); WshShell.LogEvent (1,"Сообщение об ошибке (ERROR)"); WshShell.LogEvent (2,"Предупреждение (WARNING)"); WshShell.LogEvent (4,"Информация (INFORMATION)"); WshShell.LogEvent (8,"Аудит успехов (AUDIT_SUCCESS)"); WshShell.LogEvent (16,"Аудит отказов (AUDIT_FAILURE)"); // Выводим сообщение об успехе WScript.Echo ("Все прошло успешно OK!!!!!!"); |
Тут практически все то же, изменился только программный код, а цель осталась прежняя.
И так, мы рассмотрели работу метода LogEvent класса WScript.Shell, который позволяет довольно быстро записывать в журнал событий Windows нужные сообщения и определять тип их назначения.