You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WMI ManagementScope远程连接报RPC_C_AUTHN_LEVEL_PKT_INTEGRITY错误排查

问题原因

你在远程主机事件查看器中看到的DCOM报错已经明确给出了拦截原因:

服务器端身份验证级别策略不允许来自地址XX.X.XX.XXX的用户Machinename\user(SID:X-X-X-XX-XXXXXX-XXXXX-XXXXXX-XXXX)激活DCOM服务器,请在客户端应用程序中将激活身份验证级别至少提升至RPC_C_AUTHN_LEVEL_PKT_INTEGRITY。

2021年起微软推送的DCOM安全加固更新,默认强制所有入站DCOM/WMI连接的认证级别不得低于RPC_C_AUTHN_LEVEL_PKT_INTEGRITY(数据包完整性)。你贴出的代码没有显式指定WMI连接的认证级别,使用的默认认证级别低于服务端策略阈值,因此直接抛出“拒绝访问”异常。
同代码在另一台机器正常运行的原因是那台机器要么未安装对应DCOM安全更新,要么系统全局默认DCOM认证级别刚好满足要求,属于环境特例,不代表代码写法符合当前Windows的默认安全规则。

修复方法

在ConnectionOptions初始化时显式指定符合要求的认证级别即可,修正后的可运行代码如下:

using System.Management;

var connection = new ConnectionOptions();
connection.Username = "MyUsername";
connection.Password = "MyPassword";
// 显式设置认证级别为数据包完整性,匹配服务端DCOM策略要求
connection.Authentication = AuthenticationLevel.PacketIntegrity;
// 跨工作组/跨域场景建议补充设置模拟级别,避免权限上下文异常
connection.Impersonation = ImpersonationLevel.Impersonate;

var scope = new ManagementScope($@"\\{Address}\root\cimv2", connection);
scope.Connect();
补充排查项

如果修改代码后依然连接失败,按以下顺序排查客户端配置:

  • 运行dcomcnfg打开组件服务,依次展开「组件服务 > 计算机 > 我的电脑」,右键打开属性页,在「默认属性」 tab 中确认「默认身份验证级别」没有被手动设置为低于「数据包完整性」的选项,无特殊需求直接设置为「连接」即可,代码中显式指定的参数会覆盖该全局默认值
  • 运行gpedit.msc打开本地组策略编辑器,依次定位到「计算机配置 > 管理模板 > 系统 > 远程过程调用」,检查「用于未激活的RPC客户端的RPC认证级别」策略,若被手动修改为低于数据包完整性的级别,改回「未配置」即可
  • 确认你使用的连接账号在远程主机上拥有WMI命名空间的远程访问、激活权限,不要使用Guest账号或空密码账号发起远程WMI连接
  • 确认客户端和远程主机之间的防火墙放行了WMI通信流量(默认使用DCOM动态端口范围+135端口)

内容的提问来源于stack exchange,提问作者0xBADF00

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 12:54:27