即使安装成功,.NET Framework 2.0 Service Pack 2、.NET Framework 3.0 Service Pack 2 或 .NET Framework 3.5 Service Pack 1 的汇报也可能无法正确更新文件

应用对象
.NET Framework 3.5 Service Pack 1 Microsoft Windows XP Professional x64 Edition Microsoft Windows XP Professional x64 Edition Microsoft Windows XP Professional x64 Edition

症状

安装 .NET Framework 2.0 Service Pack 2、.NET Framework 3.0 Service Pack 2 或 ..NET Framework 3.5 Service Pack 1 的某些更新时,更新可能会成功安装。 但是,文件可能无法更新。 因此,可以通过 Windows 更新重新提供该更新。

原因

出现这种情况的原因有多种,包括与双分支服务相关的某些安装失败问题。 在 2009 年 1 月和 2009 年 7 月之间,发布了 .NET Framework 2.0 Service Pack 2、.NET Framework 3.0 Service Pack 2 和 .NET Framework 3.5 Service Pack 1 的若干修补程序,但存在缺陷。 安装了具有此缺陷的修补程序,然后安装了安全更新程序时,修补程序的存在会阻止正确更新安全更新中的有效负载文件。 在某些情况下,此问题也可能表现为以下 Microsoft 知识库文章中描述的错误:

安装更新 982167 或更新982168后出现“无法加载类型'System.Security.Authentication.ExtendedProtectionPolicy'”异常错误 2262911 Microsoft 已删除包含此缺陷的所有修补程序,并将其替换为没有该缺陷的新修补程序。 有关有缺陷的修补程序的 Microsoft 知识库文章已更新,其中列出了没有缺陷的替换修补程序。 如果您安装了此处列出的某个有缺陷的修补程序,请应用本文“解决方法”部分中介绍的解决方法来解决此问题。 如果不应用该解决方法,则安全更新的有效负载中的文件可能无法正确更新,从而使计算机处于不一致且可能易受攻击的状态。

有缺陷的修补程序列表

          

946411 修复:在基于 Windows XP Service Pack 2 或 Service Pack 3 的计算机上打印 XPS 文件时,XPS 文件中的字符打印不正确
952883 IX:包含具有内部 setter 的属性的 ASMX 服务方法的返回类型或 out 参数可能无法在安装了 .NET Framework 的计算机上序列化
958090 修复:在事务完成期间触发 System.EnterpriseServices.TransactionProxyException 异常时,无法从其他应用程序域捕获该异常
958252 修复:在 .NET Framework 2.0 Service Pack 1 (SP1) 中使用 Msdatasetgenerator 自定义工具时,为第三方 .NET 数据提供程序生成的代码中的缩放值和精度值与设置的值不同
960442 修补程序:在 .NET Framework 2.0 Service Pack 2 或 .NET Framework 3.5 Service Pack 1 中的程序集中使用 BinaryFormatter 对象序列化和反序列化泛型时,会收到异常错误消息
960754 修复:引用 Transaction.Current.TransactionInformation 对象时收到 ObjectDisposedException 异常
961847 修复:重新编译基于 .NET Framework 3.5 Service Pack 1 的项目后,在设计模式下查看页面时出现错误消息:“创建控件时出错 – 无法在属性'PropertyName'上设置'ControlInstanceName [text]'”
961864 修复:访问启用了 ASP.NET 2.0 AJAX 的网站时,Web 客户端可能会出现一些问题
961870 修复:运行要求 CLR 在 .NET Framework 2.0 Service Pack 2 中加载混合模式程序集的应用程序时,发生内存泄漏
961881 修复:启动在 CLR 上运行的应用程序时发生访问冲突
961884 修复:更改 App_Code 文件夹、bin 文件夹或 Global.asax 文件后,对 ASP.NET 网站的初始请求性能非常慢
961885 修复:当运行调用 XslCompiledTransform.Transform 方法的 CLR 应用程序时,将收到“访问冲突”错误
961901 修复:从基于 .NET Framework 2.0 SP2 的 Windows 窗体返回到“编辑”字段时,为编辑字段设置的特定 .NET Framework 模式可能会消失修复:从基于 .NET Framework 2.0 SP2 的 Windows 窗体返回到“编辑”字段时,为.NET Framework设置的特定 IME 模式可能会消失
961902 修复:编译包含许多应用程序资源文件的 ASP.NET 项目时出现错误消息:“mscorlib.dll 中发生了'System.ArgumentException'类型的首次机会异常”
962351 修复:当您在标准模式下使用 Internet Explorer 8.0 查看具有动态菜单的 ASP.NET 网页时,不显示弹出菜单
962890 修复:基于 .NET Framework 2.0 的应用程序重复调用 XmlTextReader.Read 函数时出现错误消息:“第 171 行的'Permission'开始标记与'PermissionRead'的结束标记不匹配”
963676 修复:CLR 失败并出现致命的执行引擎错误,并且在使用 .NET Framework 2.0 Service Pack 2 运行应用程序时发生崩溃
967114 修复:在基于 .NET Framework 2.0 的应用程序中使用 System.Data.DataTable.InsertRow 方法或任何其他重载方法将行插入到表中时出现错误消息:“算术运算导致溢出”
967613 修复:监视事件日志条目的应用程序在调用 System.Diagnostics.EventLog 类的 Dispose 方法时崩溃
967615 修复:基于 .NET Framework 2.0 SP2 的应用程序或基于 .NET Framework 3.5 SP1 的应用程序无法正确处置由 WindowsIdentity 对象创建的安全句柄对象
967812 修补程序可用于更新斯洛伐克、斯洛文尼亚和土耳其的 System.Globalization.RegionInfo 类中的某些属性
968108 修复:访问部署在 Web 场中的启用 ASP.NET 2.0 AJAX 的网站时,Web 客户端崩溃或遇到意外行为
968249 修复:使用类型库导出程序从 .NET Framework 2.0 Service Pack 2 中的 CLR 程序集生成类型库时,生成的实例大小不正确
968392 安装 .NET Framework 2.0 SP2 或 .NET Framework 3.5 SP1 后,如果在 Visual Studio 2005 或 Visual Studio 2008 中设置了 ImageUrl 属性,则错误消息和超链接控件不会呈现:“对象引用未设置为对象的实例”
968432 修复:运行基于 .NET Framework 2.0 SP2 或 .NET Framework 3.5 SP1 中的 Web 应用程序时,发生 .NET Framework 异常
968556 修复:XslCompiledTransform.Transform 方法没有在 .NET Framework 2.0 中同时接受 XPathNavigator 和 XmlResolver 对象作为参数的重载方法
968760 托管应用程序在 Microsoft .NET Framework 2.0 中具有大量的线程句柄和事件句柄
969364 修复:使用 Visual Web Developer 中的“生成本地资源”工具生成本地资源文件时,嵌入在 ASP.NET 2.0 网页中的代码块消失
969612 ASP.NET 2.0 修补程序汇总包说明:2009 年 4 月
969722 修复:“ASP.NET Apps v2.0.50727 (__Total__) \Sessions Active”性能计数器在安装 Microsoft .NET Framework 3.5 Service Pack 1 后显示过高的值
969836 修复:即使 GUI 线程处于空闲状态,在调用 Control.Invoke 方法时,基于 .NET Framework 2.0 的 Windows 窗体应用程序中的工作线程也可能被阻止
970350 修复:在 .NET Framework 2.0 SP2 或 .NET Framework 3.5 SP1 中,当 System.Drawing.FontConverter 对象调用 FontFamily.Families 属性时出现异常错误消息:“内存不足”
970510 修复:运行基于 .NET Framework 3.5 SP1 的应用程序时发生 TypeLoadException 异常
970924 修复:在 .NET Framework 2.0 SP2 中,当您向动态程序集模块添加更多类型对象时,使用 CreateType 方法的应用程序的性能会降低
971030 修复:运行基于 .NET Framework 2.0 的应用程序时发生访问冲突,该应用程序在 LCG 方法中虚拟调用 IList<T>、IEnumerable<T> 或 ICollection<T> 接口
971169 修复:如果全局资源文件名包含区域性名称“zh-Hant”,则在运行 ASP.NET 2.0 Web 应用程序时会出现错误消息
971601 修复:当应用程序退出并重新启动,并且在运行 .NET Framework 2.0 的计算机上收到 System.InvalidOperationException 异常时,监视应用程序的性能计数器停止响应
971988 修复:当运行基于 .NET Framework 2.0 的多 AppDomain 应用程序时,CPU 使用率显著增加,该应用程序使用其终结器启动 ThreadPool 方法的对象
971993 修补程序的说明,该修补程序使 ASP.NET Web 应用程序能够在使用成员身份提供程序时支持基于声明的标识
972259 修复:启用并发垃圾回收时,基于 .NET Framework 2.0 SP2 的程序的线程会暂停很长时间
972848 修复:当文件收集的信息不是 .NET Framework 2.0 中的 MiniDumpWithFullMemory 类型时,小型转储文件生成速度缓慢且文件大小大于预期

有关双分支服务的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

960043 .NET Framework 2.0 Service Pack 2、.NET Framework 3.0 Service Pack 2 和 .NET Framework 3.5 Service Pack 1 的双分支服务

解决方法

要解决此问题,请按照以下步骤操作。

步骤 1

安装修补程序975954。 若要下载 MSI 更新,请访问以下 MSDN 网页:

http://code.msdn.microsoft.com/KB975954/Release/ProjectReleases.aspx?ReleaseId=3839
          

步骤 2

运行产品的修复。 我们可以自动为您维修产品,或者您也可以自行维修产品。

为我运行修复

要自动运行产品的修复,请单击“ 修复它 ”按钮。 然后在“文件下载”对话框中单击“运行”,然后按照“修复此问题”向导中的步骤操作。

注意:此向导仅提供英文版本。 但是,自动修复功能同样适用于其他语言版本的 Windows。

注意:如果您的计算机中并未出现此问题,则可以将自动修复保存到闪存驱动器或 CD 中,以便在出现此问题的计算机上运行它。

我自己修复

如果要自行修复产品,请从提升的命令提示符键入以下相应的命令行:

  • 如果仅安装了 .NET Framework 2.0 Service Pack 2,请运行以下命令:
    msiexec /f {C09FB3CD-3D0C-3F2D-899A-6A1D67F2073F}此命令修复 .NET Framework 2.0 SP2 产品层。

  • 如果您安装了 .NET Framework 3.0 Service Pack 2,请运行以下命令:
    msiexec /f {C09FB3CD-3D0C-3F2D-899A-6A1D67F2073F}

    msiexec /f {A3051CD0-2F64-3813-A88D-B8DCCDE8F8C7}这些命令同时修复 .NET Framework 2.0 SP2 和 .NET Framework 3.0 SP2 产品层。

  • 如果您安装了 .NET Framework 3.5 Service Pack 1,请运行以下命令:
    msiexec /f {C09FB3CD-3D0C-3F2D-899A-6A1D67F2073F}

    msiexec /f {A3051CD0-2F64-3813-A88D-B8DCCDE8F8C7}

    msiexec /f {CE2CDD62-0124-36CA-84D3-9F4DCF5C5BD9}这些命令修复 .NET Framework 2.0 SP2、.NET Framework 3.0 SP2 和 .NET Framework 3.5 SP1 产品层。

通过运行这些命令修复产品层时,会导致该产品层中的所有功能 (.NET Framework 2.0 SP2、.NET Framework 3.0 SP2 和 .NET Framework 3.0 SP1) 重新评估其安装状态。

这将解决由错误的基线导致的问题,并使更新能够成功应用其有效负载。

有关如何运行使用提升权限的命令的详细信息,请访问以下 Microsoft 网页:

http://windows.microsoft.com/en-US/windows7/Command-Prompt-frequently-asked-questions
              

Step3

你可能需要重新安装已更新和替换的修补程序,如“原因”部分中所述。 若要确定是否必须重新安装此类更新的修补程序,请查看已安装修补程序的知识库文章中的“修补程序替换信息”部分。

详细信息

有关 Windows Installer 支持的命令行开关的详细信息,请访问以下 MSDN 网页:

命令行选项 有关 Windows Installer 的更多信息,请访问以下 MSDN 网页:

关于 Windows Installer