通过远程的方式连接WMI获取计算机信息时,可能会出现远程主机拒绝访问,这时就要通过下面的方式来开启当前计算机的WMI服务,下面以Win7和Win10为例来进行相关的说明,通过一步步排查去连接远程服务。
一 在本机测试是否可以连接远程主机WMI服务
1 按下Windows+R组合键,调用系统运行窗口。
2 输入wbemtest命令。
图1 调用WMI测试器
3 打开WMI测试器。
图2 打开WMI测试器
4 连接远程WMI服务
连接WMI服务时需要进行下面的步骤。
4.1 首先输入命名空间。
4.2 输入用户名和密码。
4.3 点击“连接”
4.4 查看连接状况
图3 连接远程WMI服务
图4 连接成功标志
如果连接不成功,可能出现下面的对话框,请按照下面的提示来进行一步步排查。
图5 访问失败
二 开启远程计算机WMI服务(下面的说明以Windows10为例)
1 查看计算机是否开启WMI服务
图5 查看WMI服务是否开启
2 查看是否启动远程服务。
依次打开计算机管理=》WMI控件=》更多操作=》属性
图6 设置远程主机的WMI属性
登录之后,设置WMI控件的属性,进入安全选项卡,然后设置RootCIMV2安全设置,然后查看当前的组是否设置远程启用的权限,特别是查看Authenticated Users是否启用远程,如果没有启用,则勾选“远程启用”,另外就是看Administrators这个组是否也启用了远程,这些都是非常重要的。
这里为什么要设置Authenticated Users这个组的远程启用?这个组的作用是什么?
通过查阅相关文档:Authenticated Users:Windows系统中所有使用用户名、密码登录并通过身份验证的账户,并且拒绝Authenticated Users组造成Administrator无法访问AD对象,并且因为Administrator属于Authenticated Users组,而我们登录的用户Administrator要启用远程,所以这个组也要启用远程。另外LOCAL SERVICE,NETWORK SERVICE是由操作系统创建的、一类较为特别的内置帐户或组,主要是为了安全性。NETWORK SERVICE主要针对网络,而LOCAL SERVICE主要针对本地应用程序,对于这些组也只能查到这些消息了,希望能对此有一些大致的了解。
图7 WMI控件安全设置
图8 开启“远程启用”
三 注意事项
1 注意以上的示例都是使用Administrator账户登录的,当然也可以使用其他的账户去登录,但是在使用其他账户时需要注意将当前的账户添加到Administrators组中间去,另外还需要注意的是仅仅添加到Administrators组中权限还是不够的,在实际的机器中测 试时发现还必须添加到“Distributed COM Users”账户中,只有添加到这个组中才具有使用此计算机上的分布式COM对象的功能!
2 当前计算机需要启用分布式的COM对象,只有这样才能够使用远程的WMI服务。这里写一下具体的查看方法。在计算机“运行”中输入“dcomcnfg”然后在:组件服务=》计算机=》我的电脑右键属性,在默认属性中查看是否勾选“在此计算机上启用分布式COM(E)”,具体操作参照下面的截图。
图9 组件服务
图10 启用COM服务
这里也提供一个访问远程主机的DEMO,仅仅作为参考,请点击此处进行下载!