Опубликован: 12.01.2008 | Уровень: специалист | Доступ: свободно | ВУЗ: Мордовский государственный университет имени Н.П. Огарева
Лекция 11:

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

< Лекция 10 || Лекция 11: 123 || Лекция 12 >
Аннотация: Описываются основные типы классов информационной схемы CIM. Обсуждаются атрибуты классов WMI: свойства, методы, а также квалификаторы классов, свойств и методов. Рассматриваются инструменты для интерактивной работы с объектной моделью 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).

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

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

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

Таблица 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.

Таблица 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 этого свойства.

< Лекция 10 || Лекция 11: 123 || Лекция 12 >
Валентина Тюрина
Валентина Тюрина

Вопрос по лекции 7, где рассматривается взаимодействие со сторонними программами, в том числе эмуляция нажатия кнопок клавиатуры WshShell.SendKeys.

Вопрос в том что во время автоматизации может потребоваться не нажатие клавиатуры, а нажатие кнопок в сообщениях этих программ.

Можно вытащить информацию о объекте (кнопке) скажем с помощью AutoIt Info, или ориентироваться скажем на текст на кнопке..., но как на эту кнопку нажать? (без обхода по клавиатуре)

Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.