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

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

< Лекция 10 || Лекция 11: 123 || Лекция 12 >

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

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

Таблица 11.3. Методы класса 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.

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

Таблица 11.5. Квалификаторы класса 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).

Таблица 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 (напомним, что это свойство описывает тип службы).

Таблица 11.7. Квалификаторы свойства 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 (напомним, что этот метод используется для запуска в системе нового процесса).

Таблица 11.8. Квалификаторы метода 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.

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

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

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

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

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

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

Дмитрий Матвеев
Дмитрий Матвеев
Россия, Москва, 1100, 2009