DCOM权限配置不当会导致服务失败、WMI异常或横向移动风险;需在dcomcnfg中分别设置“默认属性”(启用DCOM、认证/模拟级别)和“默认安全性”(启动/访问权限),并对特定应用细化权限、身份标识及最小化授权。
windows 组件服务中的 dcom(分布式组件对象模型)权限与对象配置,直接影响远程过程调用、跨进程/跨机器的 com 对象激活和安全访问。配置不当会导致服务启动失败、自动化脚本报错(如“拒绝访问”或“类未注册”)、域环境下的 wmi 查询异常,甚至被利用为横向移动入口。
DCOM 默认安全设置的关键位置
打开 组件服务(dcomcnfg.exe)→ 展开“组件服务”→ “计算机”→ “我的电脑”,右键 → “属性”。这里有两个核心选项卡:
- “默认属性”选项卡:控制 DCOM 通信基础行为(如启用/禁用 DCOM、默认身份验证级别、默认模拟级别)。生产环境中建议将“默认身份验证级别”设为“连接”或更高,“默认模拟级别”设为“标识”或“模拟”。
- “默认安全性”选项卡:定义谁可以启动/激活和访问/配置本地或远程 DCOM 对象。注意:“启动和激活权限”与“访问权限”是独立控制的,需分别添加用户/组并勾选对应权限(如“本地启动”、“远程激活”、“本地访问”、“远程访问”)。
按需配置特定 DCOM 应用程序的权限
并非所有 DCOM 应用都需要开放远程访问。在“组件服务”→ “我的电脑”→ “DCOM 配置”下,找到具体应用程序(如 WMI 服务(WinMgmt)、Windows Management Instrumentation 或自定义 COM 组件),右键 → “属性” → “安全性”选项卡:
- 选择“使用自定义访问权限”和“使用自定义启动权限”,避免继承全局默认策略带来的过度授权。
- 在“启动和激活权限”中,仅授予必要账户“本地启动”和/或“远程激活”权限(例如监控系统需远程激活 WMI)。
- 在“访问权限”中,明确允许哪些账户执行“本地访问”和“远程访问”,尤其注意域环境下的计算机账户(如 DOMAIN\SERVERNAME$)可能需要被加入以支持服务间调用。
- “身份标识”选项卡决定该组件运行时使用的安全上下文(如“交互式用户”、“启动用户”或“此用户”),直接影响其能访问的资源范围,切勿随意设为高权限账户。
常见问题与排查要点
遇到 DCOM 拒绝访问或 0x8004100e / 0x80070005 等错误时,重点检查:
- 目标计算机是否启用 DCOM(“默认属性”中已勾选“在此计算机上启用分布式 COM”);
- 防火墙是否放行 TCP 135(RPC 端口映射器)及动态分配的 RPC 端口段(建议配合“RPC 动态端口保留”组策略固定端口范围并开放);
- 调用方账户是否同时具备“启动权限”和“访问权限”,且权限作用域(本地/远程)匹配实际调用方式;
- 事件查看器中“应用程序”和“系统”日志是否有 DCOM 事件 ID(如 10009、10010、10016),其中包含具体 CLSID 和失败原因;
- 若涉及域环境,确认时间同步、SPN 设置及 Kerberos 票据有效性,DCOM 远程调用依赖完整认证链。
最小权限实践建议
DCOM 是 Windows 中较底层且权限影响面广的机制,应坚持最小化原则:
- 除非业务必需,禁用不必要的 DCOM 应用程序(右键 → “停用”);
- 避免直接修改“我的电脑”级默认权限,优先通过“DCOM 配置”逐个细化;
- 对自动化任务(如 PowerShell 调用 WMI),尽量使用专用服务账户,并限制其仅对所需 DCOM 类有启动+访问权限;
- 定期审计 DCOM 配置变更(可通过 Get-ChildItem HKLM:\SOFTWARE\Classes\AppID\ 结合注册表监控或导出 dcomcnfg 设置比对)。

















