WMI远程连接拒绝访问、没有权限、不到对象的解决办法(XP)
2009-12-28 20:01
Step 1、检查HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa下的forceguest的值; 该值必须为0 (dword:00000000); Step 2、单击“开始”,单击“运行”,键入 DCOMCNFG,然后单击“确定”(或者“开始”->“设置”->“控制面板”->“管理工具”->“组件服务”)。在“组件服务”对话框中,依次展开“组件服务”、“计算机”,然后展开“我的电脑”。在工具栏上,单击“配置‘我的电脑’”按钮。随即显示“我的电脑”对话框。在“我的电脑”对话框中,单击“COM 安全”选项卡.在“启动和激活权限”下,单击“编辑限制”。在“启动权限”对话框中,如果您的用户名称或您的组未显示在“组或用户名称”列表中,请按照下列步骤操作:
在“启动权限”对话框中,在“组或用户名称”框内选择您的用户和组。在“用户权限”下的“允许”栏中,选择“远程启动”,然后单击“确定”。 Step 3、防火墙,具体信息在support.microsoft/kb/875605/zh-cn 现在在cmd的 wmic 中已经可以成功连接了 /node:192.168.11.22/user:administrator process 在脚本中实现,如下: Dim nameSpace, resCode nameSpace="root\cimv2" resCode = ConnectWmiServer("192.168.75.164",nameSpace,"administrator","test") If resCode Then WScript.Echo "连接成功" Else WScript.Echo "连接失败" End IF Function ConnectWmiServer(strComputerName, strNameSpace, strUserName, strPassWord) On Error Resume Next Dim objSWbemLocator Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") If strComputerName <> "." Then ' . 代表是本机 Set objSWbemServices = objSWbemLocator.ConnectServer(strComputerName, strNameSpace, strUserName, strPassWord) Else Set objSWbemServices = GetObject("winmgmts:\\" & strComputerName & "\" & strNameSpace) End If If err.number Then ConnectWmiServer = False err.clear Exit Function End If ConnectWmiServer = True Set objSWbemLocator = Nothing End Function 在 Windows XP SP2 中解决与 WMI 相关的问题 (转载自:support.microsoft/kb/875605/zh-cn) 当您解决与 WMI 相关的问题时,首先要确定是本地问题还是远程问题。为此,请尝试从本地访问 WMI,将网络故障的可能性排除在外。如果从本地访问 WMI 时问题仍然存在,则说明该问题与 Windows XP SP2 中的安全更改无关。 如果从本地访问 WMI 时没有出现问题,则说明该问题可能与 Windows 防火墙和 DCOM 有关。执行从计算机 A 到计算机 B 的远程 WMI 操作时,必须建立从计算机 A 到计算机 B 的 DCOM 连接,在计算机 B 上,必须将 Windows 防火墙和 DCOM 配置为允许该连接。如果 WMI 操作是同步或半同步的,则只需要一个连接。然而,如果 WMI 操作是异步的,则需要从计算机 B 到计算机 A 的另一个连接。 收起这个图片展开这个图片 要在计算机 A 和计算机 B 之间建立连接 1,请按照下列步骤操作: 1.如果在计算机 B 上启用了 Windows 防火墙,则应启用“Windows 防火墙: 允许远程管理例外”设置。默认情况下,Windows XP SP2 中会启用 Windows 防火墙。 有关如何启用此设置的更多信息,请参阅允许远程管理 一节。 2.如果发出远程请求的用户不是管理员,请确保该用户在计算机 B 上拥有 DCOM 远程启动权限。 有关更多信息,请参阅授予 DCOM 远程启动权限 一节。 只有使用异步 WMI 操作时才需要连接 2。我们建议您尽可能使用半同步操作。这对性能的影响很小,半同步操作可以实现相同的功效,而又不需要反向连接。 如果必须使用异步操作,请按照下列步骤操作: 1.如果在计算机 A 上已启用 Windows 防火墙,则应打开 DCOM 端口。默认情况下,Windows XP SP2 中会启用 Windows 防火墙。 有关如何打开 DCOM 端口的更多信息,请参阅打开 DCOM 端口 一节。 2.在计算机 A 上,将客户端应用程序添加到 Windows 防火墙的例外列表中,这样反向连接才能够完成。 客户端应用程序往往是 应用程序。 应用程序用于在一个进程中将结果发还给客户端,该进程可能没有成为 DCOM 服务的权限。脚本和 Microsoft .NET System.Management 命名空间都要靠 应用程序来接收异步操作的结果。 如何打开端口有关如何将客户端应用程序添加到 Windows 防火墙例外列表中的更多信息,请参阅将客户端应用程序添加到 Windows 防火墙的例外列表中 一节。 3.如果反向连接是作为匿名连接创建的,则应将 DCOM 中的远程启动权限授予计算机 A 上的匿名登录帐户。在符合下列条件之一时,反向连接将作为匿名连接创建: o计算机 B 是某个工作组的成员。 o计算机 B 与计算机 A 不在同一个域内,而且计算机 B 所在的域不是一个受信任域。 有关更多信息,请参阅授予 DCOM 远程启动权限 一节。 4.让反向连接尽可能安全。有关更多信息,请访问下面的 Microsoft Developer Network (MSDN) 网站: msdn2.microsoft/en-gb/library/aa393614.aspx (msdn2.microsoft/en-gb/library/aa393614.aspx) 允许远程管理 1.单击“开始”,单击“运行”,键入 gpedit.msc,然后单击“确定”。 2.在“控制台根目录”下,依次展开“计算机配置”、“管理模板”、“网络”、“网络连接”、“Windows 防火墙”,然后单击“域配置文件”。 3.右键单击“Windows 防火墙: 允许远程管理例外”,然后单击“属性”。 4.单击“已启用”,然后单击“确定”。 授予 DCOM 远程启动权限 1.单击“开始”,单击“运行”,键入 DCOMCNFG,然后单击“确定”。 2.在“组件服务”对话框中,依次展开“组件服务”、“计算机”,然后展开“我的电脑”。 3.在工具栏上,单击“配置‘我的电脑’”按钮。 随即显示“我的电脑”对话框。 4.在“我的电脑”对话框中,单击“COM 安全”选项卡。 5.在“启动和激活权限”下,单击“编辑限制”。 6.在“启动权限”对话框中,如果您的名称或您的组未显示在“组或用户名称”列表中,请按照下列步骤操作: a.在“启动权限”对话框中,单击“添加”。 b.在“选择用户、计算机或组”对话框中,将您的名称和组添加到“输入对象名称来选择”框中,然后单击“确定”。 7.在“启动权限”对话框中,在“组或用户名称”框内选择您的用户和组。在“用户权限”下的“允许”栏中,选择“远程启动”,然后单击“确定”。 打开 DCOM 端口 在 Windows 防火墙中启用端口之前,请确保已经在组策略中启用了“Windows 防火墙: 允许本地端口例外”设置。为此,请按照下列步骤操作: 1.单击“开始”,单击“运行”,键入 gpedit.msc,然后单击“确定”。 2.在“控制台根目录”下,依次展开“计算机配置”、“管理模板”、“网络”、“网络连接”、“Windows 防火墙”,然后单击“域配置文件”。 3.右键单击“Windows 防火墙: 允许本地端口例外”,然后单击“属性”。 4.单击“已启用”,然后单击“确定”。 注意:也可使用“Windows 防火墙: 定义端口例外”设置来配置本地端口例外。 DCOM 端口是 TCP 135。要打开 DCOM 端口,请按照下列步骤操作: 1.单击“开始”,然后单击“控制面板”。 2.双击“Windows 防火墙”,然后单击“例外”选项卡。 3.单击“添加端口”。 4.在“名称”框中,键入 DCOM_TCP135,然后在“端口号”框中键入 135。 5.单击“TCP”,然后单击“确定”。 6.单击“确定”。 注意:也可在命令提示符处键入以下命令打开一个端口: netsh firewall add portopening [TCP/UDP][Port][Name] 将客户端应用程序添加到 Windows 防火墙的例外列表中 在 Windows 防火墙中定义程序例外之前,请确保已经在组策略中启用了“Windows 防火墙: 允许本地程序例外”设置: 1.单击“开始”,单击“运行”,键入 gpedit.msc,然后单击“确定”。 2.在“控制台根目录”下,依次展开“计算机配置”、“管理模板”、“网络”、“网络连接”、“Windows 防火墙”,然后单击“域配置文件”。 3.右键单击“Windows 防火墙: 允许本地程序例外”,然后单击“属性”。 4.单击“已启用”,然后单击“确定”。 注意:也可使用“Windows 防火墙: 定义程序例外”设置来配置本地程序例外。 要将客户端应用程序添加到 Windows 防火墙的例外列表中,请按照下列步骤操作: 1.单击“开始”,然后单击“控制面板”。 2.双击“Windows 防火墙”,然后单击“例外”选项卡。 3.单击“添加程序”。 4.到要添加的应用程序,然后单击“确定”。 5.单击“确定”。 注意:也可在命令提示符处键入以下命令将程序添加到 Windows 防火墙例外列表中: netsh firewall add allowedprogram [<Path>\ProgramName] [ENABLE/DISABLE] | ||||||
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论