tl;dr:
1)Win7 x86 SP1 无法安装
2)使用 CheckSUR 在系统上发现“损坏”更新:KB2479628
3)无法使用任何已知方法卸载/重新安装更新
4)卡住了?
这将是一个漫长的场景,请耐心等待。以下是背景细节:
周末,我在停机期间负责为所有适用的服务器安装 Windows 7 SP1。除了我们用于测试的一台麻烦的 Win7 Pro 32 位虚拟机外,所有服务器都更新正常。由于它不是关键的机器,所以我忽略了它,继续完成其他检查,想着以后再处理它。今天我花了大约 3 个小时来排除故障,找出为什么这个东西无法更新到 SP1。我使用 Windows 更新时收到的错误代码是 0x800F080D。
使用谷歌时,我偶然发现了 CheckSUR 工具,它可用于检查更新所需的任何错误或缺少的功能:http://support.microsoft.com/?kbid=947821
运行后,我查看了 %windir%\logs\CBS\CheckSUR.log,发现了以下内容:
Checking Package Manifests and Catalogs
(f) CBS Catalog Corrupt 0x800B0100 servicing\Packages\Package_2_for_KB2479628~31bf3856ad364e35~x86~~6.1.1.4.cat
(f) CBS MUM Corrupt 0x800F080D servicing\Packages\Package_for_KB2479628_RTM~31bf3856ad364e35~x86~~6.1.1.4.mum
(f) CBS Catalog Corrupt 0x800B0100 servicing\Packages\Package_for_KB2479628_RTM~31bf3856ad364e35~x86~~6.1.1.4.cat
(f) CBS MUM Corrupt 0x800F080D servicing\Packages\Package_for_KB2479628~31bf3856ad364e35~x86~~6.1.1.4.mum
Checking Component Store
(f) CSI Manifest Failed Catalog Check 0x00000000 winsxs\Manifests\x86_f352a6c8c5baa79b60637048ed291c9c_31bf3856ad364e35_6.1.7600.16732_none_1611ae244ffc9218.manifest x86_f352a6c8c5baa79b60637048ed291c9c_31bf3856ad364e35_6.1.7600.16732_none_1611ae244ffc9218
至少这样就把问题缩小到了一个损坏的更新。很简单,我只需进入“程序和功能”并卸载它。这时我才意识到它甚至没有被列为已安装。这个更新肯定在某个时候出了什么严重问题。
我查看了注册表,发现了大量与此更新相关的条目。无法删除任何值或键以诱骗系统重新安装更新。CheckSUR.log 中引用的 %windir%\servicing\Packages\ 处的实际包文件也是如此。即使我以管理员身份登录,Windows 也抱怨需要 SYSTEM 的权限才能修改或删除文件。
我确实设法在这里找到了独立的 msu 安装程序:http://www.microsoft.com/technet/security/bulletin/MS11-012.mspx
当我运行该 msu 时,系统提示我更新已安装。
然后,我查看了此页面上列出的所有 3 种手动卸载方法的列表:http://www.sevenforums.com/tutorials/109213-windows-update-uninstall-console-level.html
均未成功。我使用方法 II 和 III 时遇到此错误,这似乎很常见:0x800B0100 主题中不存在签名。
我还尝试打开此更新的 cab 文件并手动替换据称已损坏的 .mum 和 .cat 文件,但遇到了 SYSTEM 权限问题。
还没有尝试过任何安全模式,但认为它不会更好。
我还尝试在安全模式下运行 sfc /scannow,它给出了非常有用的消息,表明它发现了文件问题但无法修复它们。
是我忽略了什么吗?还是说这个 Win7 盒子基本上卡在了没有 SP1 的状态,直到我可以重新安装?也许可以使用 LiveCD 并在 Windows 之外手动替换那些 .cat 和 .mum 文件?真的希望以一种不会让 Windows 更新稍后发脾气的方式来做到这一点。
谢谢你的帮助!
答案1
Windows 7 SP1 不会给您的系统添加任何新内容,它只是将所有以前的更新合并为一个,仅对重新安装有用。
您可以尝试禁用自动更新/BITs 服务,删除 C:\Windows\SoftwareDistribution,然后重新启用这两个服务,然后安装 SP1,不过我会创建一个系统还原点以确保安全。
如果失败的话我将重新安装 SP1,因为它是一台测试机器。