如何在Windows中解决与WMI相关的问题
如何在 Windows XP SP2 中解决与 WMI 相关的问题
文章编号: 875605 - 查看本文应用于的产品
本页
概要
Microsoft Windows XP Service Pack 2 (SP2) 中某些安全锁定方面的更改可能引发与 Windows Management Instrumentation (WMI) 相关的问题,在远程方案中此问题可能尤其严重。例如,Windows XP SP2 中的 Windows 防火墙在默认情况下是启用的。此外,Windows XP SP2 中的 DCOM 限制与 Windows 早期版本中的 DCOM 限制是不同的。
简介
由于安全方面的更改,在 Microsoft Windows XP SP2 中访问 WMI 时可能会收到“access denied”(拒绝访问)错误信息。如果使用的是异步查询,则从基于 Windows XP SP2 的计算机访问基于非 Windows XP SP2 的计算机时,也可能会出现问题。
在 Windows XP SP2 中解决与 WMI 相关的问题
当您解决与 WMI 相关的问题时,首先要确定是本地问题还是远程问题。为此,请尝试从本地访问 WMI,将网络故障的可能性排除在外。如果从本地访问 WMI 时问题仍然存在,则说明该问题与 Windows XP SP2 中的安全更改无关。如果从本地访问 WMI 时没有出现问题,则说明该问题可能与 Windows 防火墙和 DCOM 有关。执行从计算机 A 到计算机 B 的远程 WMI 操作时,必须建立从计算机 A 到计算机 B 的 DCOM 连接,在计算机 B 上,必须将 Windows 防火墙和 DCOM 配置为允许该连接。如果 WMI 操作是同步或半同步的,则只需要一个连接。然而,如果 WMI 操作是异步的,则需要从计算机 B 到计算机 A 的另一个连接。
收起这个图片
- 如果在计算机 B 上启用了 Windows 防火墙,则应启用“Windows 防火墙: 允许远程管理例外”设置。默认情况下,Windows XP SP2 中会启用 Windows 防火墙。
有关如何启用此设置的更多信息,请参阅允许远程管理 一节。 - 如果发出远程请求的用户不是管理员,请确保该用户在计算机 B 上拥有 DCOM 远程启动权限。
有关更多信息,请参阅授予 DCOM 远程启动权限 一节。
如果必须使用异步操作,请按照下列步骤操作:
- 如果在计算机 A 上已启用 Windows 防火墙,则应打开 DCOM 端口。默认情况下,Windows XP SP2 中会启用 Windows 防火墙。
有关如何打开 DCOM 端口的更多信息,请参阅打开 DCOM 端口 一节。 - 在计算机 A 上,将客户端应用程序添加到 Windows 防火墙的例外列表中,这样反向连接才能够完成。
客户端应用程序往往是 Unsecapp.exe 应用程序。Unsecapp.exe 应用程序用于在一个进程中将结果发还给客户端,该进程可能没有成为 DCOM 服务的权限。脚本和 Microsoft .NET System.Management 命名空间都要靠 Unsecapp.exe 应用程序来接收异步操作的结果。
有关如何将客户端应用程序添加到 Windows 防火墙例外列表中的更多信息,请参阅将客户端应用程序添加到 Windows 防火墙的例外列表中 一节。 - 如果反向连接是作为匿名连接创建的,则应将 DCOM 中的远程启动权限授予计算机 A 上的匿名登录帐户。在符合下列条件之一时,反向连接将作为匿名连接创建:
- 计算机 B 是某个工作组的成员。
- 计算机 B 与计算机 A 不在同一个域内,而且计算机 B 所在的域不是一个受信任域。
- 让反向连接尽可能安全。有关更多信息,请访问下面的 Microsoft Developer Network (MSDN) 网站:
http://msdn2.microsoft.com/en-gb/library/aa393614.aspx(http://msdn2.microsoft.com/en-gb/library/aa393614.aspx)
允许远程管理
- 单击“开始”,单击“运行”,键入 gpedit.msc,然后单击“确定”。
- 在“控制台根目录”下,依次展开“计算机配置”、“管理模板”、“网络”、“网络连接”、“Windows 防火墙”,然后单击“域配置文件”。
- 右键单击“Windows 防火墙: 允许远程管理例外”,然后单击“属性”。
- 单击“已启用”,然后单击“确定”。
授予 DCOM 远程启动权限
- 单击“开始”,单击“运行”,键入 DCOMCNFG,然后单击“确定”。
- 在“组件服务”对话框中,依次展开“组件服务”、“计算机”,然后展开“我的电脑”。
- 在工具栏上,单击“配置‘我的电脑’”按钮。
随即显示“我的电脑”对话框。 - 在“我的电脑”对话框中,单击“COM 安全”选项卡。
- 在“启动和激活权限”下,单击“编辑限制”。
- 在“启动权限”对话框中,如果您的名称或您的组未显示在“组或用户名称”列表中,请按照下列步骤操作:
- 在“启动权限”对话框中,单击“添加”。
- 在“选择用户、计算机或组”对话框中,将您的名称和组添加到“输入对象名称来选择”框中,然后单击“确定”。
- 在“启动权限”对话框中,在“组或用户名称”框内选择您的用户和组。在“用户权限”下的“允许”栏中,选择“远程启动”,然后单击“确定”。
打开 DCOM 端口
在 Windows 防火墙中启用端口之前,请确保已经在组策略中启用了“Windows 防火墙: 允许本地端口例外”设置。为此,请按照下列步骤操作:- 单击“开始”,单击“运行”,键入 gpedit.msc,然后单击“确定”。
- 在“控制台根目录”下,依次展开“计算机配置”、“管理模板”、“网络”、“网络连接”、“Windows 防火墙”,然后单击“域配置文件”。
- 右键单击“Windows 防火墙: 允许本地端口例外”,然后单击“属性”。
- 单击“已启用”,然后单击“确定”。
DCOM 端口是 TCP 135。要打开 DCOM 端口,请按照下列步骤操作:
- 单击“开始”,然后单击“控制面板”。
- 双击“Windows 防火墙”,然后单击“例外”选项卡。
- 单击“添加端口”。
- 在“名称”框中,键入 DCOM_TCP135,然后在“端口号”框中键入 135。
- 单击“TCP”,然后单击“确定”。
- 单击“确定”。
netsh firewall add portopening [TCP/UDP][Port][Name]
将客户端应用程序添加到 Windows 防火墙的例外列表中
在 Windows 防火墙中定义程序例外之前,请确保已经在组策略中启用了“Windows 防火墙: 允许本地程序例外”设置:- 单击“开始”,单击“运行”,键入 gpedit.msc,然后单击“确定”。
- 在“控制台根目录”下,依次展开“计算机配置”、“管理模板”、“网络”、“网络连接”、“Windows 防火墙”,然后单击“域配置文件”。
- 右键单击“Windows 防火墙: 允许本地程序例外”,然后单击“属性”。
- 单击“已启用”,然后单击“确定”。
要将客户端应用程序添加到 Windows 防火墙的例外列表中,请按照下列步骤操作:
- 单击“开始”,然后单击“控制面板”。
- 双击“Windows 防火墙”,然后单击“例外”选项卡。
- 单击“添加程序”。
- 找到要添加的应用程序,然后单击“确定”。
- 单击“确定”。
netsh firewall add allowedprogram [<Path>\ProgramName] [ENABLE/DISABLE]
示例
尝试用系统信息工具 Msinfo32.exe 与运行 Microsoft Windows XP SP2 的远程计算机进行连接时,收到以下错误信息:The connection to computer name could not be established.Check to see that the network path name is correct, that you have sufficient permission to access Windows Management Instrumentation, and that Windows Management Instrumentations is installed on the computer.