DISM
/RestoreHealth
参数和参数的用途是什么SFC
/ScanNow
?
- 它们之间有何关联?
- 应按照什么顺序运行它们?
- 为什么执行时顺序很重要?
答案1
这组件存储[ %WinDir%\WinSxS
] 维护所有 Windows 系统文件的备份,并且SFC
[年代系統F伊莱C赫克尔]&DISM
[德就业我法师年代服务和米管理] 管理组件存储和操作系统两个独立且重要的部分,并SFC
依靠完全根据什么DISM
来管理:
DISM
有两个功能SFC
依赖于,/StartComponentCleanup
并且/RestoreHealth
仅/RestoreHealth
依赖于/StartComponentCleanup
/StartComponentCleanup
: 清洁任何损坏的组件商店硬链接
(由于更新频繁,Insider Builds 上的用户必须定期运行此程序)/RestoreHealth
: 通过哈希比较来验证组件存储中的系统文件备份与 Windows 更新服务器中已知的良好副本,从而验证并修复组件存储中的任何损坏;虽然确实存在离线方法 [见下文],但它可能无法始终修复损坏- Windows 7的: 苏里南[年代系統乌更新R可以使用 [eadiness] 工具来代替它,因为
DISM
直到 Windows 8 才具有此功能,SUR 的操作方式与DISM
- Windows 7的: 苏里南[年代系統乌更新R可以使用 [eadiness] 工具来代替它,因为
SFC
始终假设组件存储未损坏这就是为什么该DISM
/RestoreHealth
参数应始终在之前运行SFC
;不这样做会导致损坏的组件存储可能用损坏的系统文件替换好的系统文件,或者无法完全修复损坏的系统%WinDir%
文件/ScanNow
:%WinDir%
通过哈希比较来验证组件存储中已知的良好副本,从而验证并修复其中的任何损坏
SFC
和DISM
将不会解决硬件相关问题,因为它们只能解决操作系统文件损坏问题,排除注册表配置单元、非操作系统捆绑驱动程序以及用户配置文件:
%WinDir%\System32\drivers\etc
DISM
和SFC
必须按所列顺序执行:
(每个都是分层的,取决于前面的功能 | Windows 7:跳至 #3)
- + R→打开:
powershell
→ Ctrl++Shift确定
命令:# Windows ≥8: # Online [booted Windows image]: Dism /Online /Cleanup-Image /StartComponentCleanup # Offline [non-booted Windows image]: Dism /Image:"Z:\Windows" /Cleanup-Image /StartComponentCleanup
组件存储应该始终已清理在运行 Windows 更新之前、Windows 更新出现问题之后以及至少每月一次,因为随着时间的推移,更新偶尔会中断,它会变得很脏硬链接。# Online: Repair-WindowsImage -Online -StartComponentCleanup # Offline: Repair-WindowsImage -Path "Z:\Windows" -StartComponentCleanup
-
命令:# Windows ≥8: # Online [booted Windows image]: Dism /Online /Cleanup-Image /RestoreHealth # Offline [non-booted Windows image]: Dism /Image:"Z:\Windows" /Cleanup-Image /RestoreHealth
需要互联网连接,否则将需要离线方法:# Online: Repair-WindowsImage -Online -RestoreHealth # Offline: Repair-WindowsImage -Path "Z:\Windows" -RestoreHealth
- 使用
install.<esd|wim>
来自Windows 安装 ISO 对于已安装的版本:- 创建 Windows <#> 安装媒体→立即下载工具→安装在另一台电脑上
- 挂载 ISO 以确定已安装的操作系统指数[图片] 来自其
install.<esd|wim>
:
命令:Dism /Get-ImageInfo /ImageFile:"Y:\sources\install.<esd|wim>"
Get-WindowsImage -ImagePath "Y:\sources\install.<esd|wim>"
- 在末尾指定索引号
/Source
范围:
命令:# Online [booted Windows image]: # ESD: Dism /Online /Cleanup-Image /RestoreHealth /Source:esd:"Y:\sources\install.esd":6 /LimitAccess # WIM: Dism /Online /Cleanup-Image /RestoreHealth /Source:wim:"Y:\sources\install.wim":6 /LimitAccess # Offline [non-booted Windows image]: Dism /Image:"Z:\Windows" /Cleanup-Image /RestoreHealth /Source:esd:"Y:\sources\install.esd":6 /LimitAccess
# Requires mounting ESD/WIM first: # Determine a partition to mount on: Gdr -PSProvider 'FileSystem' # Create Mount directory and mount ESD/WIM index: Mkdir "C:\Mount" Mount-WindowsImage -ImagePath "Y:\sources\install.<esd|wim>" -Index 6 -Path "C:\Mount" -ReadOnly # Either Source can be used: Mount\Windows || Mount\Windows\WinSxS Repair-WindowsImage -Image "Z:\Windows" -RestoreHealth -Source "C:\Mount\Windows"
- 使用
- Windows 7的:跑过SUR 工具
- 重新启动;如果发现错误,请
%WinDir%\Logs\DISM\dism.log
从下往上检查
(通过日志语法在VS 代码)- Windows ≥8:
%WinDir%\Logs\DISM\dism.log
- Windows 7的:
%WinDir%\Logs\CBS\CheckSUR.log
(如何修复 SUR 错误)
- Windows ≥8:
-
# Online [booted Windows image]: Sfc /ScanNow # Offline [non-booted Windows image / booted to WinPE/WinRE]: Sfc /ScanNow /OffBootDir=Z:\ /OffWinDir=Z:\Windows # C: is usually not the drive letter in WinPE/WinRE # To ascertain: DiskPart → lis vol → exit
- 重新启动;如果发现错误,则输出到
%UserProfile%\Desktop\SFCdetails.log
和审查:# Cmd: FindStr /c:"[SR]" "%WinDir%\Logs\CBS\CBS.log" > "%UserProfile%\Desktop\SFCdetails.log" # PowerShell: FindStr /c:"[SR]" "$env:WinDir\Logs\CBS\CBS.log" > "$env:UserProfile\Desktop\SFCdetails.log"
我每周都会通过任务计划程序以帮助防止随机问题的发生:
Dism_ComponentCleanup.xml
每周日 11:30:00 执行Dism_RestoreHealth.xml
每周日 12:00:00 执行Sfc_ScanNow.xml
每周日 13:00:00 执行
导入到任务计划程序:
- 图形用户界面(GUI):
- 命令行:
Cmd
:SchTasks /Create /Xml "%UserProfile%\Downloads\<task_name>.xml" /Tn "\Custom\Task Name" /Ru "%ComputerName%\%UserName%"
Powershell
:Register-ScheduledTask -Xml (Get-Content '$env:UserProfile\Downloads\<task_name>.xml' | Out-String) -TaskName "Task Name" -TaskPath "\Custom\" -User $env:ComputerName\$env:UserName –Force