这是 NTFS 文件系统上的 Windows 7 x64 sp1。
C:\Windows\System32 文件夹中的所有硬链接都消失了,Windows 无法启动,因为操作系统加载程序 C:\Windows\System32\boot\Winload.exe 也消失了。不过,原始文件仍然位于相应的 C:\Windows\winsxs 文件夹中。启动到恢复环境并从其他文件夹复制一个 Winload.exe (x64) 后,Windows 出现错误,指出“ntoskrnl.exe 已损坏或丢失...无法验证其文件数字签名“
在尝试以安全模式启动时,屏幕提示“已加载 \Windows\system32\config\system”后显示上述消息
因为在这个早期启动阶段,smss.exe 仍未加载,所以没有任何转储和日志。
Based on my study, ntoskrnl.exe depends on the following files:
C:\\windows\\system32\\PSHED.DLL
C:\\Windows\\System32\\hal.dll
C:\\Windows\\System32\\kdcom.dll
C:\\Windows\\System32\\clfs.sys
C:\\Windows\\System32\\ci.dll
上述所有文件均从其相应文件夹复制,并使用运行良好的 Windows 7 x64 SP1 验证其 md5。但启动错误仍然相同:“ntoskrnl.exe 已损坏或丢失...“
**Background:**
重启之前,Windows 正在进行更新。然后发生了一些未知的事情,几乎所有进程都无法运行,包括 Windows 任务管理器 taskmgr.exe。
将硬盘安装到其他计算机后,似乎 C:\Windows\System32 文件夹内的所有硬链接都消失了。
我尝试了几种数据恢复软件,但是它们都无法找到那些消失的 NTFS 硬链接。
那么问题是:
这些硬链接的信息存储在哪里?如何恢复它们?它们依赖于某些 Windows 服务还是存储在注册表中?
编辑:
在 WinRE(Windows 恢复环境)上执行“sfc /scannow /offbootdir=c:\ /offwindir=c:\windows”失败,并显示以下消息:
“Windows 资源保护无法执行请求的操作。“
并且该系统没有设立备份点。
答案1
只需从备份中重新映像/恢复,速度就会快得多,也容易得多。在我手下工作的桌面技术人员的经验法则是,如果您无法在一小时内解决问题,那么就该重新映像该机箱了。
就你的情况而言,听起来系统在 Windows 更新过程中重新启动或崩溃了,当时它正在更新一堆系统文件,所以除了 之外,谁知道还缺少哪些文件和链接%Windows%\System32\Ntoskrnl.exe
。显而易见的快速修复方法是复制到ntoskrnl.exe
,%Windows%\System32\
但听起来问题更多,所以可能需要很长时间才能启动它,更不用说启动后让它再次正常工作了。
如果您没有好的映像程序或备份,您可以随时尝试重新安装 Windows 以替换丢失/损坏的文件和硬链接。(然后您需要再次浏览所有 Windows 更新以使所有内容都升级到正确的版本,否则您可能会遇到一些非常奇怪的行为。)
这些硬链接的信息存储在哪里?如何恢复它们?它们依赖于某些 Windows 服务还是存储在注册表中?
要回答这个具体问题,它们是文件系统对象。与文件一样,它们存在于文件系统中,在目录中,不依赖于任何服务或存储在注册表中(尽管与大多数 Windows 一样,您可以编辑注册表以在启动/登录/其他事件触发器上创建硬链接)。如果它们不在那里,那么它们就消失了。硬链接可以像文件一样被删除,而且由于您已经尝试过恢复软件但没有成功,您似乎知道另一个问题的答案。您无法恢复它们,至少在这种情况下不能 - 您需要从备份中重新映像/重新安装/恢复。
答案2
“ntoskrnl.exe 已损坏或丢失...无法验证其文件数字签名”
您可能需要检查 c:\Windows\System32\catroot\ 中的目录文件。此外,WinSxS 子目录中的清单文件 (*.man) 可能已损坏。
您可以尝试使用 SFC 实用程序sfc /SCANNOW /OFFBOOTDIR=d:\ /OFFWINDIR=d:\Windows
或sfc /SCANFILE=d:\Windows\system32\kernel32.dll /OFFBOOTDIR=d:\ /OFFWINDIR=d:\Windows
修复安装。