使用英语阅读

通过


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

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

原始 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+ 应用程序后,会收到“症状部分所述的错误消息。

参考

创建新 COM+应用程序