启动许多 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
为此,请按照下列步骤操作:
依次单击“开始”、“运行”,键入 regedit,然后单击“确定”。
在“注册表编辑器”中,找到以下注册表子项:
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
右键单击 Windows 条目,然后单击“ 修改”。 此时将显示 “编辑字符串 ”对话框。
在 “值数据 ”框中,找到“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
重现行为的步骤
在计算机上创建 100 个不同的本地用户帐户。
打开组件服务 MMC 管理单元。 为此,请按照下列步骤操作:
- 单击“开始”,指向“设置”,然后单击“控制面板”。
- 在控制面板中,双击“管理工具”,然后双击“组件服务”。 此时会显示 “组件服务 MMC”管理单元。
- 在左窗格中,依次展开 “组件服务”、“ 计算机”和“ 我的电脑”。
创建 COM+ 应用程序,然后设置 COM+ 应用程序的应用程序标识。 为此,请按照下列步骤操作:
- 右键单击“ COM+ 应用程序”,指向 “新建”,然后单击“ 应用程序”。 此时会显示 “欢迎使用 COM 应用程序安装向导 ”对话框。
- 在 “欢迎使用 COM 应用程序安装向导 ”对话框中,单击“ 下一步”。 此时会显示 “安装或创建新应用程序 ”对话框。
- 单击“ 创建空应用程序”。 此时会显示 “创建空应用程序 ”对话框。
- 在 “输入新应用程序的名称 ”框中,键入 “MyCOM1”,然后单击“ 下一步”。 此时会显示“ 设置应用程序标识 ”对话框。
- 单击“ 此用户”,然后在“ 用户 ”框中键入在步骤 1 中创建的用户名。
- 在“ 设置应用程序标识 ”对话框中,在“ 密码 ”框中,在“ 确认密码 ”框中键入密码,然后单击“ 下一步”。 此时会显示 “感谢使用 COM 应用程序安装向导 ”对话框。
- 单击“完成”。
将组件添加到 COM+ 应用程序。 为此,请按照下列步骤操作:
- 在 “组件服务 MMC”管理单元的左窗格中,展开 “MyCom1”。
- 右键单击“ 组件”,指向“ 新建”,然后单击“ 组件”。 此时会显示 “欢迎使用 COM 组件安装向导 ”对话框。
- 单击下一个。 此时会显示 “导入或安装组件 ”对话框。
- 单击“ 导入已注册的组件 () 。 此时会显示 “选择要导入的组件 ”对话框。
- 在 “组件:我的计算机 ”列表中,单击某个组件,然后单击“ 下一步”。 此时会显示 “感谢使用 COM 应用程序安装向导 ”对话框。
- 单击“完成”。
重复步骤 3 以创建 100 个在不同本地用户帐户下运行的 COM+ 应用程序。
重复步骤 4,将组件添加到步骤 5 中创建的 100 个 COM+ 应用程序。
在 “组件服务 MMC”管理单元的左窗格中,右键单击创建的每个 COM+ 应用程序,然后单击“ 启动”。 启动某些 COM+ 应用程序后,将收到 症状 部分中所述的错误消息。
References
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈