WMI 体系结构

WMI 为从计算机系统、网络或企业获取管理数据的任何本地或远程应用程序或脚本提供统一接口。 统一接口的设计使 WMI 客户端应用程序和脚本不必调用各种作系统应用程序编程接口(API)。 许多 API 不能由自动化客户端(如脚本或 Visual Basic 应用程序)调用。 其他 API 不调用远程计算机。

若要从 WMI 获取数据,请编写访问 WMI 类的客户端脚本或应用程序, 或通过编写 WMI 提供程序向 WMI 提供数据。 有关详细信息,请参阅 使用 WMI

WMI 的对象、使用者和基础结构

下图显示了 WMI 基础结构与 WMI 提供程序与托管对象之间的关系,还显示了 WMI 基础结构与 WMI 使用者之间的关系。

wmi 基础结构、wmi 提供程序和托管对象之间的关系

WMI 组件

以下列表描述了关键的 WMI 组件:

  • 托管对象和 WMI 提供程序

    WMI 提供程序是一个 COM 对象,用于监视 WMI 的一个或多个 托管对象。 托管对象是逻辑或物理企业组件,例如硬盘驱动器、网络适配器、数据库系统、作系统、进程或服务。

    与驱动程序类似,提供程序向 WMI 提供托管对象中的数据,并处理从 WMI 到托管对象的消息。 WMI 提供程序由 DLL 文件和 托管对象格式(MOF) 文件组成,该文件定义提供程序返回数据的类并执行作。 提供程序(如 WMI C++ 应用程序)使用适用于 WMI COM API。 有关详细信息,请参阅 向 WMI提供数据。

    提供程序的一个示例是预安装的 注册表提供程序,该提供程序访问系统注册表中的数据。 注册表提供程序有一个 WMI 类StdRegProv,有许多方法,但没有属性。 其他预安装的提供程序(如 Win32 提供程序)通常具有许多属性的类,但很少有方法,例如 Win32_ProcessWin32_LogicalDisk。 注册表提供程序 DLL 文件 Stdprov.dll包含客户端脚本或应用程序请求时动态返回数据的代码。

    WMI MOF 和 DLL 文件位于 %WINDIR%\System32\Wbem 中,以及 WMI Command-Line 工具,例如 Winmgmt.exeMofcomp.exe。 提供程序类(如 Win32_LogicalDisk)在 MOF 文件中定义,然后在系统启动时编译到 WMI 存储库中。

  • WMI 基础结构

    WMI 基础结构是一个Microsoft Windows作系统组件,称为 WMI 服务(winmgmt)。 WMI 基础结构有两个组件:WMI 核心和 WMI 存储库

    WMI 存储库由 WMI 命名空间组织。 WMI 服务在系统启动时创建一些命名空间,例如 root\default、root\cimv2 和 root\subscription,并预安装一组默认类定义,包括 win32 类、WMI 系统类等。 系统上找到的其余命名空间由作系统或产品的其他部分的提供程序创建。 有关详细信息和大多数作系统版本中发现的 WMI 提供程序列表,请参阅 WMI 提供程序

    WMI 服务充当提供程序、管理应用程序和 WMI 存储库之间的中介。 只有有关对象的静态数据存储在存储库中,例如提供程序定义的类。 当客户端请求数据时,WMI 会从提供程序动态获取大部分数据。 还可以设置订阅以接收来自提供程序的事件通知。 有关详细信息,请参阅 监视事件

  • WMI 使用者

    WMI 使用者是与 WMI 基础结构交互的管理应用程序或脚本。 管理应用程序可以通过调用 WMI COM API 或用于 WMI 脚本 API 来查询、枚举数据、运行提供程序方法或订阅事件。 提供程序提供的数据或作是唯一可用于托管对象(例如磁盘驱动器或服务)的数据或作。

使用 WMI

WMI 提供程序

创建 WMI 应用程序或脚本

脚本和应用程序的 WMI 任务

向 WMI 提供数据

WMI 类

监视事件

调用方法