Обзор
Ну, WMI - это система, которая позволяет запрашивать информацию о машине.WMI состоит из множества различных провайдеров и классов, и у каждого класса могут быть свойства и методы, что мало чем отличается от .NET.Поставщики отвечают за возвращение классов.
Вы можете запрашивать WMI как локально, так и удаленно.Вот почему это считается инфраструктурой управления.ИТ-персонал может использовать WMI для получения информации и удаленного выполнения действий с WMI.Например, если вы хотите узнать, какие диски находятся на компьютере, вы можете выполнить запрос WQL, например, такой:
SELECT * FROM Win32_DiskDrive
, который вернет коллекцию Win32_DiskDrive и скажетВам информация об этом.Поскольку они являются объектами, у них тоже есть методы.
Иногда WMI может сообщить вам информацию о среде, в которой вы не можете получить эту информацию в другом месте, например, при использовании Win32_Mainboard для получения информации о материнской плате.
Сторонние разработчики могут написать своих собственных провайдеров и классов WMI, чтобы разрешить управление их приложением с помощью WMI, с чем ИТ-специалист, вероятно, уже знаком и не хочет изобретать велосипед.
Подробности
Поставщик - это COM-объект, который действует между WMI и объектом / классом управления.Классы определены в MOF (формат управляемого объекта).Таким образом, основная вещь заключается в том, что поставщик зарегистрирован как обработчик для класса, и когда запрашивается информация из этого класса, поставщик запускается.Как и .NET, объекты управления ограничены и определены в пространствах имен.Основная часть Microsoft находится в \ROOT\cimv2
.
. Провайдер будет реализовывать интерфейсы IWbemProviderInit
и IWbemProviderInitSink
.Здесь есть некоторые подробности
Поскольку это COM-объект, можно написать WMI-провайдер в .NET и использовать ComVisible
для его раскрытия.
После того как вы его разработали, вам нужно зарегистрировать его .Вы также можете подумать о том, чтобы зарегистрировать его перед разработкой и отладкой.
У Microsoft есть простой пример на http://msdn.microsoft.com/en-us/library/aa393677(v=vs.85).aspx.