Напомним, что всякому ресурсу, управляемому с помощью WMI, соответствует специальный класс WMI; каждый класс имеет четко определенную структуру и содержит свойства, методы и квалификаторы (свои квалификаторы могут быть также у свойств и методов). Классы описываются с помощью специального языка MOF (Managed
Подробнее понятия свойств, методов и квалификаторов будут обсуждаться далее, а начнем мы с типизации классов
В
Кроме трех основных типов классов в Win32_SystemProcesses связывает класс Win32_Process, экземпляры которого соответствуют запущенным в системе процессам, с классом Win32_ComputerSystem, в котором представлены общие настройки компьютерной системы).
Кроме этого, все классы
"__" (двойное подчеркивание), например, __SystemClass, __NAMESPACE, __Provider или __Win32Provider."CIM_". Примерами классов модели ядра могут служить класс CIM_ManagedSystemElement (свойства этого класса идентифицируют управляемые компоненты системы) и его наследники CIM_LogicalElement (описание логического управляемого ресурса, например, файла или каталога) и CIM_PhysicalElement (описание физического управляемого ресурса, например, периферийного устройства)."CIM_". Класс CIM_LogicalFile (наследник класса CIM_LogicalElement ), описывающий файл, является примером класса общей модели, т. к. файловая система присутствует практически в любой операционной системе."Win32_" ). Например, классы Win32_PageFile и Win32_ShortCutFile, которые описывают соответственно файлы подкачки Windows и файлы-ярлыки, являются потомками класса CIM_LogicalFile из общей модели.Свойства классов используются для однозначной идентификации экземпляра класса, представляющего конкретный управляемый ресурс, а также для описания текущего состояния этого ресурса. Рассмотрим два простых примера — классы из пространства имен CIMV2, являющиеся шаблонами для служб и процессов Windows.
Напомним, что для просмотра списка всех служб, установленных на компьютере, можно воспользоваться оснасткой Службы (Services) консоли управления MMC (рис. 11.1).
(рис 11.1) Службы, зарегистрированные на локальном компьютереПараметры определенной службы можно просматривать и изменять с помощью диалогового окна с несколькими вкладками, которое появляется после выбора этой службы в правом окне консоли (рис. 11.2).
(рис 11.2) Параметры службы Журнал событий (Event Log)Службам Windows в WMI соответствуют экземпляры класса Win32_Service; основные свойства этого класса приведены в табл. 11.1.
| Свойство | Описание |
|---|---|
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, |
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.
| Свойство | Описание |
|---|---|
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 этого свойства.
Методы класса позволяют выполнять те или иные действия над управляемым ресурсом, которому соответствует этот класс (так как не над каждым ресурсом можно производить какие-либо операции, то не у всякого класса есть методы). В табл. 11.3 и 11.4 описаны, например, методы, которые имеются у классов Win32_Service (службы Windows) и Win32_Process (процессы Windows).
| Метод | Описание |
|---|---|
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.
| Метод | Описание |
|---|---|
AttachDebugger() |
Запускает отладчик, установленный в системе по умолчанию, для отладки процесса |
Create(CommandLine, CurrentDirectory, ProcessStartupInformation, ProcessId) |
Создает новый не |
GetOwner(User,Domain) |
После выполнения этого метода в переменной User будет записано имя пользователя, создавшего процесс (владельца процесса), а в переменной Domain — имя домена, в котором запущен этот процесс |
GetOwnerSid(Sid) |
Позволяет получить в переменной 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, соответствует спецификации Win32_Service в Windows XP.
| Квалификатор | Тип | Значение | Описание |
|---|---|---|---|
Dynamic |
CIM_BOOLEAN |
True |
Тип класса |
Locale |
CIM_SINT32 |
1033 |
Язык по умолчанию для класса или экземпляра класса |
Provider |
CIM_STRING |
CIMWin32 |
Имя провайдера класса |
SupportsUpdate |
CIM_BOOLEAN |
True |
Указывает на то, что класс поддерживает операцию изменения (обновления) экземпляров |
|
CIM_STRING |
{8502C4D9-5FBB-11D2-AAC1-006008C78BC7} |
Универсальный уникальный идентификатор класса |
Класс Win32_Process позволяет создавать новые процессы и завершать уже существующие, поэтому в данном классе появляется несколько новых квалификаторов (табл. 11.6).
| Квалификатор | Тип | Значение | Описание |
|---|---|---|---|
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 |
Указывает на то, что класс поддерживает операцию уничтожения экземпляров |
|
CIM_STRING |
{8502C4DC-5FBB-11D2-AAC1-006008C78BC7} |
Универсальный уникальный идентификатор класса |
Квалификаторы свойств позволяют определить тип данного свойства (квалификатор CIMType ), доступность его для чтения (квалификатор Read ) и записи (квалификатор Write ) и т. п. Для примера в табл. 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, |
Набор допустимых значений для свойства |
Замечание
Напрямую с помощью метода Put_() можно изменять значения только тех свойств, у которых имеется квалификатор write со значением true.
Квалификаторы методов могут описывать множество допустимых значений, которые будут возвращаться методом (квалификатор ValueMap ), указывать права, которыми необходимо обладать для вызова метода (квалификатор Privileges ) и т. п. Для примера в табл. 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.
При изучении WMI очень полезно с помощью графических утилит просматривать иерархическую структуру классов и связи между различными объектами
Тестер WMI (wbemtest.exe) — это графическая утилита, с помощью которой можно взаимодействовать с инфраструктурой WMI на локальном или удаленном компьютере. С помощью тестера WMI можно решать следующие задачи:
Исполняемый файл 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 предполагает хорошее знание структуры
В состав разработанных Microsoft административных утилит WMI входят несколько приложений, имеющих сходный интерфейс.
Если эти утилиты нужно установить в 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
(рис 11.7) Ввод пространства имен WMI для подключенияПо умолчанию в этом окне предлагается подключиться к пространству имен CIMV2 на локальном компьютере (root\CIMV2). Путь к нужному пространству имен на локальном или удаленном компьютере можно либо написать вручную, либо выбрать это пространство с помощью кнопки Browse For Namespace.
Если компьютер, к которому предполагается подключиться, доступен в сети, то его можно найти и выбрать с помощью кнопки
После ввода в поле 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 появится
(рис 11.9) Выбор нужного пространства имен из спискаВыбрав требуемое пространство имен из списка и нажав кнопку OK, мы вновь попадаем в диалоговое окно Login (см. рис. 11.8), где нужно ввести необходимую информацию и нажать кнопку OK.
Замечание
Независимо от способа подключения пользователь должен иметь доступ к выбранному пространству имен WMI.
Для изучения структуры классов WMI можно воспользоваться утилитой WMI
Утилита WMI
Приложение WMI
(рис 11.10) Главное окно утилиты WMI CIM StudioЛевое окно называется проводником классов (Class Explorer), а правое — просмотрщиком классов (Class Viewer). Выбрав класс в левом окне, можно просмотреть информацию о нем в правом окне.
Утилита WMI Object Browser позволяет осуществлять навигацию по иерархическому дереву объектов WMI, просматривать и редактировать (если это возможно) свойства, методы, квалификаторы и ассоциации экземпляров классов, а также выполнять методы этих экземпляров. Главное отличие WMI Object Browser от WMI
(рис 11.11) Утилита WMI Object BrowserМожно сказать, что утилита WMI Object Browser разработана, в большей мере, для применения системными администраторами, которые могут не иметь детального представления о назначении конкретных классов WMI и о структуре Win32_ComputerSystem, у которого значение свойства Name совпадает с именем этого компьютера. Поэтому в корне дерева стоит объект с именем компьютера, а ниже в иерархическом порядке располагаются все его зависимые объекты (логические и физические компоненты этого компьютере).
Таким образом, даже человеку, который не владеет глубокими знаниями о схеме классов WMI, в WMI Object Browser наглядно видно представление компьютера в качестве дерева его составных частей, причем каждую часть здесь можно детально изучить и произвести с ней необходимые манипуляции, не прибегая к помощи никаких дополнительных программных средств.
Напомним, что для запуска WMI Object Browser, как и других административных утилит WMI, нужно выбрать одноименный пункт в меню Пуск | Программы | WMI Tools (Start | Programs | WMI Tools), после чего производится подключение к нужному пространству имен на локальном или удаленном компьютере.
Внешне утилита WMI Object Browser очень похожа на WMI
Напомним, что всякому ресурсу, управляемому с помощью WMI, соответствует специальный класс WMI; каждый класс имеет четко определенную структуру и содержит свойства, методы и квалификаторы (свои квалификаторы могут быть также у свойств и методов). Классы описываются с помощью специального языка MOF (Managed
Подробнее понятия свойств, методов и квалификаторов будут обсуждаться далее, а начнем мы с типизации классов
В
Кроме трех основных типов классов в Win32_SystemProcesses связывает класс Win32_Process, экземпляры которого соответствуют запущенным в системе процессам, с классом Win32_ComputerSystem, в котором представлены общие настройки компьютерной системы).
Кроме этого, все классы
"__" (двойное подчеркивание), например, __SystemClass, __NAMESPACE, __Provider или __Win32Provider."CIM_". Примерами классов модели ядра могут служить класс CIM_ManagedSystemElement (свойства этого класса идентифицируют управляемые компоненты системы) и его наследники CIM_LogicalElement (описание логического управляемого ресурса, например, файла или каталога) и CIM_PhysicalElement (описание физического управляемого ресурса, например, периферийного устройства)."CIM_". Класс CIM_LogicalFile (наследник класса CIM_LogicalElement ), описывающий файл, является примером класса общей модели, т. к. файловая система присутствует практически в любой операционной системе."Win32_" ). Например, классы Win32_PageFile и Win32_ShortCutFile, которые описывают соответственно файлы подкачки Windows и файлы-ярлыки, являются потомками класса CIM_LogicalFile из общей модели.Свойства классов используются для однозначной идентификации экземпляра класса, представляющего конкретный управляемый ресурс, а также для описания текущего состояния этого ресурса. Рассмотрим два простых примера — классы из пространства имен CIMV2, являющиеся шаблонами для служб и процессов Windows.
Напомним, что для просмотра списка всех служб, установленных на компьютере, можно воспользоваться оснасткой Службы (Services) консоли управления MMC (рис. 11.1).
(рис 11.1) Службы, зарегистрированные на локальном компьютереПараметры определенной службы можно просматривать и изменять с помощью диалогового окна с несколькими вкладками, которое появляется после выбора этой службы в правом окне консоли (рис. 11.2).
(рис 11.2) Параметры службы Журнал событий (Event Log)Службам Windows в WMI соответствуют экземпляры класса Win32_Service; основные свойства этого класса приведены в табл. 11.1.
| Свойство | Описание |
|---|---|
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, |
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.
| Свойство | Описание |
|---|---|
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 этого свойства.
Методы класса позволяют выполнять те или иные действия над управляемым ресурсом, которому соответствует этот класс (так как не над каждым ресурсом можно производить какие-либо операции, то не у всякого класса есть методы). В табл. 11.3 и 11.4 описаны, например, методы, которые имеются у классов Win32_Service (службы Windows) и Win32_Process (процессы Windows).
| Метод | Описание |
|---|---|
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.
| Метод | Описание |
|---|---|
AttachDebugger() |
Запускает отладчик, установленный в системе по умолчанию, для отладки процесса |
Create(CommandLine, CurrentDirectory, ProcessStartupInformation, ProcessId) |
Создает новый не |
GetOwner(User,Domain) |
После выполнения этого метода в переменной User будет записано имя пользователя, создавшего процесс (владельца процесса), а в переменной Domain — имя домена, в котором запущен этот процесс |
GetOwnerSid(Sid) |
Позволяет получить в переменной 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, соответствует спецификации Win32_Service в Windows XP.
| Квалификатор | Тип | Значение | Описание |
|---|---|---|---|
Dynamic |
CIM_BOOLEAN |
True |
Тип класса |
Locale |
CIM_SINT32 |
1033 |
Язык по умолчанию для класса или экземпляра класса |
Provider |
CIM_STRING |
CIMWin32 |
Имя провайдера класса |
SupportsUpdate |
CIM_BOOLEAN |
True |
Указывает на то, что класс поддерживает операцию изменения (обновления) экземпляров |
|
CIM_STRING |
{8502C4D9-5FBB-11D2-AAC1-006008C78BC7} |
Универсальный уникальный идентификатор класса |
Класс Win32_Process позволяет создавать новые процессы и завершать уже существующие, поэтому в данном классе появляется несколько новых квалификаторов (табл. 11.6).
| Квалификатор | Тип | Значение | Описание |
|---|---|---|---|
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 |
Указывает на то, что класс поддерживает операцию уничтожения экземпляров |
|
CIM_STRING |
{8502C4DC-5FBB-11D2-AAC1-006008C78BC7} |
Универсальный уникальный идентификатор класса |
Квалификаторы свойств позволяют определить тип данного свойства (квалификатор CIMType ), доступность его для чтения (квалификатор Read ) и записи (квалификатор Write ) и т. п. Для примера в табл. 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, |
Набор допустимых значений для свойства |
Замечание
Напрямую с помощью метода Put_() можно изменять значения только тех свойств, у которых имеется квалификатор write со значением true.
Квалификаторы методов могут описывать множество допустимых значений, которые будут возвращаться методом (квалификатор ValueMap ), указывать права, которыми необходимо обладать для вызова метода (квалификатор Privileges ) и т. п. Для примера в табл. 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.
При изучении WMI очень полезно с помощью графических утилит просматривать иерархическую структуру классов и связи между различными объектами
Тестер WMI (wbemtest.exe) — это графическая утилита, с помощью которой можно взаимодействовать с инфраструктурой WMI на локальном или удаленном компьютере. С помощью тестера WMI можно решать следующие задачи:
Исполняемый файл 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 предполагает хорошее знание структуры
В состав разработанных Microsoft административных утилит WMI входят несколько приложений, имеющих сходный интерфейс.
Если эти утилиты нужно установить в 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
(рис 11.7) Ввод пространства имен WMI для подключенияПо умолчанию в этом окне предлагается подключиться к пространству имен CIMV2 на локальном компьютере (root\CIMV2). Путь к нужному пространству имен на локальном или удаленном компьютере можно либо написать вручную, либо выбрать это пространство с помощью кнопки Browse For Namespace.
Если компьютер, к которому предполагается подключиться, доступен в сети, то его можно найти и выбрать с помощью кнопки
После ввода в поле 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 появится
(рис 11.9) Выбор нужного пространства имен из спискаВыбрав требуемое пространство имен из списка и нажав кнопку OK, мы вновь попадаем в диалоговое окно Login (см. рис. 11.8), где нужно ввести необходимую информацию и нажать кнопку OK.
Замечание
Независимо от способа подключения пользователь должен иметь доступ к выбранному пространству имен WMI.
Для изучения структуры классов WMI можно воспользоваться утилитой WMI
Утилита WMI
Приложение WMI
(рис 11.10) Главное окно утилиты WMI CIM StudioЛевое окно называется проводником классов (Class Explorer), а правое — просмотрщиком классов (Class Viewer). Выбрав класс в левом окне, можно просмотреть информацию о нем в правом окне.
Утилита WMI Object Browser позволяет осуществлять навигацию по иерархическому дереву объектов WMI, просматривать и редактировать (если это возможно) свойства, методы, квалификаторы и ассоциации экземпляров классов, а также выполнять методы этих экземпляров. Главное отличие WMI Object Browser от WMI
(рис 11.11) Утилита WMI Object BrowserМожно сказать, что утилита WMI Object Browser разработана, в большей мере, для применения системными администраторами, которые могут не иметь детального представления о назначении конкретных классов WMI и о структуре Win32_ComputerSystem, у которого значение свойства Name совпадает с именем этого компьютера. Поэтому в корне дерева стоит объект с именем компьютера, а ниже в иерархическом порядке располагаются все его зависимые объекты (логические и физические компоненты этого компьютере).
Таким образом, даже человеку, который не владеет глубокими знаниями о схеме классов WMI, в WMI Object Browser наглядно видно представление компьютера в качестве дерева его составных частей, причем каждую часть здесь можно детально изучить и произвести с ней необходимые манипуляции, не прибегая к помощи никаких дополнительных программных средств.
Напомним, что для запуска WMI Object Browser, как и других административных утилит WMI, нужно выбрать одноименный пункт в меню Пуск | Программы | WMI Tools (Start | Programs | WMI Tools), после чего производится подключение к нужному пространству имен на локальном или удаленном компьютере.
Внешне утилита WMI Object Browser очень похожа на WMI
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.