Командная строка и сценарии Windows

Структура классов WMI

Разбить на страницы
Показывать лекцию целиком

Структура классов WMI

Напомним, что всякому ресурсу, управляемому с помощью WMI, соответствует специальный класс WMI; каждый класс имеет четко определенную структуру и содержит свойства, методы и квалификаторы (свои квалификаторы могут быть также у свойств и методов). Классы описываются с помощью специального языка MOF (Managed Object Format), который, в свою очередь, базируется на языке IDL (Interface Definition Language), применяемом для описания интерфейсов COM-объектов. После определения структуры класса с помощью MOF разработчик может добавить откомпилированное представление этого класса в репозиторий CIM с помощью стандартной утилиты mofcomp.exe.

Подробнее понятия свойств, методов и квалификаторов будут обсуждаться далее, а начнем мы с типизации классов CIM.

Основные типы классов CIM

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

  • Абстрактный класс (abstract class) — это шаблон, который служит исключительно для образования новых классов-потомков (абстрактных и неабстрактных). Абстрактный класс не может непосредственно использоваться для получения экземпляра управляемого ресурса.
  • Статический класс (static class) определяет данные, которые физически хранятся в репозитории CIM (к такому типу относятся, например, данные о собственных настройках WMI). Вследствие этого для доступа к экземплярам статических классов не нужно прибегать к помощи каких-либо провайдеров.
  • Динамический класс (dynamic class) моделирует управляемый ресурс, данные о котором соответствующий провайдер возвращает в динамическом режиме.
  • Кроме трех основных типов классов в CIM выделяется еще один специальный тип — ассоциативный класс (association class) — это абстрактный, статический или динамический класс, который описывает логическую связь между двумя классами или управляемыми ресурсами (например, ассоциативный класс Win32_SystemProcesses связывает класс Win32_Process, экземпляры которого соответствуют запущенным в системе процессам, с классом Win32_ComputerSystem, в котором представлены общие настройки компьютерной системы).

    Кроме этого, все классы CIM можно разделить на четыре группы по принадлежности к различным информационным моделям.

  • Системные классы. Системными называются те классы, которые служат для задания конфигурации и выполнения внутренних функций WMI (определение пространств имен, обеспечение безопасности при работе с пространствами имен, регистрация провайдеров, подписка на события WMI и формирование сообщений о наступлении таких событий). Системные классы могут быть абстрактными или статическими. Системные классы можно легко отличить от других по названию — имена всех системных классов начинаются с символов "__" (двойное подчеркивание), например, __SystemClass, __NAMESPACE, __Provider или __Win32Provider.
  • Классы модели ядра (основной модели) (core model). К этой модели относятся абстрактные классы, которые обеспечивают интерфейс со всеми областями управления. Названия таких классов начинаются с префикса "CIM_". Примерами классов модели ядра могут служить класс CIM_ManagedSystemElement (свойства этого класса идентифицируют управляемые компоненты системы) и его наследники CIM_LogicalElement (описание логического управляемого ресурса, например, файла или каталога) и CIM_PhysicalElement (описание физического управляемого ресурса, например, периферийного устройства).
  • Классы общей модели (common model). Общая модель является расширением основной модели — здесь представлены классы, которые являются специфическими для задач управления, но не зависят от конкретной технологии или реализации (другими словами, не зависят от типа операционной системы). Названия таких классов, как и классов модели ядра, начинаются с "CIM_". Класс CIM_LogicalFile (наследник класса CIM_LogicalElement ), описывающий файл, является примером класса общей модели, т. к. файловая система присутствует практически в любой операционной системе.
  • Классы модели расширения (extension model). Эта категория классов включает в себя специфические для каждой технологии или реализации дополнения к общей модели. В WMI определено большое количество классов, которые соответствуют ресурсам, специфическим для среды Win32 (имена этих классов начинаются с префикса "Win32_" ). Например, классы Win32_PageFile и Win32_ShortCutFile, которые описывают соответственно файлы подкачки Windows и файлы-ярлыки, являются потомками класса CIM_LogicalFile из общей модели.
  • Свойства классов WMI

    Свойства классов используются для однозначной идентификации экземпляра класса, представляющего конкретный управляемый ресурс, а также для описания текущего состояния этого ресурса. Рассмотрим два простых примера — классы из пространства имен CIMV2, являющиеся шаблонами для служб и процессов Windows.

    Напомним, что для просмотра списка всех служб, установленных на компьютере, можно воспользоваться оснасткой Службы (Services) консоли управления MMC (рис. 11.1).

    (рис 11.1) Службы, зарегистрированные на локальном компьютере

    Параметры определенной службы можно просматривать и изменять с помощью диалогового окна с несколькими вкладками, которое появляется после выбора этой службы в правом окне консоли (рис. 11.2).

    (рис 11.2) Параметры службы Журнал событий (Event Log)

    Службам Windows в WMI соответствуют экземпляры класса Win32_Service; основные свойства этого класса приведены в табл. 11.1.

    Некоторые свойства класса Win32_Service
    Свойство Описание
    AcceptPause Свойство логического типа, значение которого равно True, если службу можно приостановить, и равно False в противном случае
    AcceptStop Свойство логического типа, значение которого равно True, если службу можно остановить, и равно False в противном случае
    Caption Краткое описание службы
    Description Полное описание службы
    DesktopInteract Свойство логического типа, значение которого равно True, если служба может взаимодействовать с рабочим столом пользователей, и равно False в противном случае
    DisplayName Имя службы, которое выводится в списке служб
    ErrorControl Строка, задающая действие программы загрузки, которое будет выполнено в случае возникновения сбоя при запуске службы во время загрузки операционной системы: Ignore — пользователю не будет выведено никаких сообщений о сбое, Normal — будет выведено сообщение о сбое при запуске службы, Critical — система попытается автоматически произвести перезагрузку в хорошей конфигурации, Unknown — действие для подобного типа ошибок не определено
    Name Имя службы
    PathName Полный путь к бинарному файлу, соответствующему службе
    ProcessId Уникальный идентификатор службы
    ServiceType Строка, описывающая тип службы: Kernel Driver, File System Driver, Adapter, Recognizer Driver, Own Process, Share Process, Interactive Process
    Started Свойство логического типа, значение которого равно True, если служба была запущена, и равно False в противном случае
    StartMode Строка, описывающая способ загрузки службы: Boot (применяется только при загрузке служб для драйверов), System (применяется только при загрузке служб для драйверов), Auto (служба загружается автоматически), Manual (служба может быть запущена вручную), Disabled (службу запустить нельзя)
    StartName Учетная запись, от имени которой запускается служба
    State Текущее состояние службы: Stopped (остановлена), Start Pending (стартует), Stop Pending (останавливается), Running (запущена), Continue Pending (возвращается в активное состояние), Pause Pending (приостанавливается), Paused (приостановлена), Unknown (состояние службы определить не удалось)
    WaitHint Примерное время (в миллисекундах), необходимое для выполнения операций приостановки, остановки или запуска службы

    Как мы видим, многие свойства класса Win32_Service соответствуют элементам ввода в диалоговом окне свойств службы. Например, для экземпляра класса Win32_Service, который представляет службу Журнал событий (Event Viewer) свойства Name, DisplayName, Description и StartMode равны соответственно Eventlog, Журнал событий, Обеспечивает поддержку сообщений журналов событий, выдаваемых Windows-программами и компонентами системы, и просмотр этих сообщений. Эта служба не может быть остановлена и Авто (см. рис. 11.2).

    Рассмотрим теперь класс Win32_Process, экземпляры которого соответствуют запущенным в операционной системе процессам. Напомним, что информацию о всех процессах можно получить с помощью Диспетчера задач (Task Manager), запускаемого нажатием клавиш <Ctrl>+<Alt>+<Del> (рис. 11.3).

    (рис 11.3) Процессы, запущенные на локальном компьютере

    Количество выводимых на экран параметров для процессов зависит от настроек Диспетчера задач (Task Manager): выбрав в меню Вид (View) пункт Выбрать столбцы (Choose columns), можно отметить интересующие нас параметры (рис. 11.4).

    (рис 11.4) Настройка выводимых параметров для процессов

    Параметрам запущенного процесса соответствуют свойства класса Win32_Process ; некоторые из этих свойств приведены в табл. 11.2.

    Некоторые свойства класса Win32_Process
    СвойствоОписание
    Caption Короткое текстовое описание процесса
    CommandLine Командная строка, используемая для запуска процесса
    CreationDate Время начала выполнения процесса
    Description Полное описание процесса
    ExecutablePath Полный путь к исполняемому файлу процесса
    HandleCount Общее количество дескрипторов, открытых в настоящее время процессом (равно общему количеству дескрипторов, открытых каждым потоком в процессе)
    MaximumWorkingSetSize Максимально возможный размер рабочего набора процесса (рабочий набор процесса — это набор страниц, доступных процессу в физической оперативной памяти)
    MinimumWorkingSetSize Минимально возможный размер рабочего набора процесса
    Name Имя процесса
    OtherOperationCount Число выполненных операций ввода/вывода, отличных от операции чтения или записи
    OtherTransferCount Размер данных, переданных в процессе выполнения операций, отличных от операции чтения или записи
    PageFileUsage Размер части файла подкачки, которая используется процессом в настоящее время
    ParentProcessID Уникальный идентификатор родительского процесса, создавшего данный процесс
    PeakPageFileUsage Максимальный размер части файла подкачки, которая использовалась процессом за все время его работы
    PeakVirtualSize Максимальное значение размера виртуального адресного пространства, которое использовалось процессом единовременно
    PeakWorkingSetSize Максимальное значение размера рабочего набора процесса за все время работы
    Priority Приоритет процесса (минимальному приоритету соответствует значение 0, максимальному — 31)
    ProcessID Уникальный идентификатор процесса. Значение этого свойства актуально с момента создания процесса до окончания его работы
    ReadOperationCount Число выполненных процессом операций чтения
    ReadTransferCount Размер прочитанных данных
    ThreadCount Число активных потоков в процессе
    VirtualSize Текущий размер виртуального адресного пространства в байтах, используемого процессом
    WorkingSetSize Размер памяти в байтах, необходимый для успешного выполнения процесса в операционной системе, использующей страничную организацию памяти
    WriteOperationCount Число выполненных процессом операций записи
    WriteTransferCount Размер записанных данных

    Отметим, что в основном в WMI свойства классов доступны только для чтения, однако значения определенных свойств в экземплярах некоторых классов можно изменять напрямую (для этого применяется специальный метод Put_() ). Например, в экземплярах класса Win32_LogicalDisk, которые соответствуют логическим дискам, можно изменять свойство VolumeName, где хранится метка соответствующего диска.

    Замечание

    Количество свойств, значения которых можно изменять, зависит от операционной системы. Например, в Windows 2000 для записи доступны только 39 свойств, а в Windows XP — 145 свойств.

    Для того чтобы узнать, является ли определенное свойство доступным для записи, нужно проверить значение квалификатора Write этого свойства.

    Методы классов WMI

    Методы класса позволяют выполнять те или иные действия над управляемым ресурсом, которому соответствует этот класс (так как не над каждым ресурсом можно производить какие-либо операции, то не у всякого класса есть методы). В табл. 11.3 и 11.4 описаны, например, методы, которые имеются у классов Win32_Service (службы Windows) и Win32_Process (процессы Windows).

    Методы класса Win32_Service
    Метод Описание
    StartService() Запускает службу
    StopService() Остановливает службу
    PauseService() Приостановливает службу
    ResumeService() Возобновляет работу службы
    UserControlService(n) Посылает службе заданный пользователем код n (число от 128 до 255)
    Create(Name, DisplayName, PathName, ServiceType, ErrorControl, StartMode, DesktopInteract, StartName, StartPassword, LoadOrderGroup, LoadOrderGroupDependencies, ServiceDependencies) Создает службу
    Change(DisplayName, PathName, ServiceType, ErrorControl, StartMode, DesktopInteract, StartName, StartPassword, LoadOrderGroup, LoadOrderGroupDependencies, ServiceDependencies) Изменяет параметры службы
    ChangeStartMode(StartMode) Изменяет тип загрузки службы. Символьный параметр StartMode может принимать следующие значения: Boot (применяется только при загрузке служб для драйверов), System (применяется только при загрузке служб для драйверов), Auto (служба загружается автоматически), Manual (служба может быть запущена вручную), Disabled (службу запустить нельзя)
    Delete() Удаляет существующую службу

    Таким образом, методы класса Win32_Service позволяют изменять значения некоторых свойств этого класса и выполнять манипуляции над конкретной службой: запускать ее, приостанавливать, останавливать и т. д.

    Перейдем к рассмотрению методов класса Win32_Process, которые описаны в табл. 11.4.

    Методы класса Win32_Process
    Метод Описание
    AttachDebugger() Запускает отладчик, установленный в системе по умолчанию, для отладки процесса
    Create(CommandLine, CurrentDirectory, ProcessStartupInformation, ProcessId) Создает новый не интерактивный процесс
    GetOwner(User,Domain) После выполнения этого метода в переменной User будет записано имя пользователя, создавшего процесс (владельца процесса), а в переменной Domain — имя домена, в котором запущен этот процесс
    GetOwnerSid(Sid) Позволяет получить в переменной Sid идентификатор безопасности (Security IDentifier, SID) владельца процесса
    SetPriority(Priority) Устанавливает приоритет процесса. Числовой параметр Priority определяет требуемый приоритет и может принимать следующие значения: 64 (низкий), 16 384 (ниже среднего), 32 (средний), 32 768 (выше среднего), 128 (высокий), 256 (процесс выполняется в реальном времени)
    Terminate(Reason) Завершает процесс и все его потоки. Числовой параметр Reason задает код выхода, который будет сообщен операционной системе после завершения процесса

    Таким образом, методы класса Win32_Process позволяют выполнять над процессами те же действия, которые можно осуществить в Диспетчере задач Windows с помощью контекстного меню, появляющегося после щелчка правой кнопкой мыши над выделенным процессом в списке (см. рис. 11.5), и кнопки Завершить процесс (Terminate process).

    (рис 11.5) Контекстное меню, позволяющее выполнять действия над определенным процессом

    Квалификаторы классов, свойств и методов

    В WMI для классов, свойств и методов можно задать так называемые квалификаторы (qualifiers). Квалификаторы содержат дополнительную информацию о том классе, свойстве или методе, в котором они определены.

    Квалификаторы классов

    Квалификаторы классов предоставляют информацию о классе в целом. Например, тип класса описывает квалификаторы логического типа CIM_BOOLEAN с именами abstract (абстрактный класс), dynamic (динамический класс) и association (ассоциативный класс).

    Один и тот же класс в различных операционных системах может иметь разное количество квалификаторов (версия WMI, поставляемая с Windows XP, соответствует спецификации CIM 2.5, а версии WMI в Windows 2000 и ниже – спецификации CIM 2.0). Для примера в таблице 11.5. приведено описание квалификаторов для класса Win32_Service в Windows XP.

    Квалификаторы класса Win32_Service
    Квалификатор Тип Значение Описание
    Dynamic CIM_BOOLEAN True Тип класса
    Locale CIM_SINT32 1033 Язык по умолчанию для класса или экземпляра класса
    Provider CIM_STRING CIMWin32 Имя провайдера класса
    SupportsUpdate CIM_BOOLEAN True Указывает на то, что класс поддерживает операцию изменения (обновления) экземпляров
    UUID CIM_STRING {8502C4D9-5FBB-11D2-AAC1-006008C78BC7} Универсальный уникальный идентификатор класса

    Класс Win32_Process позволяет создавать новые процессы и завершать уже существующие, поэтому в данном классе появляется несколько новых квалификаторов (табл. 11.6).

    Квалификаторы класса Win32_Process
    Квалификатор Тип Значение Описание
    CreateBy CIM_STRING Create Название метода, при помощи которого создается экземпляр класса
    DeleteBy CIM_STRING DeleteInstance Название метода, при помощи которого уничтожается экземпляр класса
    Dynamic CIM_BOOLEAN True Тип класса
    Locale CIM_SINT32 1033 Язык по умолчанию для класса или экземпляра класса
    Provider CIM_STRING CIMWin32 Имя провайдера класса
    SupportsCreate CIM_BOOLEAN True Указывает на то, что класс поддерживает операцию создания экземпляров
    SupportsDelete CIM_BOOLEAN True Указывает на то, что класс поддерживает операцию уничтожения экземпляров
    UUID CIM_STRING {8502C4DC-5FBB-11D2-AAC1-006008C78BC7} Универсальный уникальный идентификатор класса

    Квалификаторы свойств

    Квалификаторы свойств позволяют определить тип данного свойства (квалификатор CIMType ), доступность его для чтения (квалификатор Read ) и записи (квалификатор Write ) и т. п. Для примера в табл. 11.7 приведено описание квалификаторов свойства ServiceType класса Win32_Service (напомним, что это свойство описывает тип службы).

    Квалификаторы свойства ServiceType класса Win32_Service
    Квалификатор Тип Значение Описание
    CIMType CIM_STRING String Тип свойства
    MappingStrings CIM_STRING | CIM_FLAG_ARRAY Win32API| Service Structures| QUERY_SERVICE_CONFIG| dwServiceType Множество значений (ключевых слов), по которым можно найти дополнительную информацию о данном свойстве
    Read CIM_BOOLEAN True Указывает на то, что свойство доступно для чтения
    ValueMap CIM_STRING | CIM_FLAG_ARRAY Kernel Driver, File System Driver, Adapter, Recognizer Driver, Own Process, Share Process, Interactive Process Набор допустимых значений для свойства

    Замечание

    Напрямую с помощью метода Put_() можно изменять значения только тех свойств, у которых имеется квалификатор write со значением true.

    Квалификаторы методов

    Квалификаторы методов могут описывать множество допустимых значений, которые будут возвращаться методом (квалификатор ValueMap ), указывать права, которыми необходимо обладать для вызова метода (квалификатор Privileges ) и т. п. Для примера в табл. 11.8 приведено описание квалификаторов метода Create класса Win32_Process (напомним, что этот метод используется для запуска в системе нового процесса).

    Квалификаторы метода Create класса Win32_Process
    Квалификатор Тип Значение Описание
    Constructor CIM_BOOLEAN True Указывает на то, что данный метод используется для создания экземпляров класса
    Implemented CIM_BOOLEAN True Указывает на то, что данный метод реализован в провайдере
    MappingStrings CIM_STRING | CIM_FLAG_ARRAY Win32API| Process and Thread Functions| CreateProcess Множество значений (ключевых слов), по которым можно найти дополнительную информацию о данном методе
    Privileges CIM_STRING | CIM_FLAG_ARRAY SeAssignPrimaryTokenPrivilege, SeIncreaseQuotaPrivilege Перечисляет права, необходимые для выполнения данного метода
    Static CIM_BOOLEAN True Указывает на то, что данный метод не может быть вызван из экземпляра класса
    ValueMap CIM_STRING | CIM_FLAG_ARRAY 0, 2, 3, 8, 9, 21, .. Набор возвращаемых данным методом значений

    Замечание

    Выполнять можно только те методы, у которых имеется квалификатор Implemented со значением True.

    Интерактивная работа с объектами WMI

    При изучении WMI очень полезно с помощью графических утилит просматривать иерархическую структуру классов и связи между различными объектами CIM. Для просмотра объектной модели WMI можно воспользоваться специальный тестер WMI (стандартная программа в операционных системах Windows 2000/XP) или утилитами из разработанного Microsoft дополнительного пакета WMI Tools.

    Тестер WMI (WBEMTest)

    Тестер WMI (wbemtest.exe) — это графическая утилита, с помощью которой можно взаимодействовать с инфраструктурой WMI на локальном или удаленном компьютере. С помощью тестера WMI можно решать следующие задачи:

  • подсоединяться к определенному пространству имен CIM;
  • создавать и удалять классы и экземпляры классов;
  • получать список имеющихся классов и экземпляров классов CIM;
  • просматривать и изменять свойства и квалификаторы классов или экземпляров классов;
  • выполнять методы классов и экземпляров классов;
  • составлять и выполнять запросы на языке WQL;
  • выводить код MOF для классов и экземпляров управляемых ресурсов.
  • Исполняемый файл wbemtest.exe является стандартным компонентом WMI в любой операционной системе; устанавливается он в каталог %SystemRoot%\System32\Wbem. После запуска этого файла появляется диалоговое окно Тестер инструментария управления Windows (Windows Management Instrumentation Tester), с помощью которого можно получить доступ ко всем функциям тестера WMI (рис. 11.6).

    (рис 11.6) Тестер WMI

    Сразу после запуска большинство кнопок этого диалогового окна недоступны — ими можно будет воспользоваться только после подключения к подсистеме WMI. До подключения можно установить флажок Включить все привилегии (Enable all privileges), что позволит средствами WMI выполнять операции, для которых необходимы специальные привилегии в операционных системах Windows NT/2000/XP (например, перезагрузку компьютера).

    Отметим, что работа с тестером WMI предполагает хорошее знание структуры CIM и умение составлять запросы на языке WQL. Для первоначального ознакомления и изучения структуры объектной модели WMI лучше воспользоваться пакетом WMI Tools.

    Административные утилиты WMI (WMI Tools)

    В состав разработанных Microsoft административных утилит WMI входят несколько приложений, имеющих сходный интерфейс.

  • WMI CIM Studio. Это наиболее универсальное приложение, которое может быть использовано для просмотра и редактирования в репозитории CIM классов и их экземпляров. С помощью WMI CIM Studio можно также выполнять методы классов и объектов, просматривать ассоциации между различными классами, выполнять запросы на языке WQL, генерировать и компилировать файлы MOF для классов и объектов. Короче говоря, утилита WMI CIM Studio обладает практически теми же возможностями, что и тестер WMI (wbemtest.exe), однако имеет гораздо более удобный интуитивный интерфейс. Как и работа с тестером WMI, использование WMI CIM Studio предполагает довольно хорошее знание структуры репозитория CIM и названий нужных классов.
  • WMI Object Browser. Эта утилита предназначена для просмотра и редактирования объектов (экземпляров классов) в репозитории CIM, а также для вызовов их методов. Особенностью WMI Object Browser является то, что информация об объектах представлена в виде иерархического дерева, где в качестве корневого объекта может использоваться произвольный экземпляр выбранного нами класса. Само дерево объектов строится с помощью ассоциированных классов, что помогает извлекать информацию об управляемых ресурсах, не обладая глубокими знаниями о структуре репозитория CIM и используемых классах.
  • WMI Event Registration Tool. Данная утилита предоставляет графический интерфейс для регистрации и конфигурирования постоянных потребителей событий WMI. Здесь можно создавать или изменять фильтры событий, определять постоянных потребителей и устанавливать связи между ними и фильтрами событий.
  • WMI Event Viewer. Это вспомогательное приложение является постоянным потребителем событий, позволяющим сортировать и просматривать подробную информацию о полученных событиях.
  • Если эти утилиты нужно установить в Windows 2000/XP/Server 2003, то инсталляционный файл WMITools.exe можно свободно скачать с сервера Microsoft (http://download.microsoft.com/download/.NetStandardServer/Install/V1.1/NT5XP/EN-US/WMITools.exe).

    В случае же Windows 9x/NT 4.0 необходимо установить комплект инструментальных средств разработки SDK WMI, в состав которого также входят все описанные утилиты. Инсталляционный файл wmisdk.exe можно свободно скачать с сервера Microsoft (http://download.microsoft.com/download/platformsdk/x86wmi/1.1/W9XNT4/ EN-US/wmisdk.exe).

    Административные утилиты WMI реализованы в виде элементов ActiveX, которые встроены в страницы HTML, поэтому для их корректной работы необходимо, чтобы в системе был установлен браузер Microsoft Internet Explorer 5.0/6.0. Кроме этого, пользователь, который производит установку утилит WMI на компьютер, должен обладать правами администратора.

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

    Для запуска любой из трех основных административных утилит WMI (WMI CIM Studio, WMI Object Browser или WMI Event Registration Tool) нужно выбрать соответствующий одноименный пункт в меню Пуск | Программы | WMI Tools (Start | Programs | WMI Tools). Первым шагом после запуска во всех этих утилитах является подключение к какому-либо пространству имен на локальном или удаленном компьютере с помощью диалогового окна Connect to namespace (рис. 11.7).

    (рис 11.7) Ввод пространства имен WMI для подключения

    По умолчанию в этом окне предлагается подключиться к пространству имен CIMV2 на локальном компьютере (root\CIMV2). Путь к нужному пространству имен на локальном или удаленном компьютере можно либо написать вручную, либо выбрать это пространство с помощью кнопки Browse For Namespace.

    Если компьютер, к которому предполагается подключиться, доступен в сети, то его можно найти и выбрать с помощью кнопки Network Neighborhood.

    После ввода в поле Machine Name имени нужного компьютера, следует выбрать интересующее нас пространство имен из списка. Для этого нужно в поле Starting Namespace написать название корневого пространства имен (обычно это Root) и нажать на кнопку Connect. В результате на экран выводится диалоговое окно Login (в заголовке этого окна отображается также название запущенного приложения), в котором можно указать имя пользователя и пароль для учетной записи, от имени которой происходит подключение к пространству имен (рис. 11.8).

    (рис 11.8) Диалоговое окно WMI CIM Studio Login

    Напомним, что к пространству имен на локальном компьютере может получить доступ только текущий пользователь, поэтому в случае локальной машины флажок Login as current user установлен, а поля Username, Password и Authority недоступны для редактирования. К пространству имен на удаленной машине можно подключаться как от имени текущего пользователя (для этого следует установить флажок Login as current user), так и от имени другого пользователя (в этом случае нужно снять флажок Login as current user и внести в поля Username и Password имя пользователя в виде domain\user и пароль соответственно).

    Также в окне Login с помощью кнопки Options>> можно настроить дополнительные параметры подключения к инфраструктуре WMI (задать уровни олицетворения и проверки подлинности протокола DCOM, а также указать требуемые привилегии операционной системы).

    После нажатия кнопки OK в окне Login и подключения к структуре WMI на нужном компьютере, в окне Browse For Namespace появится иерархический список всех классов из репозитория CIM на этом компьютере (рис. 11.9).

    (рис 11.9) Выбор нужного пространства имен из списка

    Выбрав требуемое пространство имен из списка и нажав кнопку OK, мы вновь попадаем в диалоговое окно Login (см. рис. 11.8), где нужно ввести необходимую информацию и нажать кнопку OK.

    Замечание

    Независимо от способа подключения пользователь должен иметь доступ к выбранному пространству имен WMI.

    Для изучения структуры классов WMI можно воспользоваться утилитой WMI CIM Studio или WMI Object Browser.

    WMI CIM Studio

    Утилита WMI CIM Studio является универсальным инструментом при работе со схемой CIM, которая позволяет:

  • осуществлять навигацию по иерархическому дереву классов CIM;
  • формировать список всех экземпляров определенного класса;
  • добавлять новые и удалять существующие классы или экземпляры классов (объекты);
  • просматривать и изменять (если это возможно) свойства, методы, квалификаторы и ассоциации классов или объектов;
  • выполнять методы классов или объектов;
  • генерировать для класса или объекта его описание на языке MOF и компилировать имеющийся MOF-файл в репозиторий CIM.
  • Приложение WMI CIM Studio реализовано в виде двух окон, которые открываются в браузере Internet Explorer (рис. 11.10).

    (рис 11.10) Главное окно утилиты WMI CIM Studio

    Левое окно называется проводником классов (Class Explorer), а правое — просмотрщиком классов (Class Viewer). Выбрав класс в левом окне, можно просмотреть информацию о нем в правом окне.

    WMI Object Browser

    Утилита WMI Object Browser позволяет осуществлять навигацию по иерархическому дереву объектов WMI, просматривать и редактировать (если это возможно) свойства, методы, квалификаторы и ассоциации экземпляров классов, а также выполнять методы этих экземпляров. Главное отличие WMI Object Browser от WMI CIM Studio состоит в том, что в WMI CIM Studio мы пользуемся списком классов CIM в выбранном пространстве имен WMI, а в WMI Object Browser на экран выводится дерево объектов, причем в качестве корневого объекта здесь может использоваться произвольный экземпляр выбранного нами класса, а само дерево объектов строится с помощью ассоциативных классов (рис. 11.11).

    (рис 11.11) Утилита WMI Object Browser

    Можно сказать, что утилита WMI Object Browser разработана, в большей мере, для применения системными администраторами, которые могут не иметь детального представления о назначении конкретных классов WMI и о структуре CIM вообще. Здесь вся информация (схема), которая содержится в репозитории CIM, представлена в более понятном и наглядном виде, чем в WMI CIM Studio. Например, по умолчанию корневым объектом в пространстве имен CIMV2 на локальном или удаленном компьютере является экземпляр класса Win32_ComputerSystem, у которого значение свойства Name совпадает с именем этого компьютера. Поэтому в корне дерева стоит объект с именем компьютера, а ниже в иерархическом порядке располагаются все его зависимые объекты (логические и физические компоненты этого компьютере).

    Таким образом, даже человеку, который не владеет глубокими знаниями о схеме классов WMI, в WMI Object Browser наглядно видно представление компьютера в качестве дерева его составных частей, причем каждую часть здесь можно детально изучить и произвести с ней необходимые манипуляции, не прибегая к помощи никаких дополнительных программных средств.

    Напомним, что для запуска WMI Object Browser, как и других административных утилит WMI, нужно выбрать одноименный пункт в меню Пуск | Программы | WMI Tools (Start | Programs | WMI Tools), после чего производится подключение к нужному пространству имен на локальном или удаленном компьютере.

    Внешне утилита WMI Object Browser очень похожа на WMI CIM Studio, здесь также имеются два окна, которые открываются в браузере Internet Explorer (см. рис. 11.11). Левое окно называется проводником объектов (Object Explorer), а правое — просмотрщиком объектов (Object Viewer). Выбрав объект в левом окне, можно просмотреть информацию о нем в правом окне.

    Страницы:

    Структура классов WMI

    Напомним, что всякому ресурсу, управляемому с помощью WMI, соответствует специальный класс WMI; каждый класс имеет четко определенную структуру и содержит свойства, методы и квалификаторы (свои квалификаторы могут быть также у свойств и методов). Классы описываются с помощью специального языка MOF (Managed Object Format), который, в свою очередь, базируется на языке IDL (Interface Definition Language), применяемом для описания интерфейсов COM-объектов. После определения структуры класса с помощью MOF разработчик может добавить откомпилированное представление этого класса в репозиторий CIM с помощью стандартной утилиты mofcomp.exe.

    Подробнее понятия свойств, методов и квалификаторов будут обсуждаться далее, а начнем мы с типизации классов CIM.

    Основные типы классов CIM

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

  • Абстрактный класс (abstract class) — это шаблон, который служит исключительно для образования новых классов-потомков (абстрактных и неабстрактных). Абстрактный класс не может непосредственно использоваться для получения экземпляра управляемого ресурса.
  • Статический класс (static class) определяет данные, которые физически хранятся в репозитории CIM (к такому типу относятся, например, данные о собственных настройках WMI). Вследствие этого для доступа к экземплярам статических классов не нужно прибегать к помощи каких-либо провайдеров.
  • Динамический класс (dynamic class) моделирует управляемый ресурс, данные о котором соответствующий провайдер возвращает в динамическом режиме.
  • Кроме трех основных типов классов в CIM выделяется еще один специальный тип — ассоциативный класс (association class) — это абстрактный, статический или динамический класс, который описывает логическую связь между двумя классами или управляемыми ресурсами (например, ассоциативный класс Win32_SystemProcesses связывает класс Win32_Process, экземпляры которого соответствуют запущенным в системе процессам, с классом Win32_ComputerSystem, в котором представлены общие настройки компьютерной системы).

    Кроме этого, все классы CIM можно разделить на четыре группы по принадлежности к различным информационным моделям.

  • Системные классы. Системными называются те классы, которые служат для задания конфигурации и выполнения внутренних функций WMI (определение пространств имен, обеспечение безопасности при работе с пространствами имен, регистрация провайдеров, подписка на события WMI и формирование сообщений о наступлении таких событий). Системные классы могут быть абстрактными или статическими. Системные классы можно легко отличить от других по названию — имена всех системных классов начинаются с символов "__" (двойное подчеркивание), например, __SystemClass, __NAMESPACE, __Provider или __Win32Provider.
  • Классы модели ядра (основной модели) (core model). К этой модели относятся абстрактные классы, которые обеспечивают интерфейс со всеми областями управления. Названия таких классов начинаются с префикса "CIM_". Примерами классов модели ядра могут служить класс CIM_ManagedSystemElement (свойства этого класса идентифицируют управляемые компоненты системы) и его наследники CIM_LogicalElement (описание логического управляемого ресурса, например, файла или каталога) и CIM_PhysicalElement (описание физического управляемого ресурса, например, периферийного устройства).
  • Классы общей модели (common model). Общая модель является расширением основной модели — здесь представлены классы, которые являются специфическими для задач управления, но не зависят от конкретной технологии или реализации (другими словами, не зависят от типа операционной системы). Названия таких классов, как и классов модели ядра, начинаются с "CIM_". Класс CIM_LogicalFile (наследник класса CIM_LogicalElement ), описывающий файл, является примером класса общей модели, т. к. файловая система присутствует практически в любой операционной системе.
  • Классы модели расширения (extension model). Эта категория классов включает в себя специфические для каждой технологии или реализации дополнения к общей модели. В WMI определено большое количество классов, которые соответствуют ресурсам, специфическим для среды Win32 (имена этих классов начинаются с префикса "Win32_" ). Например, классы Win32_PageFile и Win32_ShortCutFile, которые описывают соответственно файлы подкачки Windows и файлы-ярлыки, являются потомками класса CIM_LogicalFile из общей модели.
  • Свойства классов WMI

    Свойства классов используются для однозначной идентификации экземпляра класса, представляющего конкретный управляемый ресурс, а также для описания текущего состояния этого ресурса. Рассмотрим два простых примера — классы из пространства имен CIMV2, являющиеся шаблонами для служб и процессов Windows.

    Напомним, что для просмотра списка всех служб, установленных на компьютере, можно воспользоваться оснасткой Службы (Services) консоли управления MMC (рис. 11.1).

    (рис 11.1) Службы, зарегистрированные на локальном компьютере

    Параметры определенной службы можно просматривать и изменять с помощью диалогового окна с несколькими вкладками, которое появляется после выбора этой службы в правом окне консоли (рис. 11.2).

    (рис 11.2) Параметры службы Журнал событий (Event Log)

    Службам Windows в WMI соответствуют экземпляры класса Win32_Service; основные свойства этого класса приведены в табл. 11.1.

    Некоторые свойства класса Win32_Service
    Свойство Описание
    AcceptPause Свойство логического типа, значение которого равно True, если службу можно приостановить, и равно False в противном случае
    AcceptStop Свойство логического типа, значение которого равно True, если службу можно остановить, и равно False в противном случае
    Caption Краткое описание службы
    Description Полное описание службы
    DesktopInteract Свойство логического типа, значение которого равно True, если служба может взаимодействовать с рабочим столом пользователей, и равно False в противном случае
    DisplayName Имя службы, которое выводится в списке служб
    ErrorControl Строка, задающая действие программы загрузки, которое будет выполнено в случае возникновения сбоя при запуске службы во время загрузки операционной системы: Ignore — пользователю не будет выведено никаких сообщений о сбое, Normal — будет выведено сообщение о сбое при запуске службы, Critical — система попытается автоматически произвести перезагрузку в хорошей конфигурации, Unknown — действие для подобного типа ошибок не определено
    Name Имя службы
    PathName Полный путь к бинарному файлу, соответствующему службе
    ProcessId Уникальный идентификатор службы
    ServiceType Строка, описывающая тип службы: Kernel Driver, File System Driver, Adapter, Recognizer Driver, Own Process, Share Process, Interactive Process
    Started Свойство логического типа, значение которого равно True, если служба была запущена, и равно False в противном случае
    StartMode Строка, описывающая способ загрузки службы: Boot (применяется только при загрузке служб для драйверов), System (применяется только при загрузке служб для драйверов), Auto (служба загружается автоматически), Manual (служба может быть запущена вручную), Disabled (службу запустить нельзя)
    StartName Учетная запись, от имени которой запускается служба
    State Текущее состояние службы: Stopped (остановлена), Start Pending (стартует), Stop Pending (останавливается), Running (запущена), Continue Pending (возвращается в активное состояние), Pause Pending (приостанавливается), Paused (приостановлена), Unknown (состояние службы определить не удалось)
    WaitHint Примерное время (в миллисекундах), необходимое для выполнения операций приостановки, остановки или запуска службы

    Как мы видим, многие свойства класса Win32_Service соответствуют элементам ввода в диалоговом окне свойств службы. Например, для экземпляра класса Win32_Service, который представляет службу Журнал событий (Event Viewer) свойства Name, DisplayName, Description и StartMode равны соответственно Eventlog, Журнал событий, Обеспечивает поддержку сообщений журналов событий, выдаваемых Windows-программами и компонентами системы, и просмотр этих сообщений. Эта служба не может быть остановлена и Авто (см. рис. 11.2).

    Рассмотрим теперь класс Win32_Process, экземпляры которого соответствуют запущенным в операционной системе процессам. Напомним, что информацию о всех процессах можно получить с помощью Диспетчера задач (Task Manager), запускаемого нажатием клавиш <Ctrl>+<Alt>+<Del> (рис. 11.3).

    (рис 11.3) Процессы, запущенные на локальном компьютере

    Количество выводимых на экран параметров для процессов зависит от настроек Диспетчера задач (Task Manager): выбрав в меню Вид (View) пункт Выбрать столбцы (Choose columns), можно отметить интересующие нас параметры (рис. 11.4).

    (рис 11.4) Настройка выводимых параметров для процессов

    Параметрам запущенного процесса соответствуют свойства класса Win32_Process ; некоторые из этих свойств приведены в табл. 11.2.

    Некоторые свойства класса Win32_Process
    СвойствоОписание
    Caption Короткое текстовое описание процесса
    CommandLine Командная строка, используемая для запуска процесса
    CreationDate Время начала выполнения процесса
    Description Полное описание процесса
    ExecutablePath Полный путь к исполняемому файлу процесса
    HandleCount Общее количество дескрипторов, открытых в настоящее время процессом (равно общему количеству дескрипторов, открытых каждым потоком в процессе)
    MaximumWorkingSetSize Максимально возможный размер рабочего набора процесса (рабочий набор процесса — это набор страниц, доступных процессу в физической оперативной памяти)
    MinimumWorkingSetSize Минимально возможный размер рабочего набора процесса
    Name Имя процесса
    OtherOperationCount Число выполненных операций ввода/вывода, отличных от операции чтения или записи
    OtherTransferCount Размер данных, переданных в процессе выполнения операций, отличных от операции чтения или записи
    PageFileUsage Размер части файла подкачки, которая используется процессом в настоящее время
    ParentProcessID Уникальный идентификатор родительского процесса, создавшего данный процесс
    PeakPageFileUsage Максимальный размер части файла подкачки, которая использовалась процессом за все время его работы
    PeakVirtualSize Максимальное значение размера виртуального адресного пространства, которое использовалось процессом единовременно
    PeakWorkingSetSize Максимальное значение размера рабочего набора процесса за все время работы
    Priority Приоритет процесса (минимальному приоритету соответствует значение 0, максимальному — 31)
    ProcessID Уникальный идентификатор процесса. Значение этого свойства актуально с момента создания процесса до окончания его работы
    ReadOperationCount Число выполненных процессом операций чтения
    ReadTransferCount Размер прочитанных данных
    ThreadCount Число активных потоков в процессе
    VirtualSize Текущий размер виртуального адресного пространства в байтах, используемого процессом
    WorkingSetSize Размер памяти в байтах, необходимый для успешного выполнения процесса в операционной системе, использующей страничную организацию памяти
    WriteOperationCount Число выполненных процессом операций записи
    WriteTransferCount Размер записанных данных

    Отметим, что в основном в WMI свойства классов доступны только для чтения, однако значения определенных свойств в экземплярах некоторых классов можно изменять напрямую (для этого применяется специальный метод Put_() ). Например, в экземплярах класса Win32_LogicalDisk, которые соответствуют логическим дискам, можно изменять свойство VolumeName, где хранится метка соответствующего диска.

    Замечание

    Количество свойств, значения которых можно изменять, зависит от операционной системы. Например, в Windows 2000 для записи доступны только 39 свойств, а в Windows XP — 145 свойств.

    Для того чтобы узнать, является ли определенное свойство доступным для записи, нужно проверить значение квалификатора Write этого свойства.

    Методы классов WMI

    Методы класса позволяют выполнять те или иные действия над управляемым ресурсом, которому соответствует этот класс (так как не над каждым ресурсом можно производить какие-либо операции, то не у всякого класса есть методы). В табл. 11.3 и 11.4 описаны, например, методы, которые имеются у классов Win32_Service (службы Windows) и Win32_Process (процессы Windows).

    Методы класса Win32_Service
    Метод Описание
    StartService() Запускает службу
    StopService() Остановливает службу
    PauseService() Приостановливает службу
    ResumeService() Возобновляет работу службы
    UserControlService(n) Посылает службе заданный пользователем код n (число от 128 до 255)
    Create(Name, DisplayName, PathName, ServiceType, ErrorControl, StartMode, DesktopInteract, StartName, StartPassword, LoadOrderGroup, LoadOrderGroupDependencies, ServiceDependencies) Создает службу
    Change(DisplayName, PathName, ServiceType, ErrorControl, StartMode, DesktopInteract, StartName, StartPassword, LoadOrderGroup, LoadOrderGroupDependencies, ServiceDependencies) Изменяет параметры службы
    ChangeStartMode(StartMode) Изменяет тип загрузки службы. Символьный параметр StartMode может принимать следующие значения: Boot (применяется только при загрузке служб для драйверов), System (применяется только при загрузке служб для драйверов), Auto (служба загружается автоматически), Manual (служба может быть запущена вручную), Disabled (службу запустить нельзя)
    Delete() Удаляет существующую службу

    Таким образом, методы класса Win32_Service позволяют изменять значения некоторых свойств этого класса и выполнять манипуляции над конкретной службой: запускать ее, приостанавливать, останавливать и т. д.

    Перейдем к рассмотрению методов класса Win32_Process, которые описаны в табл. 11.4.

    Методы класса Win32_Process
    Метод Описание
    AttachDebugger() Запускает отладчик, установленный в системе по умолчанию, для отладки процесса
    Create(CommandLine, CurrentDirectory, ProcessStartupInformation, ProcessId) Создает новый не интерактивный процесс
    GetOwner(User,Domain) После выполнения этого метода в переменной User будет записано имя пользователя, создавшего процесс (владельца процесса), а в переменной Domain — имя домена, в котором запущен этот процесс
    GetOwnerSid(Sid) Позволяет получить в переменной Sid идентификатор безопасности (Security IDentifier, SID) владельца процесса
    SetPriority(Priority) Устанавливает приоритет процесса. Числовой параметр Priority определяет требуемый приоритет и может принимать следующие значения: 64 (низкий), 16 384 (ниже среднего), 32 (средний), 32 768 (выше среднего), 128 (высокий), 256 (процесс выполняется в реальном времени)
    Terminate(Reason) Завершает процесс и все его потоки. Числовой параметр Reason задает код выхода, который будет сообщен операционной системе после завершения процесса

    Таким образом, методы класса Win32_Process позволяют выполнять над процессами те же действия, которые можно осуществить в Диспетчере задач Windows с помощью контекстного меню, появляющегося после щелчка правой кнопкой мыши над выделенным процессом в списке (см. рис. 11.5), и кнопки Завершить процесс (Terminate process).

    (рис 11.5) Контекстное меню, позволяющее выполнять действия над определенным процессом

    Квалификаторы классов, свойств и методов

    В WMI для классов, свойств и методов можно задать так называемые квалификаторы (qualifiers). Квалификаторы содержат дополнительную информацию о том классе, свойстве или методе, в котором они определены.

    Квалификаторы классов

    Квалификаторы классов предоставляют информацию о классе в целом. Например, тип класса описывает квалификаторы логического типа CIM_BOOLEAN с именами abstract (абстрактный класс), dynamic (динамический класс) и association (ассоциативный класс).

    Один и тот же класс в различных операционных системах может иметь разное количество квалификаторов (версия WMI, поставляемая с Windows XP, соответствует спецификации CIM 2.5, а версии WMI в Windows 2000 и ниже – спецификации CIM 2.0). Для примера в таблице 11.5. приведено описание квалификаторов для класса Win32_Service в Windows XP.

    Квалификаторы класса Win32_Service
    Квалификатор Тип Значение Описание
    Dynamic CIM_BOOLEAN True Тип класса
    Locale CIM_SINT32 1033 Язык по умолчанию для класса или экземпляра класса
    Provider CIM_STRING CIMWin32 Имя провайдера класса
    SupportsUpdate CIM_BOOLEAN True Указывает на то, что класс поддерживает операцию изменения (обновления) экземпляров
    UUID CIM_STRING {8502C4D9-5FBB-11D2-AAC1-006008C78BC7} Универсальный уникальный идентификатор класса

    Класс Win32_Process позволяет создавать новые процессы и завершать уже существующие, поэтому в данном классе появляется несколько новых квалификаторов (табл. 11.6).

    Квалификаторы класса Win32_Process
    Квалификатор Тип Значение Описание
    CreateBy CIM_STRING Create Название метода, при помощи которого создается экземпляр класса
    DeleteBy CIM_STRING DeleteInstance Название метода, при помощи которого уничтожается экземпляр класса
    Dynamic CIM_BOOLEAN True Тип класса
    Locale CIM_SINT32 1033 Язык по умолчанию для класса или экземпляра класса
    Provider CIM_STRING CIMWin32 Имя провайдера класса
    SupportsCreate CIM_BOOLEAN True Указывает на то, что класс поддерживает операцию создания экземпляров
    SupportsDelete CIM_BOOLEAN True Указывает на то, что класс поддерживает операцию уничтожения экземпляров
    UUID CIM_STRING {8502C4DC-5FBB-11D2-AAC1-006008C78BC7} Универсальный уникальный идентификатор класса

    Квалификаторы свойств

    Квалификаторы свойств позволяют определить тип данного свойства (квалификатор CIMType ), доступность его для чтения (квалификатор Read ) и записи (квалификатор Write ) и т. п. Для примера в табл. 11.7 приведено описание квалификаторов свойства ServiceType класса Win32_Service (напомним, что это свойство описывает тип службы).

    Квалификаторы свойства ServiceType класса Win32_Service
    Квалификатор Тип Значение Описание
    CIMType CIM_STRING String Тип свойства
    MappingStrings CIM_STRING | CIM_FLAG_ARRAY Win32API| Service Structures| QUERY_SERVICE_CONFIG| dwServiceType Множество значений (ключевых слов), по которым можно найти дополнительную информацию о данном свойстве
    Read CIM_BOOLEAN True Указывает на то, что свойство доступно для чтения
    ValueMap CIM_STRING | CIM_FLAG_ARRAY Kernel Driver, File System Driver, Adapter, Recognizer Driver, Own Process, Share Process, Interactive Process Набор допустимых значений для свойства

    Замечание

    Напрямую с помощью метода Put_() можно изменять значения только тех свойств, у которых имеется квалификатор write со значением true.

    Квалификаторы методов

    Квалификаторы методов могут описывать множество допустимых значений, которые будут возвращаться методом (квалификатор ValueMap ), указывать права, которыми необходимо обладать для вызова метода (квалификатор Privileges ) и т. п. Для примера в табл. 11.8 приведено описание квалификаторов метода Create класса Win32_Process (напомним, что этот метод используется для запуска в системе нового процесса).

    Квалификаторы метода Create класса Win32_Process
    Квалификатор Тип Значение Описание
    Constructor CIM_BOOLEAN True Указывает на то, что данный метод используется для создания экземпляров класса
    Implemented CIM_BOOLEAN True Указывает на то, что данный метод реализован в провайдере
    MappingStrings CIM_STRING | CIM_FLAG_ARRAY Win32API| Process and Thread Functions| CreateProcess Множество значений (ключевых слов), по которым можно найти дополнительную информацию о данном методе
    Privileges CIM_STRING | CIM_FLAG_ARRAY SeAssignPrimaryTokenPrivilege, SeIncreaseQuotaPrivilege Перечисляет права, необходимые для выполнения данного метода
    Static CIM_BOOLEAN True Указывает на то, что данный метод не может быть вызван из экземпляра класса
    ValueMap CIM_STRING | CIM_FLAG_ARRAY 0, 2, 3, 8, 9, 21, .. Набор возвращаемых данным методом значений

    Замечание

    Выполнять можно только те методы, у которых имеется квалификатор Implemented со значением True.

    Интерактивная работа с объектами WMI

    При изучении WMI очень полезно с помощью графических утилит просматривать иерархическую структуру классов и связи между различными объектами CIM. Для просмотра объектной модели WMI можно воспользоваться специальный тестер WMI (стандартная программа в операционных системах Windows 2000/XP) или утилитами из разработанного Microsoft дополнительного пакета WMI Tools.

    Тестер WMI (WBEMTest)

    Тестер WMI (wbemtest.exe) — это графическая утилита, с помощью которой можно взаимодействовать с инфраструктурой WMI на локальном или удаленном компьютере. С помощью тестера WMI можно решать следующие задачи:

  • подсоединяться к определенному пространству имен CIM;
  • создавать и удалять классы и экземпляры классов;
  • получать список имеющихся классов и экземпляров классов CIM;
  • просматривать и изменять свойства и квалификаторы классов или экземпляров классов;
  • выполнять методы классов и экземпляров классов;
  • составлять и выполнять запросы на языке WQL;
  • выводить код MOF для классов и экземпляров управляемых ресурсов.
  • Исполняемый файл wbemtest.exe является стандартным компонентом WMI в любой операционной системе; устанавливается он в каталог %SystemRoot%\System32\Wbem. После запуска этого файла появляется диалоговое окно Тестер инструментария управления Windows (Windows Management Instrumentation Tester), с помощью которого можно получить доступ ко всем функциям тестера WMI (рис. 11.6).

    (рис 11.6) Тестер WMI

    Сразу после запуска большинство кнопок этого диалогового окна недоступны — ими можно будет воспользоваться только после подключения к подсистеме WMI. До подключения можно установить флажок Включить все привилегии (Enable all privileges), что позволит средствами WMI выполнять операции, для которых необходимы специальные привилегии в операционных системах Windows NT/2000/XP (например, перезагрузку компьютера).

    Отметим, что работа с тестером WMI предполагает хорошее знание структуры CIM и умение составлять запросы на языке WQL. Для первоначального ознакомления и изучения структуры объектной модели WMI лучше воспользоваться пакетом WMI Tools.

    Административные утилиты WMI (WMI Tools)

    В состав разработанных Microsoft административных утилит WMI входят несколько приложений, имеющих сходный интерфейс.

  • WMI CIM Studio. Это наиболее универсальное приложение, которое может быть использовано для просмотра и редактирования в репозитории CIM классов и их экземпляров. С помощью WMI CIM Studio можно также выполнять методы классов и объектов, просматривать ассоциации между различными классами, выполнять запросы на языке WQL, генерировать и компилировать файлы MOF для классов и объектов. Короче говоря, утилита WMI CIM Studio обладает практически теми же возможностями, что и тестер WMI (wbemtest.exe), однако имеет гораздо более удобный интуитивный интерфейс. Как и работа с тестером WMI, использование WMI CIM Studio предполагает довольно хорошее знание структуры репозитория CIM и названий нужных классов.
  • WMI Object Browser. Эта утилита предназначена для просмотра и редактирования объектов (экземпляров классов) в репозитории CIM, а также для вызовов их методов. Особенностью WMI Object Browser является то, что информация об объектах представлена в виде иерархического дерева, где в качестве корневого объекта может использоваться произвольный экземпляр выбранного нами класса. Само дерево объектов строится с помощью ассоциированных классов, что помогает извлекать информацию об управляемых ресурсах, не обладая глубокими знаниями о структуре репозитория CIM и используемых классах.
  • WMI Event Registration Tool. Данная утилита предоставляет графический интерфейс для регистрации и конфигурирования постоянных потребителей событий WMI. Здесь можно создавать или изменять фильтры событий, определять постоянных потребителей и устанавливать связи между ними и фильтрами событий.
  • WMI Event Viewer. Это вспомогательное приложение является постоянным потребителем событий, позволяющим сортировать и просматривать подробную информацию о полученных событиях.
  • Если эти утилиты нужно установить в Windows 2000/XP/Server 2003, то инсталляционный файл WMITools.exe можно свободно скачать с сервера Microsoft (http://download.microsoft.com/download/.NetStandardServer/Install/V1.1/NT5XP/EN-US/WMITools.exe).

    В случае же Windows 9x/NT 4.0 необходимо установить комплект инструментальных средств разработки SDK WMI, в состав которого также входят все описанные утилиты. Инсталляционный файл wmisdk.exe можно свободно скачать с сервера Microsoft (http://download.microsoft.com/download/platformsdk/x86wmi/1.1/W9XNT4/ EN-US/wmisdk.exe).

    Административные утилиты WMI реализованы в виде элементов ActiveX, которые встроены в страницы HTML, поэтому для их корректной работы необходимо, чтобы в системе был установлен браузер Microsoft Internet Explorer 5.0/6.0. Кроме этого, пользователь, который производит установку утилит WMI на компьютер, должен обладать правами администратора.

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

    Для запуска любой из трех основных административных утилит WMI (WMI CIM Studio, WMI Object Browser или WMI Event Registration Tool) нужно выбрать соответствующий одноименный пункт в меню Пуск | Программы | WMI Tools (Start | Programs | WMI Tools). Первым шагом после запуска во всех этих утилитах является подключение к какому-либо пространству имен на локальном или удаленном компьютере с помощью диалогового окна Connect to namespace (рис. 11.7).

    (рис 11.7) Ввод пространства имен WMI для подключения

    По умолчанию в этом окне предлагается подключиться к пространству имен CIMV2 на локальном компьютере (root\CIMV2). Путь к нужному пространству имен на локальном или удаленном компьютере можно либо написать вручную, либо выбрать это пространство с помощью кнопки Browse For Namespace.

    Если компьютер, к которому предполагается подключиться, доступен в сети, то его можно найти и выбрать с помощью кнопки Network Neighborhood.

    После ввода в поле Machine Name имени нужного компьютера, следует выбрать интересующее нас пространство имен из списка. Для этого нужно в поле Starting Namespace написать название корневого пространства имен (обычно это Root) и нажать на кнопку Connect. В результате на экран выводится диалоговое окно Login (в заголовке этого окна отображается также название запущенного приложения), в котором можно указать имя пользователя и пароль для учетной записи, от имени которой происходит подключение к пространству имен (рис. 11.8).

    (рис 11.8) Диалоговое окно WMI CIM Studio Login

    Напомним, что к пространству имен на локальном компьютере может получить доступ только текущий пользователь, поэтому в случае локальной машины флажок Login as current user установлен, а поля Username, Password и Authority недоступны для редактирования. К пространству имен на удаленной машине можно подключаться как от имени текущего пользователя (для этого следует установить флажок Login as current user), так и от имени другого пользователя (в этом случае нужно снять флажок Login as current user и внести в поля Username и Password имя пользователя в виде domain\user и пароль соответственно).

    Также в окне Login с помощью кнопки Options>> можно настроить дополнительные параметры подключения к инфраструктуре WMI (задать уровни олицетворения и проверки подлинности протокола DCOM, а также указать требуемые привилегии операционной системы).

    После нажатия кнопки OK в окне Login и подключения к структуре WMI на нужном компьютере, в окне Browse For Namespace появится иерархический список всех классов из репозитория CIM на этом компьютере (рис. 11.9).

    (рис 11.9) Выбор нужного пространства имен из списка

    Выбрав требуемое пространство имен из списка и нажав кнопку OK, мы вновь попадаем в диалоговое окно Login (см. рис. 11.8), где нужно ввести необходимую информацию и нажать кнопку OK.

    Замечание

    Независимо от способа подключения пользователь должен иметь доступ к выбранному пространству имен WMI.

    Для изучения структуры классов WMI можно воспользоваться утилитой WMI CIM Studio или WMI Object Browser.

    WMI CIM Studio

    Утилита WMI CIM Studio является универсальным инструментом при работе со схемой CIM, которая позволяет:

  • осуществлять навигацию по иерархическому дереву классов CIM;
  • формировать список всех экземпляров определенного класса;
  • добавлять новые и удалять существующие классы или экземпляры классов (объекты);
  • просматривать и изменять (если это возможно) свойства, методы, квалификаторы и ассоциации классов или объектов;
  • выполнять методы классов или объектов;
  • генерировать для класса или объекта его описание на языке MOF и компилировать имеющийся MOF-файл в репозиторий CIM.
  • Приложение WMI CIM Studio реализовано в виде двух окон, которые открываются в браузере Internet Explorer (рис. 11.10).

    (рис 11.10) Главное окно утилиты WMI CIM Studio

    Левое окно называется проводником классов (Class Explorer), а правое — просмотрщиком классов (Class Viewer). Выбрав класс в левом окне, можно просмотреть информацию о нем в правом окне.

    WMI Object Browser

    Утилита WMI Object Browser позволяет осуществлять навигацию по иерархическому дереву объектов WMI, просматривать и редактировать (если это возможно) свойства, методы, квалификаторы и ассоциации экземпляров классов, а также выполнять методы этих экземпляров. Главное отличие WMI Object Browser от WMI CIM Studio состоит в том, что в WMI CIM Studio мы пользуемся списком классов CIM в выбранном пространстве имен WMI, а в WMI Object Browser на экран выводится дерево объектов, причем в качестве корневого объекта здесь может использоваться произвольный экземпляр выбранного нами класса, а само дерево объектов строится с помощью ассоциативных классов (рис. 11.11).

    (рис 11.11) Утилита WMI Object Browser

    Можно сказать, что утилита WMI Object Browser разработана, в большей мере, для применения системными администраторами, которые могут не иметь детального представления о назначении конкретных классов WMI и о структуре CIM вообще. Здесь вся информация (схема), которая содержится в репозитории CIM, представлена в более понятном и наглядном виде, чем в WMI CIM Studio. Например, по умолчанию корневым объектом в пространстве имен CIMV2 на локальном или удаленном компьютере является экземпляр класса Win32_ComputerSystem, у которого значение свойства Name совпадает с именем этого компьютера. Поэтому в корне дерева стоит объект с именем компьютера, а ниже в иерархическом порядке располагаются все его зависимые объекты (логические и физические компоненты этого компьютере).

    Таким образом, даже человеку, который не владеет глубокими знаниями о схеме классов WMI, в WMI Object Browser наглядно видно представление компьютера в качестве дерева его составных частей, причем каждую часть здесь можно детально изучить и произвести с ней необходимые манипуляции, не прибегая к помощи никаких дополнительных программных средств.

    Напомним, что для запуска WMI Object Browser, как и других административных утилит WMI, нужно выбрать одноименный пункт в меню Пуск | Программы | WMI Tools (Start | Programs | WMI Tools), после чего производится подключение к нужному пространству имен на локальном или удаленном компьютере.

    Внешне утилита WMI Object Browser очень похожа на WMI CIM Studio, здесь также имеются два окна, которые открываются в браузере Internet Explorer (см. рис. 11.11). Левое окно называется проводником объектов (Object Explorer), а правое — просмотрщиком объектов (Object Viewer). Выбрав объект в левом окне, можно просмотреть информацию о нем в правом окне.

    Вернуться к учебному плану