安装针对 COM+ 和 MS DTC 的 Microsoft 安全公告 MS05-051 之后,可能会遇到各种问题

文章翻译 文章翻译
文章编号: 909444 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

症状

在运行 Microsoft Windows XP、Microsoft Windows 2000 或 Windows Server 2003 的计算机上,安装了 Microsoft 安全公告 MS05-051 中讨论的重要更新后,可能会出现问题,其中包括:
  • Windows Installer 服务可能不启动。
  • Windows 防火墙服务可能不启动。
  • “网络连接”文件夹为空。
  • Windows 更新网站可能会错误地建议您更改 Microsoft Internet Explorer 中的“持续使用用户数据”设置。
  • 在 Microsoft Internet Information Services (IIS) 上运行的 Active Server Pages (ASP) 页返回“HTTP 500 - Internal Server Error”(HTTP 500 - 内部服务器错误)错误消息。
  • Microsoft COM+ EventSystem 服务不启动。
  • COM+ 应用程序不启动。
  • Microsoft 组件服务 Microsoft 管理控制台 (MMC) 树中的“计算机”节点无法展开。
  • 经过身份验证的用户无法登录,而且在用户应用十月份的安全更新后出现空白屏幕。
  • 在服务器群集配置中,群集服务无法启动。群集日志文件中记录了以下事件:

    ERR [NM] 无法与 Net 连接管理器建立连接点,状态 80070005。WARN [NM] 无法初始化 Net 连接管理器通知接收器,状态 80070005 ERR [NM] 初始化失败 -2147024891

  • 系统日志中可能记录与以下内容类似的事件:

    事件 ID:512
    来源:CryptSvc
    说明:
    Cryptographic Services 服务初始化 VSS 备份 "System Writer" 对象失败。

    详细信息:
    System Writer 对象订阅 VSS 失败。

    系统错误:
    灾难性故障

  • 当您尝试使用脚本、WBEMTest.exe 实用工具或其他实用工具连接到 Windows Management Instrumentation (WMI) 时,可能出现访问被拒绝错误。在失败时,%windir%\system32\wbem\logs\wbemprox.log 文件包含与以下错误类似的错误:
    ConnectViaDCOM, CoCreateInstanceEx resulted in hr = 0x80070005
  • 当您创建空 COM+ 应用程序时,可能收到以下 COM+ 1.0 编录错误消息:
    XACT_E_RECOVERYINPROGRESS (0x8004d082)

原因

如果有任何 COM 应用程序或 COM+ 应用程序无法访问 COM+ 编录文件,就可能会出现此问题。应用程序不能访问 COM+ 编录文件是因为,COM+ 编录目录和编录文件上的权限已被更改,不再是原来的默认设置。在 Microsoft 安全公告 MS05-051 之前,不要求提供对 COM+ 编录的显式权限。COM+ 编录文件是 .clb 文件,位于 %windir%\registration 文件夹中。默认情况下,COM+ 编录目录和编录文件具有以下权限:
收起该表格展开该表格
AdministratorsSystemEveryoneAuthenticated usersServer Operators
Windows 2000 非域控制器完全控制完全控制读取
Windows 2000 域控制器完全控制完全控制修改读取和执行
Windows Server 2003 非域控制器完全控制完全控制读取
Windows Server 2003 域控制器完全控制完全控制读取和执行

解决方案

根据 MS05-051 中实现的安全更改,需要对 %windir%\registration 文件夹具有读取级别的 NTFS 文件系统权限。默认权限包括 Everyone 组的读取权限。如果更改该配置,应用程序和服务可能会出现意外行为。选择实现限制性更强的 NTFS 安全权限的组织应考虑通过组成员身份为需要访问 COM 功能的用户、应用程序和服务授予读取级别权限。我们建议使用默认的文件夹设置,以免出现潜在的应用程序兼容性问题。如果管理员想要实现默认设置以外的设置,则建议他们进行广泛的应用程序兼容性测试。 有关修改系统文件夹权限可能会遇到的问题的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
885409 安全配置指南支持
除 NTFS 权限外,还需要“跳过遍历”权限。默认情况下,此权限会授予 Everyone 组。如介绍 NFTS 权限时所述,应通过组成员身份为用户、应用程序和服务授予此权限。 有关“跳过遍历”用户权限的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
823659 修改安全设置和用户权限分配时可能出现的客户端、服务和程序不兼容问题
要解决此问题,请恢复 COM+ 编录的默认权限。

对于运行 Windows 2000 或 Windows Server 2003 并且不充当域控制器的计算机,请按照下列步骤操作:
  1. 在 %windir%/registration 文件夹中,确保 Everyone 组具有读取权限。
  2. 在 %windir%/registration 文件夹中,确保 SYSTEM 帐户具有完全控制权限。
  3. 在 %windir%/registration 文件夹中,确保 Administrators 组具有完全控制权限。
  4. 在 %windir%/registration 文件夹中的 .clb 文件的高级安全属性中,确保选中“允许父项的继承审核项目传播到该对象和所有子对象,包括那些在此明确定义的项目”选项。
  5. 确保 Everyone 组具有以下权限之一:
    • 在所有父目录上的“遍历”权限(“列出文件夹内容”),其中包括 %systemdrive%、%windir% 和 %windir%\registration
    • “跳过遍历检查”用户权限
    要将“跳过遍历检查”用户权限分配给 Everyone 组,请按照下列步骤操作:
    1. 单击“开始”,单击“运行”,键入 gpedit.msc,然后单击“确定”。
    2. 依次展开“计算机配置”、“Windows 设置”、“安全设置”、“本地策略”,然后展开“用户权限分配”。
    3. 右键单击“跳过遍历检查”,然后单击“属性”。
    4. 单击“添加用户或组”。
    5. 键入 Everyone,然后单击“确定”。

      注意:如果您收到无法找到名为“Users”的对象的消息,请单击“对象类型”,单击以选中“组”复选框,然后单击“确定”两次。
对于运行 Windows 2000 的域控制器,请按照下列步骤操作:
  1. 在 %windir%/registration 文件夹中,确保 Authenticated Users 组具有读取和执行权限。
  2. 在 %windir%/registration 文件夹中,确保 Server Operators 组具有修改权限。
  3. 在 %windir%/registration 文件夹中,确保 SYSTEM 帐户具有完全控制权限。
  4. 在 %windir%/registration 文件夹中,确保 Administrators 组具有完全控制权限。
  5. 在 %windir%/registration 文件夹中的 .clb 文件的高级安全属性中,确保选中“允许父项的可继承权限传播到该对象”选项。
对于运行 Windows Server 2003 的域控制器,请按照下列步骤操作:
  1. 在 %windir%/registration 文件夹中,确保 Everyone 组具有读取和执行权限。
  2. 在 %windir%/registration 文件夹中,确保 SYSTEM 帐户具有完全控制权限。
  3. 在 %windir%/registration 文件夹中,确保 Administrators 组具有完全控制权限。
  4. 在 %windir%/registration 文件夹中的 .clb 文件的高级安全属性中,确保选中“允许父项的继承审核项目传播到该对象和所有子对象,包括那些在此明确定义的项目”选项。
  5. 确保 Everyone 组具有以下权限之一:
    • 在所有父目录上的“遍历”权限(“列出文件夹内容”),其中包括 %systemdrive%、%windir% 和 %windir%\registration
    • “跳过遍历检查”用户权限
    要将“跳过遍历检查”用户权限分配给 Everyone 组,请按照下列步骤操作:
    1. 单击“开始”,单击“运行”,键入 gpedit.msc,然后单击“确定”。
    2. 依次展开“计算机配置”、“Windows 设置”、“安全设置”、“本地策略”,然后展开“用户权限分配”。
    3. 右键单击“跳过遍历检查”,然后单击“属性”。
    4. 单击“添加用户或组”。
    5. 键入 Everyone,然后单击“确定”。

      注意:如果您收到无法找到名为“Users”的对象的消息,请单击“对象类型”,单击以选中“组”复选框,然后单击“确定”两次。
注意:系统以后可能会在 %windir%/registration 文件夹中创建更多 .clb 文件。为确保新的 .clb 文件有适当的权限,请将读取权限授予整个目录,而不是只将它直接授予当前存在的 .clb 文件。您可以使用 Cacls.exe 文件自动在受影响的计算机上进行这些权限更改,或将这些更改轻松推广到多台计算机。

对于运行 Windows 2000/Windows Server 2003 并且不充当域控制器的计算机,请使用以下命令:
echo y| cacls %windir%\registration /G everyone:R system:F administrators:F
echo y| cacls %windir%\registration\*.clb /G everyone:R system:F administrators:F
对于运行 Windows 2000 的域控制器,请使用以下命令:
echo y| cacls %windir%\registration /G "Authenticated Users":R "Server Operators":R system:F administrators:F
对于运行 Windows 2003 的域控制器,请使用以下命令:
echo y| cacls %windir%\registration /G everyone:R system:F administrators:F
echo y| cacls %windir%\registration\*.clb /G everyone:R system:F administrators:F
注意:确保 y 字符和管道字符 (|) 之间没有空格。如果这两个字符之间有空格,命令将无法正确执行。

更多信息

发生此问题时,您可能会在事件日志中收到以下一个或多个事件:
  • 如果“网络服务”帐户没有正确的权限,事件日志中可能会记录下面的 EventSystem 事件:

    类型:错误
    事件源:EventSystem
    事件类别:(50)
    事件 ID:4609
    日期:<Date>
    时间:<Time>
    用户:N/A
    计算机:Server
    说明:COM+ 事件系统在其内部处理过程中检测到一个错误的返回代码。HRESULT 为 80070005,来自 d:\qxp_slp\com\com1x\src\events\tier1\eventsystemobj.cpp 的第 xx 行。请与 Microsoft 产品支持服务联系以报告该错误。

  • 如果“网络服务”帐户没有正确的权限,事件日志中可能会记录下面的 COM+ 事件:

    类型:信息
    事件源:COM+
    事件类别:(117)
    事件 ID:778
    日期:<Date>
    时间:<Time>
    用户:N/A
    计算机:Server
    说明:应用程序映像转储失败。
    服务器应用程序 ID:<GUID>
    服务器应用程序实例 ID:<GUID>
    服务器应用程序名:COM+ 资源管理器
    错误代码 = 0x80004005:Unspecified error
    COM+ 服务内部信息:文件:d:\qxp_slp\com\com1x\src\shared\util\svcerr.cpp,行:1259 Comsvcs.dll 文件版本:ENU 2001.12.4414.308 shp
    有关更多信息,请参阅位于 http://support.microsoft.com 的帮助和支持中心。

  • 如果“网络服务”帐户没有正确的权限,事件日志中可能会记录下面的 COM+ 事件:

    类型:错误
    事件源:COM+
    事件类别:未知
    事件 ID:4689
    日期:<Date>
    时间:<Time>
    用户:N/A
    计算机:Server
    说明:运行时环境检测到其内部状态中存在不一致。这表明进程中可能存在不稳定状态,此不稳定可能是在 COM+ 应用程序中运行的自定义组件、这些组件所利用的组件或者其他因素导致的。d:\qxp_slp\com\com1x\src\comsvcs\package\cpackage.cpp(1184) 中存在错误,hr = 80070005:InitEventCollector 失败
    有关更多信息,请参阅位于 http://support.microsoft.com 的帮助和支持中心。

  • 当您尝试浏览在 IIS 服务上运行的一个 ASP 页面而未选择 Internet Explorer 中的“显示友好 HTTP 错误消息”选项时,可能会收到下面的错误消息:
    Server Application Error.
    The server has encountered an error while loading an application during the processing of your request.Please refer to the event log for more detail information.Please contact the server administrator for assistance.
    HTTP 500 - 内部服务器错误 Internet Explorer
    事件日志中可能还会记录类似下面这样的一个事件:

    类型:错误
    事件源:DCOM
    类别:无
    事件 ID:10010
    日期:<Date>
    时间:<Time>
    用户:NT AUTHORITY\SYSTEM
    计算机:Server
    说明:服务器 <GUID> 没有在限定的时间内向 DCOM 注册。

  • 当您试图在“组件服务”中手动启动 COM+ 应用程序时,可能会收到以下错误消息:
    Catalog Error:An error occurred while processing the last operation.Error code 80080005 - Server execution failed.The event log may contain additional troubleshooting information.
    事件日志中可能还会记录类似下面这样的一个事件:

    类型:错误
    事件源:DCOM
    类别:无
    事件 ID:10010
    日期:<Date>
    时间:<Time>
    用户:NT AUTHORITY\SYSTEM
    计算机:Server
    说明:服务器 <GUID> 没有在限定的时间内向 DCOM 注册。
    类型:警告
    事件源:W3SVC
    类别:无
    事件 ID:36
    日期:<Date>
    时间:<Time>
    用户:N/A
    计算机:Server
    说明:服务器无法加载应用程序“/LM/W3SVC/1/ROOT”。错误是“服务器运行失败”。
    有关与此消息相关的更多信息,请访问 Microsoft 联机支持网站:http://search.support.microsoft.com/search/?adv=1.

    有关更多信息,请参见位于 http://support.microsoft.com 的帮助和支持中心。

  • 当您尝试安装应用程序或尝试手动启动 Windows 安装程序服务时,可能会收到下面的错误消息:
    不能访问 Windows Installer Service。如果您在安全模式下运行 Windows,或者 Windows Installer 没有正确安装,就可能发生这种情形。请和您的支持人员联系以获得协助。
  • Windows 防火墙服务可能无法启动,并显示下面的错误代码:
    Error Result :0x80070005 ( -2147024891 ) ID Defined as :E_ACCESSDENIED Message Text :Access is denied.

重现此问题的步骤

从 *.clb 文件的文件权限中删除系统帐户和 Everyone 帐户。为此,请按照下列步骤操作:
  1. 单击“开始”,单击“运行”,键入 Explorer.exe c:\winnt\registration,然后单击“确定”。
  2. 在 Windows 资源管理器中,右键单击“属性”,然后单击“安全”选项卡。
  3. 在“Registration 属性”对话框中,单击“组或用户名称”下的“System”,然后单击“高级”。
  4. 在“Registration 的高级安全设置”对话框中,单击“删除”,然后单击“确定”。
  5. 重复步骤 3 和步骤 4,撤消 Everyone 帐户对 .clb 文件的访问权。

属性

文章编号: 909444 - 最后修改: 2008年8月15日 - 修订: 15.2
这篇文章中的信息适用于:
  • Microsoft Windows Server 2003 Datacenter Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Service Pack 1
  • Microsoft Windows XP Professional SP1
  • Microsoft Windows XP Professional SP2
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Advanced Server SP4
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows 2000 Professional SP4
  • Microsoft Windows 2000 Server SP4
关键字:?
kbresolve kbtshoot kbprb KB909444
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com