Dav*_*ica 3 windows windows-7 windows-update dism
我正在尝试使用 Windows 更新更新我的 Windows 7 机器,但我不断收到错误 800B0100(类似于此处、此处和此处报告的内容)。在采取了这些指南中提到的几个步骤(系统更新准备工具、检查磁盘、Windows Update Troubeshooter、DISM、sfc,也许我忘记了其他一些东西)之后。我来的时候大多是两手空空。
我得到的唯一线索来自DISM /Online /Cleanup-image /Scanhealth我运行的命令。这产生了这个CheckSUR.log 文件。一些亮点:
Checking Windows Servicing Packages
Checking Package Manifests and Catalogs
(f) CBS MUM Corrupt 0x00000000 servicing\Packages\Microsoft-Windows-IE-Hyphenation-Parent-Package-English~31bf3856ad364e35~~~11.2.9412.0.mum Expected file name Microsoft-Windows-IE-Hyphenation-Parent-Package-English~31bf3856ad364e35~neutral~~11.2.9412.0.mum does not match the actual file name
(f) CBS MUM Corrupt 0x00000000 servicing\Packages\Microsoft-Windows-IE-Spelling-Parent-Package-English~31bf3856ad364e35~~~11.2.9412.0.mum Expected file name Microsoft-Windows-IE-Spelling-Parent-Package-English~31bf3856ad364e35~neutral~~11.2.9412.0.mum does not match the actual file name
(f) CBS MUM Corrupt 0x800F0900 servicing\Packages\Package_111_for_KB3040272~31bf3856ad364e35~amd64~~6.1.1.1.mum Line 1:
(f) CBS Catalog Corrupt 0x800B0100 servicing\Packages\Package_111_for_KB3040272~31bf3856ad364e35~amd64~~6.1.1.1.cat
(f) CBS MUM Corrupt 0x800F0900 servicing\Packages\Package_112_for_KB3040272~31bf3856ad364e35~amd64~~6.1.1.1.mum Line 1:
...
Checking Package Watchlist
Checking Component Watchlist
Checking Packages
Checking Component Store
(f) CSI Manifest All Zeros 0x00000000 winsxs\Manifests\amd64_microsoft-windows-wow64_31bf3856ad364e35_6.1.7601.23136_none_c6c193f2071b07e3.manifest amd64_microsoft-windows-wow64_31bf3856ad364e35_6.1.7601.23136_none_c6c193f2071b07e3
(f) CSI Manifest All Zeros 0x00000000 winsxs\Manifests\amd64_microsoft-windows-ncrypt-dll_31bf3856ad364e35_6.1.7601.23136_none_bc7a217a2167e4bd.manifest amd64_microsoft-windows-ncrypt-dll_31bf3856ad364e35_6.1.7601.23136_none_bc7a217a2167e4bd
(f) CSI Manifest All Zeros 0x00000000 winsxs\Manifests\amd64_microsoft-windows-ntdll_31bf3856ad364e35_6.1.7601.23136_none_b772aa2a2bf98230.manifest amd64_microsoft-windows-ntdll_31bf3856ad364e35_6.1.7601.23136_none_b772aa2a2bf98230
(f) CSI Manifest All Zeros 0x00000000 winsxs\Manifests\amd64_microsoft-windows-smss_31bf3856ad364e35_6.1.7601.23136_none_0ad673e548fd75d4.manifest amd64_microsoft-windows-smss_31bf3856ad364e35_6.1.7601.23136_none_0ad673e548fd75d4
(f) CSI Manifest All Zeros 0x00000000 winsxs\Manifests\amd64_microsoft-windows-rpc-http_31bf3856ad364e35_6.1.7601.23136_none_fe94b8d86f1fbfc8.manifest amd64_microsoft-windows-rpc-http_31bf3856ad364e35_6.1.7601.23136_none_fe94b8d86f1fbfc8
...
servicing\packages\Microsoft-Windows-IE-Hyphenation-Parent-Package-English~31bf3856ad364e35~~~11.2.9412.0.mum
servicing\packages\Microsoft-Windows-IE-Spelling-Parent-Package-English~31bf3856ad364e35~~~11.2.9412.0.mum
servicing\packages\Package_111_for_KB3040272~31bf3856ad364e35~amd64~~6.1.1.1.mum
servicing\packages\Package_111_for_KB3040272~31bf3856ad364e35~amd64~~6.1.1.1.mum
servicing\packages\Package_112_for_KB3040272~31bf3856ad364e35~amd64~~6.1.1.1.mum
servicing\packages\Package_112_for_KB3040272~31bf3856ad364e35~amd64~~6.1.1.1.mum
servicing\packages\Package_113_for_KB3040272~31bf3856ad364e35~amd64~~6.1.1.1.mum
servicing\packages\Package_113_for_KB3040272~31bf3856ad364e35~amd64~~6.1.1.1.mum
servicing\packages\Package_114_for_KB3040272~31bf3856ad364e35~amd64~~6.1.1.1.mum
Run Code Online (Sandbox Code Playgroud)
如何修复此错误,以便下次运行时DISM不会出现这些错误?我希望这将修复我的原始错误(Windows 更新上的 800B0100 错误代码),因此,如果您有解决方法,我将不胜感激。
DISM如果它可以访问%WINDIR%\Temp\CheckSUR\. 如果没有这些文件,DISM系统更新和准备工具( SURT)只会生成所遇到损坏文件的列表,而实际上不会执行任何修复(如您所见)。
那么,您如何识别损坏的文件然后修复它们呢?这篇MS KB 文章对其进行了合理的描述,尽管有一些断开的链接和缺失的细节,这些内容主要在其他 MS KB 中得到解决。令人沮丧的是,某些信息与这篇MS 技术网文章*(见脚注)相冲突。假设您更愿意阅读这里的程序而不是将几个不同的来源拼接在一起......
在%WINDIR%\Logs\CBS\CheckSUR.log通过安装SURT或运行DISM生成的 中,跳到文件底部并阅读部分servicing\packages\Package_中以开头的行Unavailable repair files:。在您看到_for_KB ###### 的地方,KB######(在您的情况下为KB3040272)是您要下载的更新。@magicandre1981 还确定KB3071756对您有影响,大概是来自问题中未直接提供的日志文件的一部分。
确定损坏的 KB 后,您可以MSU在support.microsoft.com (/kb/######)上的相关 KB 条目中获取 Microsoft Update文件,或者使用 IE 转到Microsoft Update Catalog并搜索相关知识库编号。在 MS KB 页面上,向下滚动到“更新信息”部分并查找显示“立即下载程序包”的链接。在您的操作系统风格的链接旁边(x86 = 32 位操作系统;x64 = 标准 64 位;ia-64 仅适用于高端英特尔 64 位服务器)。下载文件。
下载文件后,您可以将整个 MSU 如下所示放置,或者您可以提取包含的所有mum,cat和manifest文件,然后将 CheckSUR.log 指示的损坏包的“良好”版本移动到适当的目录中(再次,如下所示以下)。可以使用以下命令序列从 msu 文件中提取。
expand -f:* C:\path\to\msu.msu %temp%\msuexpanded\
expand -f:* %temp\msuexpanded\Windows6.1-KBnnnnnn-xnn.cab %temp\msuexpanded\cab\
Run Code Online (Sandbox Code Playgroud)
update.cat并且update.mum应该重命名为特定于包的名称 - 例如,对于损坏的包,您可以将其重命名update.cat为Package_for_KB3040272~31bf3856ad364e35~amd64~~6.1.1.1.cat.
然后,您应该将文件(msu 和/或其他扩展名)从 %temp\msuexpanded\cab\ 目录*(参见脚注)移动到位:
File Extension | Absolute path (create if needed) | OS version confirmed (by)
-------------- | -------------------------------- | -----
msu | %SYSTEMROOT%\CheckSUR\packages\ | Windows 7 SP1 x64 (@chadnt‡)
Run Code Online (Sandbox Code Playgroud)
(符号见脚注)
File Extension | Subdirectory of %WINDIR%\Temp\CheckSUR\ (create if needed)
-------------- | -------
cat | servicing\Packages\
mum | servicing\Packages\
manifest | winsxs\Manifests\
msu (alternate)| Packages\
Run Code Online (Sandbox Code Playgroud)
双方%SYSTEMROOT%并%WINDIR% 默认为C:\ WINDOWS
如果修复文件在正确的目录中,DISM/SURT 现在应该修复损坏的文件。
安装KB2966583 - Windows 7 和 Windows Server 2008 R2 中系统更新准备工具的改进(知识库文章|MSU下载)后,命令行版本“DISM”变得可用。
DISM 成为Windows7中 CheckSUR 又名系统更新准备工具(SURT)的命令行可调用版本,因此您无需在每次需要检查/修复损坏的 MS 更新时从MS KB 947821 “安装”SURT 。
DISM的用法如下
DISM /Online /Cleanup-Image /Scanhealth
Run Code Online (Sandbox Code Playgroud)
必须从管理员帐户运行(即管理员/提升的命令提示符或具有提升权限的开始栏)。
或者,您始终可以再次从 KB947821安装SURT。
再次运行 DISM 或 SURT 后,再次检查您的 CheckSUR.log 文件,看看它是否解决了您损坏的包。如果它不起作用,您可能希望考虑对 Windows进行就地更新。
免责声明:部分内容来自@magicandre1981 的回复。随着我添加了如此多的细节,我不再觉得对他的帖子进行简单的编辑是合适的。
*关于目录,Microsoft 网站上提供了相互矛盾的信息:
msu应该复制到%SYSTEMROOT%\CheckSUR\packagesmsu,
mum和cat以%WinDir%\Temp\CheckSUR\Packages\mum和cat文件进入
%windir%\Temp\CheckSUR\servicing\packages同样,有几个位置被标识为manifest文件的适当目录