为什么SFC总是卡在这一文件上?

为什么SFC总是卡在这一文件上?

当我启动 Windows 时,日志显示不是登录屏幕,而是带有光标的黑屏。安全模式也发生同样的情况。

运行启动修复时,SrtTrail.txt 显示a recently serviced boot binary is corrupt.但它没有告诉我哪一个!

因此,我从安装 USB 启动到 Windows 恢复环境,尝试修复我的系统文件。

我的 Windows 驱动器安装为 F:\,因此我使用以下命令运行 dism:

dism.exe /Image:F:\ /Cleanup-Image /Restorehealth

这似乎表明没有损坏,因此我使用以下命令运行 sfc:

sfc /scannow /offbootdir=F:\ /offwindir=F:\Windows /offbootdir=F:\Windows\System32\LogFiles\sfc-1.txt

但是,每当我运行该命令时,SFC 都会失败,并显示

Windows 资源保护无法执行请求的操作。

日志底部显示:

00001177 [SR] Verify complete
00001178 [SR] Verifying 1 components
00001179 [SR] Beginning Verify and Repair transaction
0000117a@2020/1/4:12:46:43.995 (F) onecore\base\wcp\sil\fs_rerooted.cpp(424): Error c0000039 [Error,Facility=(system),Code=57 (0x0039)] originated in function Windows::Rtl::SystemImplementation::CRerootedFileSystemProvider::SysCreateFile expression: (null)
0000117b (F) c0000039 [Error,Facility=(system),Code=57 (0x0039)] #2775836# from Windows::Rtl::SystemImplementation::CSystemIsolationLayer_IRtlSystemIsolationLayerTearoff::OpenFilesystemDirectory(flags = 0, da = (FILE_GENERIC_READ|FILE_EXECUTE), dn = [l:7]'\??\C:\', sa = (FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE), oo = (FILE_DIRECTORY_FILE|FILE_SYNCHRONOUS_IO_NONALERT|FILE_OPEN_FOR_BACKUP_INTENT), dir = NULL, disp = (null))
0000117c (F) c0000039 [Error,Facility=(system),Code=57 (0x0039)] #2775835# from CFileInstaller::CommitChanges(...)
0000117d (F) c0000039 [Error,Facility=(system),Code=57 (0x0039)] #2775834# from PrimitiveInstaller::CCoordinator::FinalizeChanges(...)
0000117e Direct SIL provider: Number of files opened: 25318.
0000117f Direct SIL provider: Number of files opened: 4.
00000003 Servicing stack shim unable to mark handle 1e0 ('\Device\Ramdisk{d9b257fc-684e-4dcb-ab79-03cfa2f6b750}\Windows\temp\SSS_8f26c8f8fcc2d501010000005c032403\msdelta.dll') for delete-on-close, error STATUS_CANNOT_DELETE
00000004 Servicing stack shim unable to mark handle 198 ('\Device\Ramdisk{d9b257fc-684e-4dcb-ab79-03cfa2f6b750}\Windows\temp\SSS_8f26c8f8fcc2d501010000005c032403') for delete-on-close, error STATUS_DIRECTORY_NOT_EMPTY

我尝试移动F:\Windows\System32\msdelta.dll到不同的目录并重新运行 sfc,但对于同一个文件仍然出现相同的错误。

重启后也会发生同样的事情。即使该文件不在 System32 目录中,它也会停留在同一个文件上。

这个错误似乎是说处理完文件后无法删除它,而不是说文件有问题。

我能做些什么来避免这种情况?

我能想到的唯一选择是编写一个 bat 文件,循环遍历 System32 中的所有文件,并使用该scanfile选项调用 sfc。

编辑:我运行 sfc 并使用 /scanfile 选项来检查单个文件,并在日志文件末尾收到相同的消息:

    sfc /scanfile=F:\Windows\System32\dwm.exe /offbootdir=F:\ /offwindir=F:\Windows /offbootdir=F:\Windows\System32\LogFiles\sfc-1.txt

给予

00000003 [SR] Verifying 1 components
00000004 [SR] Beginning Verify and Repair transaction
00000005 [SR] Verify complete
00000006 Direct SIL provider: Number of files opened: 22.
00000007 Direct SIL provider: Number of files opened: 4.
00000003 Servicing stack shim unable to mark handle 84 ('\Device\Ramdisk{d9b257fc-684e-4dcb-ab79-03cfa2f6b750}\Windows\temp\SSS_fbc9cb9692c3d50101000000f006f406\msdelta.dll') for delete-on-close, error STATUS_CANNOT_DELETE
00000004 Servicing stack shim unable to mark handle 194 ('\Device\Ramdisk{d9b257fc-684e-4dcb-ab79-03cfa2f6b750}\Windows\temp\SSS_fbc9cb9692c3d50101000000f006f406') for delete-on-close, error STATUS_DIRECTORY_NOT_EMPTY

这让我认为对的引用msdelta.dll可能不是这里的问题,尽管它每次都出现在日志中这一点很奇怪也很令人困惑。

相关内容