DetailPage-MSS-KB

知识库

文章编号: 939043 - 最后修改: 2007年10月31日 - 修订: 1.2

症状

假设存在以下情况:
  • 在安装有 Microsoft Visual Studio(可以为任意版本号)的多个版本类别或 SKU 的计算机上安装一个更新。
  • 该更新程序会更新共享文件且适用于所有 SKU。
  • 以后,可以使用“控制面板”中的“添加或删除程序”项卸载其中一个版本类别或 SKU 的更新。
这种情况下,将只卸载单一版本类别或 SKU 的更新。但是共享文件将会回滚。此过程可能会导致计算机处于易受攻击状态。

原因

出现此问题的原因在于该更新的卸载包装有问题。

所有 Visual Studio 版本的更新都有一个智能更新安装包装。如果安装的某一更新适用于任意版本的 Visual Studio 的多个版本类别或 SKU,则该更新包装将检查您的计算机上是否同时安装有多个 SKU。(例如,该更新包装将检查您的计算机上是否安装有 Visual Studio 2005 Professional Edition 的 SKU 和 Visual Studio 2005 Team Edition 的 SKU。)如果是,该更新包装将只安装该更新一次。不过,该更新包装会在“控制面板”中“添加或删除程序”项的“当前安装的程序”列表中添加元数据,以指示该更新是为每个适用的 SKU 单独安装的。您可以通过使用“控制面板”中的“添加或删除程序”项来进行验证。在该项中,您会看到该更新已独立安装在适用于该更新的每个 SKU 下。

当以后尝试只卸载其中一个 SKU 的更新时,将只删除这个特定 SKU 的更新元数据,这些文件将回滚到早期版本。即使这些文件是在多个 SKU 之间共享的,它们也会进行回滚。此行为是由 Windows Installer 中的一个 bug 导致的。此 bug 会导致 Windows Installer 对于引用单个共享文件的更新数量不保留引用计数。如果所讨论的更新是一个安全更新,此行为可能会导致计算机处于易受攻击状态。

对于任意版本的 Visual Studio,所有面向多个 SKU 的更新都将遇到此问题。

替代方法

为确保您不会令计算机处于易受攻击状态,必须确保已经针对所有适用的 Visual Studio SKU 都安装了更新,并且您不是仅从一个 SKU 卸载该更新。您可以通过使用“控制面板”中的“添加或删除程序”项来进行验证。

另外,客户可以使用 Microsoft Update 来获取 Microsoft Visual Studio 2005 的更新。我们建议您通过使用 Microsoft Update 来选择接收 Visual Studio 的更新。如果选择了这样做,则将始终收到 Visual Studio 2005 的更新。即使您为 Visual Studio 2005 的多个版本类别或 SKU 安装了一个更新,并且后来只卸载了其中一个 SKU 的更新,也会收到上述更新。因此,最好的方法是在卸载 Visual Studio 2005 的安全更新之后,降低计算机处于易受攻击状态的可能性。

注意:Microsoft Update 提供有适用于 Visual Studio 2005 的更新,但未提供面向 Microsoft Visual Studio .NET 2003 和 Microsoft Visual Studio .NET 2002 的更新。对于 Microsoft Update 未提供安全更新的 Visual Studio 版本,必须从 Microsoft 下载中心下载所讨论的更新,然后手动安装该更新。

更多信息

要访问 Microsoft Update 网站,请单击下面的链接:
http://update.microsoft.com/microsoftupdate/v6/default.aspx?ln=zh-cn (http://update.microsoft.com/microsoftupdate/v6/default.aspx?ln=zh-cn)

这篇文章中的信息适用于:
  • Microsoft Visual Studio 2005 Team Suite
  • Microsoft Visual Studio 2005 Team Edition for Software Architects
  • Microsoft Visual Studio 2005 Team Edition for Software Developers
  • Microsoft Visual Studio 2005 Team Edition for Software Testers
  • Microsoft Visual Studio 2005 Professional
  • Microsoft Visual Studio .NET 2003 Professional Edition
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2002 专业版
  • Microsoft Visual Studio .NET 2002 企业级结构设计版
  • Microsoft Visual Studio .NET 2002 企业级开发版
关键字: 
kbtshoot kbexpertiseinter kbsecurity kbbug kbpubtypekc KB939043
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
其他支持选项
Microsoft Community 支持论坛
直接联系我们
查找 Microsoft 认证合作伙伴
Microsoft 商店