微软发布MS05-051安全更新后,打过此补丁的部分用户系统出现了故障,此篇文章记录了故障的解决办法。
症状
• Windows 防火墙服务可能不启动。
• “网络连接”文件夹为空。
• Windows 更新网站可能会错误地建议您更改 Microsoft Internet Explorer 中的“持续使用用户数据”设置。
• 在 Microsoft Internet 信息服务 (IIS) 上运行的 Active Server Pages (ASP) 页返回“HTTP 500 - 内部服务器错误”错误信息。
• Microsoft COM+ EventSystem 服务不启动。
• COM+ 应用程序不启动。
• Microsoft 组件服务 Microsoft 管理控制台 (MMC) 树中的“计算机”节点无法展开。
• 经过身份验证的用户无法登录,而且在用户应用十月份的安全更新后出现空白屏幕。
原因
如果有任何 COM 应用程序或 COM+ 应用程序无法访问 COM+ 编录文件,就可能会出现此问题。应用程序不能访问 COM+ 编录文件是因为,COM+ 编录目录和编录文件上的权限已被更改,不再是原来的默认设置。在 Microsoft 安全公告 MS05-051 之前,不要求提供对 COM+ 编录的显式权限。COM+ 编录文件是 .clb 文件,位于 %windir%\registration 文件夹中。默认情况下,COM+ 编录目录和编录文件具有以下权限:
Administrators 完全控制
System 完全控制
Everyone 读取
解决方案
要解决此问题,请恢复 COM+ 编录的默认权限。为此,请按照下列步骤操作:
2. 在 %windir%/registration 文件夹中,确保 SYSTEM 帐户具有完全控制权限。
3. 在 %windir%/registration 文件夹中,确保 Administrators 组具有完全控制权限。
4. 在 %windir%/registration 文件夹中的 .clb 文件的高级安全属性中,确保选中“从父项继承那些可以应用到子对象的权限项目,包括那些在此明确定义的项目”复选框。
5. 确保 Everyone 组具有以下权限之一:
• 在所有父文件夹上的“遍历”权限(“列出文件夹内容”),其中包括 %systemdrive%、%windir% 和 %windir%\registration 文件夹
• “跳过遍历检查”权限
默认情况下,上述所有权限和用户权利都是启用的。 如想进一步了解为何应为 Everyone 组保持选中“跳过遍历检查”权限,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
823659 (http://support.microsoft.com/kb/823659/) 修改安全设置和用户权限分配时可能出现的客户端、服务和程序不兼容问题
注意:系统以后可能会在 %windir%/registration 文件夹中创建更多 .clb 文件。为确保新的 .clb 文件有适当的权限,请将读取权限授予整个目录,而不是只将它直接授予当前存在的 .clb 文件。您可以使用 Cacls.exe 文件自动在受影响的计算机上进行这些权限更改,或将这些更改轻松推广到多台计算机。可以使用以下命令。
echo y&line; cacls %windir%\registration\*.clb /G everyone:R system:F administrators:F
注意:确保 y 字符和管道字符 (&line;) 之间不要有空格。如果这两个字符之间有空格,命令将无法正确执行。
更多信息
发生此问题时,您可能会在事件日志中收到以下一个或多个事件:• 如果“网络服务”帐户没有正确的权限,事件日志中可能会记录下面的 EventSystem 事件:
类型:错误
来源:EventSystem
类别:(50)
事件 ID:4609
日期:<Date>
时间:<Time>
用户:N/A
计算机:服务器
描述:COM+ 事件系统在其内部处理过程中检测到一个错误的返回代码。HRESULT 是 d:\qxp_slp\com\com1x\src\events\tier1\eventsystemobj.cpp 的第 xx 行中的 80070005。请与 Microsoft 产品支持服务联系以报告此错误。
• 如果“网络服务”帐户没有正确的权限,事件日志中可能会记录下面的 COM+ 事件:
类型:信息
来源:COM+
类别:(117)
事件 ID:778
日期:<Date>
时间:<Time>
用户:N/A
计算机:服务器
描述:应用程序映像转储失败。
服务器应用程序 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://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
• 如果“网络服务”帐户没有正确的权限,事件日志中可能会记录下面的 COM+ 事件:
类型:错误
来源:COM+
类别:未知
事件 ID:4689
日期:<Date>
时间:<Time>
用户:N/A
计算机:服务器
描述:运行时环境检测到其内部状态中存在不一致。这表明进程中可能存在不稳定状态,此不稳定可能是在 COM+ 应用程序中运行的自定义组件、这些组件所利用的组件或者其他因素导致的。d:\qxp_slp\com\com1x\src\comsvcs\package\cpackage.cpp(1184) 中存在错误,hr = 80070005:InitEventCollector 失败
有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
• 当您尝试浏览在 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 - Internal server error Internet Explorer
事件日志中可能还会记录类似下面这样的一个事件:
类型: 错误
来源: DCOM
类别: 无
事件 ID: 10010
日期: <Date>
时间: <Time>
用户: NT AUTHORITY\SYSTEM
计算机: 服务器
描述:服务器 <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
计算机:服务器
描述: 服务器 <GUID> 没有在限定的时间内向 DCOM 注册。
类型: 警告
来源: W3SVC
类别: 无
事件 ID: 36
日期:<Date>
时间:<Time>
用户: N/A
计算机: 服务器
描述:服务器无法加载应用程序“/LM/W3SVC/1/ROOT”。错误是“服务器运行失败”。
有关与此消息相关的更多信息,请访问 Microsoft 联机支持网站:http://www.microsoft.com/contentredirect.asp。
有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
• 当您尝试安装应用程序或尝试手动启动 Windows 安装程序服务时,可能会收到下面的错误信息:
The Windows Installer Service could not be accessed.This can occur if you are running Windows in safe mode, or if the Windows Installer is not correctly installed.Contact your support personnel for assistance.
• Windows 防火墙服务可能无法启动,并显示下面的错误代码:
Error Result :0x80070005 ( -2147024891 ) ID Defined as :E_ACCESSDENIED Message Text :Access is denied.
重现此问题的步骤
2. 在 Windows 资源管理器中,右键单击“属性”,然后单击“安全”选项卡。
3. 在“注册属性”对话框中,单击“组和用户名”下的“系统”,然后单击“高级”。
4. 在“注册的高级安全设置”对话框中,单击“删除”,然后单击“确定”。
5. 重复步骤 3 和步骤 4,撤消 Everyone 帐户对 .clb 文件的访问权。