当iso损坏但主体数据完整时,可先用powershell校验哈希或7-zip直接解压sources目录抢救install.wim/sxs;若失败,则用ddrescue或windd跳过坏扇区生成可用映像,再从中提取文件。

当你手头只有一个损坏的Win10 ISO镜像(比如校验失败、双击挂载报错、资源管理器无法读取内容),但又急需从中提取install.wim或sxs文件夹来修复系统或安装.NET 3.5时,不能依赖常规挂载方式——必须绕过ISO结构层,直接从原始字节流中抢救关键数据。
确认ISO是否真损坏,还是仅元数据异常
先用PowerShell验证底层可读性:以管理员身份运行PowerShell,执行 Get-FileHash -Algorithm SHA256 "D:\broken.iso"。如果返回哈希值而非“无法访问”错误,说明文件主体完整,只是ISO头或目录表损坏;此时仍可抢救,【切勿直接格式化或删除该ISO】。
若命令卡死或报“拒绝访问”,再用7-Zip右键打开该ISO——很多损坏ISO仍能被7-Zip识别为归档,可直接浏览内部文件树。
用7-Zip暴力解压出sources目录
右键损坏的ISO文件 → 选择“7-Zip → 打开压缩包”。
展开根目录,找到 sources 文件夹 → 逐个检查其中是否存在 install.wim 或 install.esd。
如果看到这两个文件且图标正常(非灰色叉),直接右键 → “提取到 sources\” → 指定一个空文件夹(如 C:\recovery)即可完成提取。这一步成功率超80%,因为7-Zip不依赖ISO文件系统,而是扫描原始数据块匹配WIM/ESD魔数(0x4D494D45 / 0x45534420)。
当7-Zip也打不开时:用ddrescue跳过坏扇区提取原始映像
方法一:Windows版ddrescue(推荐使用 WSL2 中的 GNU ddrescue)
① 在WSL2中执行:sudo apt install gddrescue;
② 将损坏ISO复制到WSL的Linux路径下(如 /home/user/broken.iso);
③ 运行:ddrescue -d -r3 "/home/user/broken.iso" "/home/user/good.img" "/home/user/logfile.log";
④ 等待完成后,在Windows资源管理器中右键 good.img → “装载”,此时会生成一个可读驱动器,进入其 sources 目录即可拷贝 install.wim 或 sxs 文件夹。
注意:【-d 参数必须加上,否则ddrescue会尝试调用缓存,对已损坏介质反而加剧读取失败】;-r3 表示重试3次,避免卡死在单个坏块上。
方法二:纯Windows替代方案(无WSL时)
下载 WinDD(开源工具),运行后选择源文件为你的损坏ISO,目标设为新文件名(如 recovered.img),勾选“Skip bad sectors”,点击“Start”——它会自动跳过无法读取的512字节扇区,把其余部分拼成可用映像。
从install.esd中导出install.wim供DISM使用
如果只提取到 install.esd,而你需要的是 install.wim(例如用于挂载修改或部署),请务必在管理员CMD中执行:
dism /Get-WimInfo /WimFile:C:\recovery\sources\install.esd
查看输出中的Index列表,记下你要导出的版本序号(通常专业版是index:3,家庭版是index:1);
然后执行:dism /export-image /SourceImageFile:C:\recovery\sources\install.esd /SourceIndex:3 /DestinationImageFile:C:\recovery\sources\install.wim /Compress:max /CheckIntegrity;
这一步耗时较长,但/CheckIntegrity能确保导出的WIM未因原始ESD局部损坏而引入错误——没有它,后续DISM挂载可能失败。











