msconfig.exe
我的 PC 运行 Windows 7 Home Premium 64 位,突然无法正常启动。我能够启动到带网络连接的安全模式,但即使使用禁用后也无法正常启动一切。我尝试从最后一个正确配置启动,但以完全相同的方式失败。我很久以前就禁用了系统还原,因此没有还原点。我运行了 Malwarebytes,但没有发现任何东西。我从第一天开始就安装了 AVG,并且自构建以来从未遇到过任何病毒问题。chkdsk /f
没有报告任何错误。
当我尝试运行启动修复时,系统提示无法自动修复计算机。问题详情:
Problem Event Name: StartupRepairOffline
Problem Signature 01: 6.1.7600.16385
Problem Signature 02: 6.1.7600.16385
Problem Signature 03: unknown
Problem Signature 04: 21200512
Problem Signature 05: ManualRepair
Problem Signature 06: 2
Problem Signature 07: NoBootFailure
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 1033
我让启动修复运行了几次,最终在诊断和修复详细信息中发现了这一点:
Root cause found:
---------
Unspecified changes to system configuration might have caused the problem.
Repair action: System files integrity check and repair
Result: Failed. Error code = 0x490
Time taken = 124661 ms
(网络说这0x490
表示引导扇区有问题。我已经运行了bootrec /fixboot
和bootrec /fixmbr
,两者都“成功”完成,但问题仍然存在。)
我决定运行sfc
修复损坏的系统文件。但是,它失败了,提示有一个系统修复正在等待。这似乎可以通过C:\Windows\winsxs\pending.xml
包含大量内容(看起来有几百行)的事实得到证实。我在其他地方读到过,干扰修复过程(例如删除pending.xml)可能会导致操作系统损坏而无法修复,我希望避免重新安装。
我该如何摆脱这个待处理的系统修复以便sfc
可以运行?
答案1
“系统修复待处理”消息可能由至少两种截然不同的原因引起:
- 实际上正在进行系统修复,必须在运行之前完成或回滚
sfc
。 sfc
正在尝试修复错误驱动器上的系统文件。
就我的情况而言,这两个问题都存在。
我必须先解决问题 2。正确的命令是:
sfc /scannow /offbootdir=X:\ /offwindir=Y:\Windows
在哪里:
X
是系统卷(通常名为“系统保留”)Y
是安装 Windows 的卷
你需要使用diskpart
来找出正确的字母。即使 Windows 正常安装C:\
(通常如此),在 Windows 恢复环境 (WRE) 中也可以分配不同的驱动器号。
从 WRE 中的命令提示符:
> diskpart
DISKPART > list volume
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ----------- ------- --------- -------
Volume 0 C Old Games NTFS Partition 465 GB Healthy
Volume 1 D NTFS Partition 59 GB Healthy
Volume 2 FAT32 Partition 100 MB Healthy Hidden
Volume 3 E Storage NTFS Partition 931 GB Healthy
Volume 4 F Games NTFS Partition 476 GB Healthy
Volume 5 G Traffic NTFS Partition 297 GB Healthy
根据它们的大小,我认识到卷 1 是安装 Windows 的主卷(也就是我常用的C:
驱动器,60 GB SSD),而卷 2 是系统启动卷(通常标记为“系统保留”,并且似乎始终为 100 MB)。重要的是,卷 2 没有驱动器号,这意味着我们无法在命令中引用它sfc
。我们可以像这样分配驱动器号:
DISKPART > select volume 2
DISKPART > assign letter=b:
# now that we're done, exit back to DOS
DISKPART > exit
现在我们准备sfc
使用正确的值运行:
sfc /scannow /offbootdir=B:\ /offwindir=D:\windows\
此时,我仍然收到“系统修复待处理”错误,因此我们需要使用它dism
来解决它。命令是:
dism /image:X:\ /cleanup-image /revertpendingactions
X
安装 Windows 的卷在哪里。我们已经知道了D:
,因此我们可以运行:
dism /image:D:\ /cleanup-image /revertpendingactions
为了dism
完成工作,您必须重新启动。
虽然这不能解决我的启动问题,但它确实允许sfc
运行。
笔记:同样,WRE 中的驱动器号不同可能会干扰sfc
日志记录,日志记录会尝试记录到C:\Windows\Logs\CBS\CBS.log
。如果您的 Windows 卷与我一样未C:
在 WRE 中分配,则可以使用以下命令暂时覆盖日志路径:
> set WINDOWS_TRACING_LOGFILE=D:\Windows\Logs\CBS\CBS.log
(再次使用通过咨询选择的驱动器号diskpart
。)
此命令的效果仅持续到您退出命令提示符为止。此外,sfc
不会为您创建任何目录,因此如果您决定将日志存储在其他地方,例如C:\i_just_made_this_folder_up\mylog.txt
,您需要手动创建i_just_made_this_folder_up
文件夹前跑步sfc
。
答案2
要取消待处理的操作,您必须启动进入恢复选项
选择Command Prompt
并运行此命令:
DISM /image:C:\ /cleanup-image /revertpendingactions
当您现在重新启动 Windows 时,Windows 将删除所有待处理的操作。