结论
我有一个损坏的 WIM 档案,我想提取它。我尝试使用 DISM,但它不允许我挂载它,因为它无法将其识别为 WIM 文件。我也尝试使用十六进制编辑器编辑它,但我不知道我能改变什么。
问题
我在 Windows 10 上使用 7-zip 创建了一个 WIM 文件,其中包含我主目录中的一堆文件夹,然后通过网络将其移动到外部硬盘驱动器。当我稍后尝试使用 7-zip 提取它时,它只会将其作为包含以下内容的 zip 文件打开:
- _rels
- .rels.xml
- 文档属性
- 应用程序文件
- 核心文件
- 单词
- _rels
- 文档.xml.rels
- 主题
- 主题1.xml
- 文档.xml
- 字体表.xml
- 设置.xml
- 样式表
- 网页设置.xml
- _rels
- [内容类型].xml
到目前为止我尝试过
这是使用 7-zip 的测试存档功能的结果:
D:\WIMFile.wim
警告:
有效载荷数据结束后有一些数据
警告
无法将文件作为 [wim] 存档打开
文件作为 [zip] 存档打开
我谷歌了一下,发现这它说您可以使用 DISM 修复 WIM 文件。不幸的是,除非我遗漏了什么,否则它需要您安装该文件才能修复它。我尝试在 Windows 命令行中使用“dism /Apply-Image /ImageFile:D:\WIMFile.wim /Index:1 /ApplyDir:D:\mountPoint”安装它,并收到此错误:
错误:11
尝试加载格式不正确的程序。
DISM 日志文件位于 C:\WINDOWS\Logs\DISM\dism.log
查看日志文件显示以下内容:
警告 DISM DISM WIM 提供程序:PID=6912 [ReadWimHeader:(1723) -> 版本/标头不匹配] D:\WIMFile.wim (HRESULT=0x8007000B) - CWimManager::WimProviderMsgLogCallback [6912] [0xc144012e]
错误 DISM DISM WIM 提供程序:PID=6912 [WIMCreateFile:(425) > -> 无法读取 WIM 标头] D:\WIMFile.wim (HRESULT=0x8007000B) - CWimManager::WimProviderMsgLogCallback
我又谷歌了一下,发现这里使用 7z 档案,您可以使用十六进制编辑器手动编辑档案并替换损坏的部分。我制作了一些其他 WIM 文件只是为了进行比较,并能够在 FAR Manger 中打开它们。损坏的文件有 43 GB,这显然太大了,因为它告诉我:
无法打开文件
D:\WIMFile.wim
存储空间不足,无法处理此命令
因此,我回到谷歌,找不到任何与 FAR Manager 相关的内容,但我找到了 support.microsoft.com/en-us/kb/106167(抱歉,我用完了链接配额),并决定尝试一下。我必须创建注册表项并将值设置为最大值 12,但这并没有什么区别。
接下来,为了获得更多空间,我想我可以切换到几乎空了的 500 GB 硬盘,上面装有 Kubuntu 14.04。我不得不切换到名为 Bless 的十六进制编辑器,因为 FAR Manager 仅适用于 Windows,但我能够打开损坏的文件。我制作的测试 WIM 文件之间唯一明显相似的方面是每个文件最开头的文本“MSWIM”。损坏的文件缺少这个,所以我添加了它,但这没什么区别。我不确定我还能更改什么而不会进一步弄乱文件。
问题
那么,我还可以用十六进制编辑器更改什么才能提取此文件?我是否错过了 DISM 中允许你修复文件而无需安装它的某些功能?我也愿意接受任何其他解决方案。
编辑
我忘了说我还试过 7-zip 的解析模式。它给了我一堆档案,其中一些我可以打开,里面有一些我的文件。还有一个大文件,大约是原始 WIM 文件的 90%,但仍然无法打开。