为异步调用拒绝WMI访问

关于WMI事件到远程计算机的异步回调。

您可能需要执行以下操作。
友情链接:
http://stackoverflow.com/questions/2782317/exception-while-managementeventwatcherwmi-to-notify-events-from-remote-machine
https://msdn.microsoft.com/en-us/library/aa393266(v=vs.85).aspx

文本:
设置DCOM安全性以允许用户远程访问计算机
WMI中的安全性与连接到WMI名称空间有关。 WMI使用DCOM处理远程调用。 无法连接到远程计算机的一个原因是DCOM故障(错误“DCOM访问被拒绝”十进制-2147024891或十六进制0x80070005)。 有关WMI for C ++应用程序中DCOM安全性的更多信息,请参阅设置客户端应用程序进程安全性。
您可以使用“控制面板”中“管理工具”中的DCOM配置实用程序(DCOMCnfg.exe)为WMI配置DCOM设置。 此实用程序公开了允许某些用户通过DCOM远程连接到计算机的设置。 默认情况下,Administrators组的成员可以远程连接到计算机。 使用此实用程序,您可以设置安全性以启动,访问和配置WMI服务。
以下过程介绍了如何为某些用户和组授予DCOM远程启动和激活权限。 如果计算机A远程连接到计算机B,则可以在计算机B上设置这些权限,以允许不属于计算机B上Administrators组的用户或组在计算机B上执行DCOM启动和激活调用。
Aa393266.wedge(zh-cn,VS.85).gif为用户或组授予DCOM远程启动和激活权限
单击“开始”,单击“运行”,键入DCOMCNFG,然后单击“确定”。
在“组件服务”对话框中,展开“组件服务”,展开“计算机”,然后右键单击“我的电脑”,再单击“属性”。
在“我的电脑属性”对话框中,单击“COM安全”选项卡。
在“启动和激活权限”下,单击“编辑限制”。
在“启动权限”对话框中,如果您的名称或组未显示在“组或用户名”列表中,请按照下列步骤操作:
在“启动权限”对话框中,单击“添加”。
在“选择用户,计算机或组”对话框中,在“输入要选择的对象名称”框中添加您的名称和组,然后单击“确定”。
在“启动权限”对话框中,在“组或用户名”框中选择您的用户和组。 在“用户权限”下的“允许”列中,选择“远程启动”并选择“远程激活”,然后单击“确定”。
以下过程介绍了如何为某些用户和组授予DCOM远程访问权限。 如果计算机A远程连接到计算机B,则可以在计算机B上设置这些权限,以允许不属于计算机B上Administrators组的用户或组连接到计算机B.
Aa393266.wedge(zh-cn,VS.85).gif授予DCOM远程访问权限
单击“开始”,单击“运行”,键入DCOMCNFG,然后单击“确定”。
在“组件服务”对话框中,展开“组件服务”,展开“计算机”,然后右键单击“我的电脑”,再单击“属性”。
在“我的电脑属性”对话框中,单击“COM安全”选项卡。
在“访问权限”下,单击“编辑限制”。
在“访问权限”对话框中,在“组或用户名”框中选择“ANONYMOUS LOGON”名称。 在“用户权限”下的“允许”列中,选择“远程访问”,然后单击“确定”。

设置远程WMI连接

连接到远程计算机上的WMI命名空间可能需要您更改Windows防火墙,用户帐户控制(UAC),DCOM或公共信息模型对象管理器(CIMOM)的设置。
本主题将讨论以下部分:
Windows防火墙设置
用户帐户控制设置
DCOM设置
CIMOM设置
相关主题
Windows防火墙设置
Windows防火墙设置的WMI设置仅启用WMI连接,而不启用其他DCOM应用程序。
必须在防火墙中为远程目标计算机上的WMI设置例外。 WMI的例外允许WMI接收到Unsecapp.exe的远程连接和异步回调。 有关更多信息,请参阅设置异步调用的安全性。
如果客户端应用程序创建自己的接收器,则必须将该接收器明确添加到防火墙例外以允许回调成功。
如果使用winmgmt / standalonehost命令已使用固定端口启动WMI,则WMI的例外也有效。 有关更多信息,请参阅为WMI设置固定端口。
您可以通过Windows防火墙UI启用或禁用WMI流量。
Aa822854.wedge(zh-cn,VS.85).gif使用防火墙UI启用或禁用WMI流量
在控制面板中,单击安全性,然后单击Windows防火墙。
单击“更改设置”,然后单击“例外”选项卡。
在“例外”窗口中,选中Windows Management Instrumentation(WMI)的复选框以启用通过防火墙的WMI流量。 要禁用WMI流量,请清除该复选框。
您可以在命令提示符下通过防火墙启用或禁用WMI流量。
Aa822854.wedge(zh-cn,VS.85).gif使用WMI规则组在命令提示符处启用或禁用WMI流量
在命令提示符处使用以下命令。 键入以下内容以通过防火墙启用WMI流量。
netsh advfirewall防火墙设置规则组=“windows管理工具(wmi)”new enable = yes
键入以下命令以禁用通过防火墙的WMI流量。
netsh advfirewall防火墙设置规则组=“windows管理工具(wmi)”new enable = no
您还可以为每个DCOM,WMI服务和接收器使用单独的命令,而不是使用单个WMI规则组命令。
Aa822854.wedge(zh-cn,VS.85).gif使用单独的DCOM,WMI,回调接收器和传出连接规则启用WMI流量
要为DCOM端口135建立防火墙例外,请使用以下命令。
netsh advfirewall防火墙添加规则dir = in name =“DCOM”program =%systemroot%\ system32 \ svchost.exe service = rpcss action = allow protocol = TCP localport = 135
要为WMI服务建立防火墙例外,请使用以下命令。
netsh advfirewall防火墙添加规则dir = in name =“WMI”program =%systemroot%\ system32 \ svchost.exe service = winmgmt action = allow protocol = TCP localport = any
要为从远程计算机接收回调的接收器建立防火墙例外,请使用以下命令。
netsh advfirewall防火墙添加规则dir = in name =“UnsecApp”program =%systemroot%\ system32 \ wbem \ unsecapp.exe action = allow
要为本地计算机异步通信的远程计算机的传出连接建立防火墙例外,请使用以下命令。
netsh advfirewall防火墙添加规则dir = out name =“WMI_OUT”program =%systemroot%\ system32 \ svchost.exe service = winmgmt action = allow protocol = TCP localport = any
要单独禁用防火墙例外,请使用以下命令。
Aa822854.wedge(zh-cn,VS.85).gif使用针对DCOM,WMI,回调接收器和传出连接的单独规则禁用WMI流量
禁用DCOM异常。
netsh advfirewall firewall删除规则名称=“DCOM”
禁用WMI服务异常。
netsh advfirewall firewall删除规则名称=“WMI”
禁用接收器异常。
netsh advfirewall firewall删除规则名称=“UnsecApp”
禁用传出异常。
netsh advfirewall firewall删除规则名称=“WMI_OUT”
用户帐户控制设置
用户帐户控制(UAC)访问令牌过滤可以影响WMI命名空间中允许的操作或返回的数据。 在UAC下,本地Administrators组中的所有帐户都使用标准用户访问令牌运行,也称为UAC访问令牌筛选。 管理员帐户可以运行具有提升权限的脚本 - “以管理员身份运行”。
当您未连接到内置管理员帐户时,UAC会以不同方式影响与远程计算机的连接,具体取决于两台计算机是在域还是工作组中。 有关UAC和远程连接的详细信息,请参阅用户帐户控制和WMI。
DCOM设置
有关DCOM设置的详细信息,请参阅保护远程WMI连接。 但是,UAC会影响非域用户帐户的连接。 如果使用远程计算机的本地Administrators组中包含的非域用户帐户连接到远程计算机,则必须显式授予该帐户远程DCOM访问,激活和启动权限。
CIMOM设置
如果远程连接是在没有信任关系的计算机之间,则需要更新CIMOM设置; 否则,异步连接将失败。 不应为同一域或受信任域中的计算机修改此设置。
需要修改以下注册表项以允许匿名回调:
HKEY_LOCAL_MACHINE \ SOFTWARE \微软\ WBEM \ CIMOM \ AllowAnonymousCallback
数据类型
REG_DWORD
如果AllowAnonymousCallback值设置为0,则WMI服务会阻止对客户端的匿名回调。 如果该值设置为1,则为th