WMI 疑难解答(可能为英文网页)
在应用程序或脚本中访问 WMI 本地或远程数据时,可能会遇到从缺少类到拒绝访问的错误。 提供程序还提供了调试选项和故障排除类。
注意
本主题中的信息适用于开发人员和 IT 管理员。 如果你是遇到有关 WMI 的错误消息的最终用户,请访问 Microsoft 支持部门,并搜索错误消息中看到的错误代码。 有关排查 WMI 脚本和 WMI 服务问题的详细信息,请参阅 WMI 无法正常工作!
WMI 诊断实用工具
重要
从 Windows 8 和 Windows Server 2012 开始,不再支持 WMI Diagnosis Utility (WMIDiag.exe
) 。
Windows 7、Windows Server 2008 R2、Windows Vista 和 Windows Server 2008:
如果 WMI 返回错误消息,请注意,它们可能不会指示 WMI 服务或 WMI 提供程序中存在问题。 故障可能源自操作系统的其他部分,并通过 WMI 作为错误出现。 在任何情况下,您都不应删除 WMI 存储库作为第一步;因为删除存储库可能会损坏系统或安装的应用程序。
以前,若要获取有关问题根源的详细信息,可以下载并运行WMI Diagnosis Utility诊断命令行工具。 此工具生成了一个报告,通常可以隔离问题的根源,并提供有关如何修复它的说明。 该报告还帮助 Microsoft 支持服务为你提供帮助。 WMI Diagnosis Utility以前在下载中心提供。
作为提供程序编写者,除非编写 分离的提供程序,否则也可能会遇到调试问题。 有关详细信息,请参阅 调试提供程序。
日志记录和跟踪
WMI 日志文件不再存在;它们已被 Windows 事件跟踪 (ETW) 取代。 有关详细信息,请参阅 跟踪 WMI 活动、 记录 WMI 活动和WMI 日志文件。
脚本和应用程序中的故障排除
WMI 包含一组类用于对使用 WMI 提供程序的客户端应用程序进行故障排除。 有关详细信息,请参阅 WMI 客户端应用程序疑难解答。
提供程序编写器如何防止 WMI 问题
提供程序编写器可以通过执行以下操作来防止 (通过 WMI) 出现在错误消息中的许多问题:
- 正确注册提供程序。 有关详细信息,请参阅 注册提供程序。
- 将 #pragma autorecover 语句添加到用于定义提供程序类的托管对象格式 (MOF) 文件中。
有关详细信息,请参阅 调试提供程序、 向 WMI 提供数据以及 提供程序配置和故障排除类。
访问被拒绝
由访问 WMI 命名空间和数据的脚本和应用程序报告的拒绝访问错误通常分为三类。 下表列出了这三个错误类别,以及可能导致这些错误的问题及其可能的解决方法。
错误 | 可能的问题 | 解决方案 |
---|---|---|
0x800706BA HRESULT_FROM_WIN32(RPC_S_SERVER_UNAVAILABLE) 防火墙有问题或服务器不可用。 |
计算机不实际存在,或 Windows 防火墙正在阻止连接 |
连接到 Vista:netsh advfirewall firewall set rule group="windows management instrumentation (wmi)" new enable=yes。连接到下层:允许 Windows 防火墙中的“远程管理”规则。 |
0x80070005 E_ACCESS_DENIED 访问被 DCOM 安全性拒绝。 |
用户无法通过 DCOM 远程访问计算机。 通常,在连接到使用不同操作系统版本的远程计算机时,会发生 DCOM 错误。 |
在 dcomcnfg 中为用户授予“远程启动”和“远程激活”权限。 右键单击“我的电脑”并选择“属性”。 在“COM 安全性”下,单击两个部分中的“编辑限制”。 为所需用户授予远程访问、远程启动和远程激活权限。 然后转到“DCOM 配置”,找到“Windows Management Instrumentation”,并为所需用户授予“远程启动”和“远程激活”权限。 有关详细信息,请参阅在不同操作系统之间进行连接 |
0x80041003 WBEM_E_ACCESS_DENIED 访问被提供程序拒绝 |
用户无权在 WMI 中执行该操作。 以低权限用户身份查询某些类时可能会发生这种情况,但最经常发生于以低权限用户身份调用方法或更改 WMI 实例时。 你要连接到的命名空间已加密,而用户正在尝试使用未加密的连接进行连接 |
使用 WMI 控件为用户授予访问权限(确保其 Remote_Access 设置为 true),并使用支持加密的客户端进行连接。 |
通常,在连接到使用不同操作系统版本的远程计算机时,会发生 DCOM 错误。
提供程序还可能拒绝访问特定命名空间中的数据,或者可能要求提供特定级别的连接安全性。 有关详细信息,请参阅设置客户端应用程序进程安全性和提供程序托管和安全性。
Internet 连接防火墙 (ICF) 更改导致拒绝访问错误。
有关详细信息,请参阅通过 Windows 防火墙进行连接。
当低完整性客户端尝试访问 WMI 时,DCOM 安全性将返回拒绝访问错误。 例如,在安全级别设置为“低”的 Internet Explorer 中运行的 ActiveX 控件无权执行本地 WMI 操作。
Windows 7:低完整性用户对本地 WMI 操作拥有只读权限。
有关错误的信息
收到来自 WMI 的错误消息时,可以在 WMI 错误常量中找到该消息;对于脚本,可以在 WbemErrorEnum 中找到该消息。 但是,仅凭错误所提供的信息通常不足以确定发生了什么问题。 WMI 存储库损坏可能会伪装成“找不到”类或实例错误。
有关 WMI 错误的详细信息:
- WMI 日志跟踪来自 WMI 核心内部和来自提供程序的事件。 有关详细信息,请参阅记录 WMI 活动。
- 使用 WMI 故障排除类检查 WMI 内部状态或者接收提供程序或 WMI 服务事件的通知。 有关详细信息,请参阅提供程序配置和故障排除类和 WMI 客户端应用程序故障排除。