WMI 体系结构
WMI 为从计算机系统、网络或企业获取管理数据的任何本地或远程应用程序或脚本提供统一接口。 统一接口的设计使 WMI 客户端应用程序和脚本不必调用各种操作系统应用程序编程接口 (API) 。 许多 API 不能由自动化客户端(如脚本或Visual Basic应用程序)调用。 其他 API 不调用远程计算机。
若要从 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_Process 或 Win32_LogicalDisk。 注册表提供程序 DLL 文件Stdprov.dll包含客户端脚本或应用程序请求时动态返回数据的代码。
WMI MOF 和 DLL 文件位于 %WINDIR%\System32\Wbem 中,以及 WMI Command-Line 工具,例如 Winmgmt.exe 和 Mofcomp.exe。 提供程序类(如 Win32_LogicalDisk)在 MOF 文件中定义,然后在系统启动时编译到 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 来查询、枚举数据、运行提供程序方法或订阅事件。 唯一可用于托管对象(例如磁盘驱动器或服务)的数据或操作是提供程序提供的数据或操作。
相关主题