如何从 SFC 中的“修复待处理”错误中恢复?

如何从 SFC 中的“修复待处理”错误中恢复?

我正在尝试修复 Windows 注册表和服务的问题。我尝试运行 sfc 命令,但收到以下错误消息?

C:\Windows>sfc /scannow

Beginning system scan.  This process will take some time.    

There is a system repair pending which requires reboot to complete.  Restart
Windows and run sfc again.

C:\Windows>

但是自从这个消息第一次出现以来,我已经重启了好几次,我甚至尝试在安全模式和控制台模式下运行该命令,但仍然收到相同的消息。我该如何摆脱它?

winsxs 文件夹中有此文件:C:\Windows\winsxs\cleanup.xml

这是它的内容:

<?xml version='1.0' encoding='utf-16'?>
<PendingTransaction >
    <POQ postAction="NoReboot">
        <DeleteFile path="\??\D:\$$DeleteMe.CbsMsg.dll.01c85bd2f5893b40.0000"/>
    </POQ>
</PendingTransaction>

这可能是什么原因?这是原因吗?删除此文件安全吗?

更新

我尝试重命名它但操作失败。

我以提升的权限运行 explorer.exe 并导航到该位置。我收到了 UAC 确认提示,然后出现了以下错误。

Destination Folder Access Denied
You need permission to perform this action

如何重命名或删除此文件?我需要使用 cmd 或进入安全模式来执行此操作吗?

更新 2

我使用命令提示符启动了安全模式,并尝试获取文件所有权,然后重命名它。重命名失败。

C:\Windows\winsxs>ren cleanup.xml cleanup.xml.old
Access is denied.

C:\Windows\winsxs>takeown /f "cleanup.xml"

SUCCESS: The file (or folder): "C:\Windows\winsxs\cleanup.xml" now owned by user
 "mycomputername\username".

C:\Windows\winsxs>ren cleanup.xml cleanup.xml.old
Access is denied.

C:\Windows\winsxs>

我还发出了以下命令。

C:\Windows\system32>icacls "C:\Windows\winsxs\cleanup.xml" /grant username:F
processed file: C:\Windows\winsxs\cleanup.xml
Successfully processed 1 files; Failed processing 0 files

C:\Windows\system32>cd ..\winsxs

C:\Windows\winsxs>ren cleanup.xml cleanup.xml.old
Access is denied.

C:\Windows\winsxs>

它仍然不允许我重命名它。我在正常 Windows 模式下发出了最后两个命令。这有关系吗?...我会尝试重新启动。

答案1

我在 Windows 7 中遇到了同样的问题。我最终sfc从修复控制台使用以下命令运行(由于某种原因,它被分配D:到我的主磁盘,而不是C:

删除 d:\windows\winsxs\pending.xml
删除 x:\windows\winsxs\pending.xml
sfc /scannow /offbootdir=D:\ offwindir=D:\Windows

(然而,sfc现在告诉我

Windows 资源保护发现了损坏的文件,但无法修复其中一些。

所以这没有解决我的启动问题

答案2

这个命令应该可以完成这个任务。

dism.exe /image:C:\ /cleanup-image /revertpendingactions

但这只适用于 Windows 7 或更高版本。我没有安装程序Windows Vista 中的工具。我只是想与那些发现这个问题并且拥有 Windows 7 的人分享它。我当然无法亲自测试这一点,但是这家伙说他已经能够消除这个恼人的错误信息。所以也许值得一试。

答案3

在注册表中查看SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing是否看到名为的键RebootPending。Windows 还会在此处检查是否有待处理的重新启动。

答案4

这对我有用:

sfc /SCANNOW /OFFBOOTDIR=c:\ /OFFWINDIR=d:\Windows

来源:http://blog.crosbydrive.com/?p=339

相关内容