在某些情况下,Windows 必须覆盖重要的文件,例如 csrss.exe 和 lsass.exe。例如当更新影响这些文件时。或者当文件损坏并使用 SFC 工具修复时。它如何在不结束进程并触发蓝屏的情况下完成此操作?
我尝试添加注册表值HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations
并赋予它此值
\??\C:\csrss.exe
\??\C:\Windows\System32\csrss.exe
但是当我重新启动时,注册表值被删除了,但没有文件被更改。
我的目标是能够用我自己修改的版本覆盖这些文件,而无需使用像 Linux Live CD 这样的外部工具。
是的,我知道这很愚蠢。我对由此造成的任何损害负全部责任。尽管如此,我仍然想知道怎么做。感谢您的帮助。
答案1
我搞清楚了自己想要做什么。我想像 Windows Update 那样修改文件。经过尝试,我发现了这一点。
创建一个包含该内容的 XML 文件。
<?xml version='1.0' encoding='utf-8'?>
<PendingTransaction Version="3.1">
<POQ postAction="reboot">
<MoveFile source="\??\C:\csrss.exe" destination="\??\C:\Windows\System32\csrss.exe"/>
</POQ>
</PendingTransaction>
SetupExecute
然后修改键中的值HKLM\SYSTEM\CurrentControlSet\Control\Session Manager
以包含C:\Windows\System32\poqexec.exe /displayprogress \??\[PATH TO XML]
这使得 Windows 在启动之前处理“原始操作队列”。