我遇到了一个奇怪的问题,希望我能正确描述。这一切都发生在我决定更新 Windows 7 Home 时。
问题是,在 Windows 更新后立即重新启动时,我收到可怕的“文件丢失或损坏”消息。我们谈论的文件是 cng.sys。
我是一名 Linux 用户,所以我做的第一件事就是打开 NTFS 分区并检查文件是否存在。结果发现文件不存在。然后我执行了 Windows 恢复标准程序。
- 恢复控制台,让它修复问题。但没能修复。
- 带有命令提示符的恢复控制台“sfc /scannow /offbootdir= /winbootdir=”,但它告诉我有一个待处理的更新并且无法执行。
- 再次重命名pending.bak和sfc中的pending.xml。即使它能找到问题,也无法修复文件。
此时,我发现了 winsxs 文件夹,其中包含所有更新。我检查了待处理.xml 并发现 cng.sys 实际上已被安排删除和替换(和标签)。我尝试删除引用 cng.sys 的待处理.xml 部分。但没有成功。然后我进入更新文件夹查看是否有新的 cng.sys。
嗯...看起来有很多文件夹都包含该文件,它们的名称相同,但创建日期不同。最后一个(按日期)包含 cng.sys...但它的大小为 0 Kb !!! 这实际上与我的 Windows/System32/drivers 中没有该文件无关,但我决定从旧更新中获取一个旧的 cng.sys 文件并复制它。
结果是错误 0xc0000020,又名“KnownDll 的验证失败....”。
我认为有两种方法可以解决而无需重新安装:
- 覆盖对 KnownDll 的检查。它到底起什么作用?
- 撤消更新?
所有这些都必须在恢复控制台中完成。我想我曾在某处看到过命令行调用某些 Windows 实用程序来恢复更新...但我再也找不到它了...
非常感谢!Kap
更新3:我仍在尝试使其工作...我有一个正在运行的 Linux,这目前并不是很紧急...这是我丢失的文件列表(它们是 0 字节)...你们对我如何获取它们有任何线索吗?
./amd64_microsoft-windows-lsa_31bf3856ad364e35_6.1.7601.17940_none_044c26dd7386a58a/cng.sys ./amd64_microsoft-windows-lsa_31bf3856ad364e35_6.1.7601.22099_none_04a88ce28cc4eb33/cng.sys ./amd64_microsoft-windows-lsa_31bf3856ad364e35_6.1.7601.22099_none_04a88ce28cc4eb33/sspicli.dll ./amd64_microsoft-windows-ncrypt-dll_31bf3856ad364e35_6.1.7601.22099_none_bc3c57b22195c1a0/ncrypt.dll ./amd64_microsoft.vc90.mfc_1fc8b3b9a1e18e3b_9.0.30729.1_none_951ab4128654b0c9/mfcm90.dll ./amd64_microsoft.vc90.mfc_1fc8b3b9a1e18e3b_9.0.30729.1_none_951ab4128654b0c9/mfcm90u.dll ./Backup/amd64_microsoft-windows-lsa_31bf3856ad364e35_6.1.7601.17940_none_044c26dd7386a58a_cng.sys_050526ad ./Backup/wow64_microsoft-windows-lsa_31bf3856ad364e35_6.1.7601.17940_none_0ea0d12fa7e76785_sspicli.dll_bcec1809 ./x86_microsoft-windows-sechost.resources_31bf3856ad364e35_6.1.7600.16385_en-us_dcf8b806907609b7/sechost.dll.mui ./wow64_microsoft-windows-lsa_31bf3856ad364e35_6.1.7601.17940_none_0ea0d12fa7e76785/sspicli.dll
顺便说一下,我运行的Linux命令是:
find . -name '*' -type f -size 0 > log.txt
答案1
由于此问题出现在启动时,您可以尝试启动修复它能修复大多数启动问题。
要访问此工具,请重新启动计算机,点击 键,F8直到到达高级启动选项菜单。选择修复你的计算机进而启动修复。