凌峰创科服务平台

服务器没有在限定的时间内用dcom注册

问题根源分析

DCOM 就像是在两台电脑之间建立一个“电话通话”,让一台电脑(客户端)可以远程指挥另一台电脑(服务器)执行任务,这个错误就相当于“电话拨通了,但对方一直没人接,或者接了半天也没人说话,最后我这边不耐烦挂断了”。

导致“没人接”或“说话慢”的原因有很多,主要可以归结为以下几类:

  1. 网络问题:客户端和服务器之间的网络连接不稳定、延迟高或存在防火墙阻隔。
  2. 服务器端资源不足:服务器 CPU、内存或磁盘 I/O 使用率过高,导致它无暇响应新的 DCOM 请求。
  3. DCOM 服务配置问题:服务器上的 DCOM 服务(DCOM Server Process Launcher)没有正常运行或配置不当。
  4. 安全策略或权限问题:客户端的账户没有足够的权限在服务器上发起 DCOM 连接,或者服务器的安全策略阻止了该连接。
  5. 应用程序/脚本本身问题:您试图通过 DCOM 运行的程序或脚本本身卡住了,导致它无法返回结果。
  6. 时间同步问题:虽然不常见,但客户端和服务器的时间如果不同步,也可能在某些认证场景下导致问题。

排查和解决步骤

请按照以下步骤,从最常见和最容易解决的原因开始排查。

第 1 步:检查网络连接和防火墙

这是最首要的检查点,如果客户端连不上服务器,后面的一切都无从谈起。

  1. 基本连通性测试: 在客户端机器上打开命令提示符(CMD)或 PowerShell,执行以下命令:

    服务器没有在限定的时间内用dcom注册-图1

    Test-NetConnection <服务器IP地址> -Port 135
    • 端口 135 是 DCOM 使用的 RPC (Remote Procedure Call) 端口。
    • 如果显示 TcpTestSucceeded: True,说明基本网络是通的,如果为 False,则检查网络、防火墙和路由。
  2. 检查 Windows 防火墙

    • 登录到服务器
    • 打开“Windows Defender 防火墙”。
    • 点击“允许应用或功能通过 Windows Defender 防火墙”。
    • 确保以下两项的“专用”和“公用”网络配置文件都已勾选:
      • DCOM-In (通常由系统自动管理)
      • Remote Administration (NP-In) (如果使用的是网络级别的身份验证)
    • 也可以直接在“高级设置”中,检查入站规则是否有名为 DCOM-In 的规则,并且是“启用”状态。

第 2 步:检查服务器资源状况

如果服务器正在忙于处理其他高负载任务,它自然没空理你的 DCOM 请求。

  1. 登录到服务器
  2. 打开“任务管理器”(Ctrl + Shift + Esc)。
  3. 查看“性能”选项卡下的 CPU内存磁盘 的使用率。
    • CPU 或磁盘使用率持续高于 80%-90%,请等待服务器负载降低后再试,或者找出是什么高负载进程并结束它(谨慎操作)。
    • 如果内存使用率很高且可用内存很小,同样需要考虑增加内存或释放资源。

第 3 步:检查 DCOM 服务状态

DCOM 服务的正常工作是前提。

服务器没有在限定的时间内用dcom注册-图2

  1. 登录到服务器
  2. Win + R,输入 services.msc 并回车,打开服务管理器。
  3. 找到并检查以下两个服务的状态:
    • DCOM Server Process Launcher (DcomLaunch)
      • 状态必须是 “正在运行”
      • 启动类型必须是 “自动”“自动(延迟启动)”
    • Remote Procedure Call (RPC)
      • 状态必须是 “正在运行”
      • 启动类型必须是 “自动”
    • 如果它们没有运行,请右键点击,选择“启动”,如果启动类型不是自动,请将其更改为自动。

第 4 步:检查权限和安全配置

这是最容易出错的地方,尤其是在域环境中。

  1. 检查账户权限

    • 确认您用于连接的账户(无论是域账户还是本地账户)在服务器上是管理员组成员,或者至少拥有“远程启动服务”和“远程调用”的权限。
  2. 配置 DCOM 权限(关键步骤)

    服务器没有在限定的时间内用dcom注册-图3

    • 登录到服务器
    • Win + R,输入 dcomcnfg.exe 并回车,打开“组件服务”。
    • 依次展开 组件服务 -> 计算机 -> 我的电脑 -> DCOM 配置
    • 在右侧的列表中,找到您要连接的应用程序,如果您是通过 DCOM 运行 PowerShell,可以尝试查找 Windows PowerShell;如果是安装某个特定软件,请查找该软件的 DCOM 组件,如果不确定,可以先尝试配置 DCOM ServerDCOM Server Process Launcher 的默认权限。
    • 右键点击该应用程序,选择 “属性”
    • 切换到 “安全” 选项卡。
    • 访问权限
      • 点击 “编辑”
      • 添加您用于连接的客户端账户。
      • 为该账户勾选 “本地启动”“本地激活” 权限。
      • 点击“确定”。
    • 启动和激活权限
      • 点击 “编辑”
      • 同样添加客户端账户。
      • 为该账户勾选 “本地启动”“本地激活” 权限。
      • 点击“确定”。
    • 切换到 “标识” 选项卡。
    • 根据您的需求选择,如果是交互式操作,可以选择 “交互式用户”;如果是后台服务,可以选择 “此用户” 并指定一个服务账户,对于自动化部署,选择“交互式用户”或“网络服务”比较常见。
    • 点击“应用”和“确定”。

第 5 步:检查时间同步

  1. 在客户端和服务器上分别打开命令提示符。
  2. 运行命令:w32tm /query /status
  3. 确保两者的源是同步的,并且时间差异在几分钟以内(通常域环境会自动同步),如果差异很大,需要在服务器上运行 w32tm /resync 来强制同步。

第 6 步:增加脚本超时时间

如果以上所有配置都正确,但目标服务器确实响应较慢(配置老旧的虚拟机),您可以考虑在您的部署脚本中增加超时时间。

  • 对于 PowerShell (Invoke-Command): 默认的超时时间是 300 秒(5分钟),您可以使用 -TimeOut 参数来延长它,

    Invoke-Command -ComputerName <服务器IP> -ScriptBlock { Get-Service } -TimeOut 600 # 设置为10分钟
  • 对于 SCCM 或其他部署工具: 您需要在该工具的部署设置中查找“超时”或“超时时间”的选项,并将其值调大。


排查清单

遇到“服务器没有在限定的时间内用dcom注册”错误时,请按此清单检查:

检查项 操作 目标
网络 Test-NetConnection 确认 RPC 端口 135 可达
防火墙 检查服务器防火墙入站规则 确保 DCOM-In 规则已启用
服务器资源 查看任务管理器 CPU、内存、磁盘使用率是否过高
DCOM服务 检查 DcomLaunchRPC 服务 确保服务正在运行且启动类型为“自动”
权限 配置 DCOM 应用程序的访问和激活权限 确保客户端账户有“本地启动”和“本地激活”权限
时间同步 w32tm /query /status 客户端和服务器时间基本一致
脚本超时 修改部署脚本的超时参数

分享:
扫描分享到社交APP
上一篇
下一篇