WMI 体系结构

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

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

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

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

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

WMI 组件

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

  • 托管对象和 WMI 提供程序

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

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

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

    WMI MOF 和 DLL 文件与 Winmgmt.exeMofcomp.exeWMI 命令行工具一起位于 %WINDIR%\System32\Wbem 中。 提供程序类(例如 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 类

监视事件

调用方法