Роман Клименко - Недокументированные и малоизвестные возможности Windows XP
• 0 — отключить протоколирование;
• 1 — краткое протоколирование ошибок;
• 2 — полное протоколирование ошибок.
■ Logging Directory — этот параметр строкового типа содержит путь к каталогу, в котором находятся файлы системных журналов WMI. Именно значение этого параметра и редактируется на вкладке Ведение журнала.
■ Low Threshold On Client Objects (B) — параметр DWORD-типа, определяет нижнее пороговое значение очереди объектов от поставщиков, достижение которого приводит к замедлению скорости создания объектов. По умолчанию в реестре не существует.
■ Low Threshold On Events (B) — этот параметр DWORD-типа определяет нижнее пороговое значение очереди событий от поставщиков, достижение которого приводит к замедлению скорости создания событий.
■ Max DB Size — параметр строкового типа, определяет максимальный размер базы данных WMI. По умолчанию не существует.
■ Max Wait On Events (ms) — этот параметр строкового типа указывает время в миллисекундах, в течение которого событие может находиться в очереди. Если по истечении этого времени событие все еще находится в очереди, то оно будет автоматически удалено.
■ Max Wait On Client Objects (ms) — параметр строкового типа, указывает время в миллисекундах, в течение которого объект может находиться в очереди. Если по истечении этого времени объект все еще находится в очереди, то он будет автоматически удален. По умолчанию в реестре не существует.
■ Repository Directory — этот параметр строкового типа определяет путь к каталогу, используемому службой WMI для хранения архивов СIМ-совместимой базы данных. Они используются при восстановлении базы данных.
■ Working Directory — параметр строкового типа, определяет путь к рабочему каталогу WMI. По умолчанию используется путь %systemroot%system32wbem.
В реестре также существует ветвь HKEY_LOCAL_MACHINESOFTWAREMicrosoftWBEMScripting. Значения данной ветви определяют настройки взаимодействия WMI и сервера сценариев Windows. Например, ветвь может содержать следующие параметры.
■ Default Namespace — этот параметр строкового типа определяет пространство имен, используемое по умолчанию (если пространство имен не указано явно). Чаще всего значение равно rootcimv2.
■ Enable for ASP — если значение данного параметра DWORD-типа равно 1, то будет разрешено использование сценариев WMI для ASP.
■ Default Impersonation Level — этот параметр DWORD-типа определяет используемый по умолчанию (если уровень не указан в сценарии) уровень прав безопасности. По умолчанию значение равно 3.
Доступ к WMI с помощью сервера сценариев
Полное понимание WMI невозможно без знания тех возможностей, которые она предоставляет администратору. Поэтому рассмотрим сейчас некоторые примеры написания сценариев сервера сценариев Windows с использованием возможностей WMI. Раздел не описывает работу с сервером сценариев — предполагается, что вы уже знаете, что это такое и как писать простые сценарии на языках VBScript или JScript. Здесь будет дано несколько примеров сценариев, на основе которых можно представить, какие возможности открываются перед администратором при использовании WMI, а также будет дана ссылка на один интересный каталог файловой системы Windows, содержащий список всех функций, реализованных в пространствах имен, и краткое описание этих функций.
Итак, сервер сценариев Windows является объектно-ориентированным языком. Иными словами, при написании сценариев в них можно подключать различные объекты (хранящие описания методов, реализующих различные возможности работы с операционной системой), а также моникеры (СОМ-механизм для обеспечения привязки к СОМ-объекту, например к базе данных WMI). Сценарии сервера сценариев можно писать на языке VBScript либо JScript. В данном случае для рассмотрения примеров будет использоваться язык VBScript.
Есть два способа запуска сценариев сервера сценариев Windows — либо с помощью двойного щелчка кнопкой мыши на файле (или с помощью команды wscript.exe), либо с помощью команды cscript.exe. Программа cscript.exe предназначена для работы со сценарием из командной строки, и ее плюсом является возможность указания параметров работы сценария (если он обрабатывает параметры). Приведенные ниже примеры, как правило, используют параметры командной строки, поэтому для их применения лучше обратиться к программе cscript.exe.
Включение и выключение SystemRestore для отдельных дисков
Рассмотрим первый пример тех возможностей, которые предоставляет администратору WMI. В этом примере воспользуемся классом SystemRestore, описанным в пространстве имен root /default для реализации возможности отключения или включения восстановления системы на отдельных дисках с помощью сервера сценариев Windows. Пример, кроме доступа к WMI, будет содержать описание реализации основных возможностей объектов сервера сценариев, а также подробное объяснение, для чего записывается та или иная строка сценария.
Листинг 11.1. Отключение или включение восстановления системы на отдельном диске'Для работы данного сценария используются возможности объектов Windows
'(работа с реестром и файловой системой), поэтому перед обращением к
'этим возможностям нужно объявить в сценарии объекты, в которых они описаны
'Сейчас мы объявляем объект для работы с файловой системой Windows, он
'нам понадобится для возможности записи в файл сведений об отключении
'SystemRestore.
set objFS = CreateObject("Scripting.FileSystemObject")
'После объявления объекта необходимо открыть текстовый файл
'(например, файл sr_log.txt, расположенный в каталоге d:)
'для записи (если файл не сущестует, то он будет автоматически создан).
'В этот файл будет записываться информация о работе сценария.
set objTextFile = objFS.OpenTextFile("d:sr_log.txt", 8, True)
'Теперь мы объявляем объект для работы с реестром Windows.
'Он нам понадобится для доступа к параметру, указывающему, включена ли
'в данный момент возможность SystemRestore
set objREG = WScript.CreateObject("Wscript.Shell")
Теперь мы объявляем объект, с помощью которого можно обработать
'передаваемые в сценарий параметры командной строки. Наш сценарий будет
'использовать параметры командной строки для определения того, что же
'ему нужно делать. При этом полная строка запуска нашего сценария
'будет выглядеть так: cscript «путь к файлу сценария и его имя» «значок
'диска» «если этот параметр равен Y, то SystemRestore на диске будет
включена, если же значение этого параметра равно N, то отключена».
'Если параметры не заданы (например, сценарий запускается двойным щелчком
'на его значке), то будут применяться параметры По умолчанию: будет
'отключаться возможность SystemRestore на диске C:.
Set Args = wscript.Arguments
Теперь мы проверяем, использовали ли при запуске сценария параметр
'значка диска (первую опцию). Если не использовали, то будем работать
'с диском C:.
If Args.Count() > 0 Then
Drive = Args.item(0)
Else
Drive = "c:"
End If
'Теперь мы проверяем использование при запуске сценария второго параметра
If Args.Count() > 1 Then
StopSR = Args.item(1)
Else
StopSR = "N"
End If
'При каждом запуске даннного сценария мы будем вести журнал его работы.
'Каждый журнал, как правило, начинается с даты и времени, когда сценарий
'был запущен – именно эту информацию мы и добавляем в открытый ранее
'файл. Для этого мы используем метод Write, чтобы сервер сценариев
'не переходил на следующую строку файла журнала после занесения в него
'даты и времени.
objTextFile.Write Date() & " в " & Time()
'Сейчас мы вызываем главную функцию программы, описанную ниже в сценарии.
'Главный код программы был реализован в виде функции, чтобы показать
'читателю большинство возможностей сервера сценариев Windows.
call sronoff()
'А вот и главная функция программы (которая будет называться sronoff).
'Именно эта функция отключает или включает SystemRestore на определенном
'диске. Реализация частей кода сценария в виде функций позволяет
'использовать его возможности по максимуму. Например, такой подход
'позволяет завершать работу сценария в любое время, независимо от
'оставшегося для обработки кода, или использовать для каждой части
'кода свои методы обработки ошибок.