启动许多 COM+ 应用程序时出错:错误代码80080005 -- 服务器执行失败

本文为从组件服务 Microsoft 管理控制台 (MMC) 管理单元手动启动许多 Microsoft COM+ 应用程序时收到错误代码80080005的问题提供了解决方法。

适用于: Windows Server 2012 R2
原始 KB 编号: 870655

症状

从组件服务 Microsoft 管理控制台 (MMC) 管理单元手动启动多个 Microsoft COM+ 应用程序时,每个 COM+ 应用程序在不同的用户帐户下运行时,可能会收到以下错误消息:

目录错误:处理最后一个操作时出错。 错误代码80080005 -- 服务器执行失败。 事件日志可能包含其他故障排除信息。

在 事件查看器 的应用程序日志中,将收到类似于以下内容的错误消息:

Type: Error
Source: DCOM

Category: None
Event ID: 10010

Date: 31/03/2004

Time: 15:13:30

User: NT AUTHORITY\SYSTEM

Computer: MSHSRMSWEBP0007

Description: The server {F1673109-CF44-468D-9E23-FE4116F84CFA} did not register with DCOM within the required timeout.

原因

如果许多 COM+ 应用程序在 “此用户” 属性中指定的不同用户帐户下运行,则计算机无法分配内存来为新用户创建新的桌面堆。 因此,进程无法启动。

解决方法

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必严格按照这些步骤操作。 为了加强保护,应先备份注册表,再进行修改。 如果出现问题,可以还原注册表。 有关如何备份和还原注册表的详细信息,请参阅如何备份和还原 Windows 中的注册表

若要解决此问题,请修改以下注册表子项的值:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\Windows

为此,请按照下列步骤操作:

  1. 依次单击“开始”、“运行”,键入 regedit,然后单击“确定”

  2. 在“注册表编辑器”中,找到以下注册表子项:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems

    默认情况下,子项中的 Windows 条目具有类似于以下 (一行) 的值:

    %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16

  3. 右键单击 Windows 条目,然后单击“ 修改”。 此时将显示 “编辑字符串 ”对话框。

  4. “值数据 ”框中,找到“SharedSection”,将 512 添加到 SharedSection,然后单击“ 确定”。

    新更改的 Windows 条目如下所示:

    %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16

重现行为的步骤

  1. 在计算机上创建 100 个不同的本地用户帐户。

  2. 打开组件服务 MMC 管理单元。 为此,请按照下列步骤操作:

    1. 单击“开始”,指向“设置”,然后单击“控制面板”
    2. 在控制面板中,双击“管理工具”,然后双击“组件服务”。 此时会显示 “组件服务 MMC”管理单元。
    3. 在左窗格中,依次展开 “组件服务”、“ 计算机”和“ 我的电脑”。
  3. 创建 COM+ 应用程序,然后设置 COM+ 应用程序的应用程序标识。 为此,请按照下列步骤操作:

    1. 右键单击“ COM+ 应用程序”,指向 “新建”,然后单击“ 应用程序”。 此时会显示 “欢迎使用 COM 应用程序安装向导 ”对话框。
    2. “欢迎使用 COM 应用程序安装向导 ”对话框中,单击“ 下一步”。 此时会显示 “安装或创建新应用程序 ”对话框。
    3. 单击“ 创建空应用程序”。 此时会显示 “创建空应用程序 ”对话框。
    4. “输入新应用程序的名称 ”框中,键入 “MyCOM1”,然后单击“ 下一步”。 此时会显示“ 设置应用程序标识 ”对话框。
    5. 单击“ 此用户”,然后在“ 用户 ”框中键入在步骤 1 中创建的用户名。
    6. 在“ 设置应用程序标识 ”对话框中,在“ 密码 ”框中,在“ 确认密码 ”框中键入密码,然后单击“ 下一步”。 此时会显示 “感谢使用 COM 应用程序安装向导 ”对话框。
    7. 单击“完成”
  4. 将组件添加到 COM+ 应用程序。 为此,请按照下列步骤操作:

    1. “组件服务 MMC”管理单元的左窗格中,展开 “MyCom1”。
    2. 右键单击“ 组件”,指向“ 新建”,然后单击“ 组件”。 此时会显示 “欢迎使用 COM 组件安装向导 ”对话框。
    3. 单击下一个。 此时会显示 “导入或安装组件 ”对话框。
    4. 单击“ 导入已注册的组件 () 。 此时会显示 “选择要导入的组件 ”对话框。
    5. “组件:我的计算机 ”列表中,单击某个组件,然后单击“ 下一步”。 此时会显示 “感谢使用 COM 应用程序安装向导 ”对话框。
    6. 单击“完成”
  5. 重复步骤 3 以创建 100 个在不同本地用户帐户下运行的 COM+ 应用程序。

  6. 重复步骤 4,将组件添加到步骤 5 中创建的 100 个 COM+ 应用程序。

  7. “组件服务 MMC”管理单元的左窗格中,右键单击创建的每个 COM+ 应用程序,然后单击“ 启动”。 启动某些 COM+ 应用程序后,将收到 症状 部分中所述的错误消息。

References

创建新的 COM+ 应用程序