如果直接从全新 ISO 复制不起作用,我该如何修复 SFC 标记为已损坏的文件?

如果直接从全新 ISO 复制不起作用,我该如何修复 SFC 标记为已损坏的文件?

我最近安装了一台新的 Windows 10 PC(当时是 v20H2),在自定义它时,我用我更喜欢的 Win8.1 版本替换了默认的“新电子邮件”声音(C:\Windows\Media\Windows Notify Email.wav)。但是,我这样做是通过使用 Win8.1 音频文件覆盖原始 Win10 音频文件来实现的,而不是仅仅将 Win8.1 文件添加到同一目录并重命名它(“Windows Notify Email_Win8.1.wav”或其他)。我会为此感到后悔的。

此后,我将 Windows 更新至 v21H1。今天早些时候,我第一次在此系统上运行了 SFC /scannow,结果显示“发现损坏的文件,但无法修复其中的一些文件”。在 CBS 日志中,我发现了以下内容:

2021-06-06 02:39:15, Info                  CSI    00000217 Hashes for file member [l:24]'Windows Notify Email.wav' do not match.
 Expected: {l:32 ml:33 b:b04f63d689ae7d627a5dc7895bbe53fb3bf470a43c4f1f6339dd4ab8890ffa6f}.
 Actual: {l:32 b:7897e75ba5b52a8e53431e7af5758a84acdf2d50d6d2a9dd2d90fee0034e11c0}.
2021-06-06 02:39:15, Info                  CSI    00000218 [SR] Cannot repair member file [l:24]'Windows Notify Email.wav' of Microsoft-Windows-Shell-Sounds, version 10.0.19041.1, arch amd64, nonSxS, pkt {l:8 b:31bf3856ad364e35} in the store, hash mismatch
2021-06-06 02:39:15, Info                  CSI    00000219 Hashes for file member [l:24]'Windows Notify Email.wav' do not match.
 Expected: {l:32 ml:33 b:b04f63d689ae7d627a5dc7895bbe53fb3bf470a43c4f1f6339dd4ab8890ffa6f}.
 Actual: {l:32 b:7897e75ba5b52a8e53431e7af5758a84acdf2d50d6d2a9dd2d90fee0034e11c0}.
2021-06-06 02:39:15, Info                  CSI    0000021a [SR] Cannot repair member file [l:24]'Windows Notify Email.wav' of Microsoft-Windows-Shell-Sounds, version 10.0.19041.1, arch amd64, nonSxS, pkt {l:8 b:31bf3856ad364e35} in the store, hash mismatch
2021-06-06 02:39:15, Info                  CSI    0000021b [SR] This component was referenced by [l:154]'Microsoft-Windows-Client-Desktop-Required-Package~31bf3856ad364e35~amd64~~10.0.19041.1023.ACD49602CE22B8D2FE76CB65181A0F3C34476C610F7967574610C8CF843FB4AB'

以下是我尝试过的所有方法的概述:

  • 我运行了sfc /scannow多次,但错误始终没有消失。
  • 然后我运行dism /online /cleanup-image /restorehealth,接着运行 dism /online /cleanup-image /checkhealth,没有发现组件存储损坏。
  • 然后再传几次sfc /scannow;仍然损坏。
  • 随后 CBS.log 提到了有关“商店中的版本也已损坏”的内容。
  • 我下载了 21H1 媒体创建工具,并用它下载了全新的 Win10 v21H1 ISO,并将其安装到 I:。
  • 我跑了dism /online /cleanup-image /restorehealth /source:I:\sources\install.esd /limitaccess。成功完成。
  • dism /online /cleanup-image /checkhealth. 组件存储的清洁健康证明。
  • sfc /scannow,多次尝试。仍然没有解决问题。
  • 也许我可以手动替换该文件?
  • 我直接从新 ISO 的 install.esd 中提取了“Windows\Media\Windows Notify Email.wav”,并将其复制到驱动器上损坏的文件上。替换成功,没有任何错误。
  • sfc /scannow仍然损坏,SFC 仍然无法修复。(那时我摘录了上述 CBS.log。)
  • 我尝试从 C:\Windows\Media 中删除受影响的文件(实际上只是将其移动到我的桌面)。
  • sfc /scannow给出了相同的错误,奇怪的是,CBS.log 说的是同样的事情——哈希不匹配,而不是“文件丢失”或类似情况。(没有给我一份新的副本。)
  • 顺便说一句,我检查了 C:\Windows\Media 文件夹权限并启用了 TrustedInstaller 的完全控制。什么都没改变。
  • (未提及:为了安全起见,整个过程中重新启动多次。)

我没有办法了。即使手动用全新 ISO 中的副本替换据称已损坏的文件也无济于事。更奇怪的是,当我通过哈希工具运行文件时,它给出的哈希值 (SHA256) 与 CBS 日志中说的 SFC 正在寻找的哈希值 (“b04………a6f”) 完全相同,而不是“实际”的哈希值。据我所知,这是一个完好的副本,但 SFC 一直将其标记为已损坏。我拒绝采取诸如重置 PC 之类的极端措施,撤销数周的设置工作(大量应用程序和配置),只是为了让 SFC 不再为一个 160 KB 的 .wav 文件而绊倒。

如能得到任何帮助以解决此问题,我将非常感激。

操作系统:Win10 Pro x64 21H1(19043.1023)


更多信息:我刚刚再次尝试删除“C:\Windows\Media\Windows Notify Email.wav”并运行SFC /scannow以查看它是否会替换它,似乎这样做会导致 SFC 将此特定错误放入 CBS 日志中:

Could not reproject corrupted file \??\C:\Windows\Media\\Windows Notify Email.wav; source file in store is also corrupted

需要说明的是,我根本没有碰过存储(我甚至不知道它在哪里);我只是从 C:\Windows\Media 中删除了“损坏”的文件。这是否提供了任何有用的信息,还是只是更多的噪音?

答案1

修复了!Windows 10 论坛上的某个人向我指出了 SFC 一直试图替换文件的组件存储文件夹C:\Windows\WinSxS\amd64_microsoft-windows-shell-sounds_31bf3856ad364e35_10.0.19041.1_none_cd0389b654e71da2(我在 CBS 日志中看到过,但以为只是一些随机代码,没有意识到它是一个文件夹)——当我去那里时,我发现那里的“Windows Notify Email.wav”文件不知何故是 Win8.1 版本,而不是原始的 Win10 版本。不知道这是怎么发生的,除非这是 Windows 在更新到 v21H1 期间所做的事情。

不管怎样,我将它替换为 C:\Windows\Media 中的 Win10 文件,然后运行sfc /scannow,这次它终于给了我Windows Resource Protection did not find any integrity violations。哈利路亚。

感谢所有参与的人。如果将来出现任何灾难性的错误,一定会考虑进行维修安装。

相关内容