SFCとDISMの違い

SFC

https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/sfc

>保護されているすべてのシステムファイルをスキャンして整合性を確認し、不正なバージョンを正しいバージョンに置き換えます。このコマンドは、保護されたファイルが上書きされたことを発見した場合、%systemroot%\system32\dllcacheフォルダーから正しいバージョンのファイルを取得し、不正なファイルを置き換えます。

Win10では、
%systemroot%\system32\dllcache
は存在せず、
%systemroot%\WinSxS\Backup
を利用している模様。

・WRP(Windows Resource Protection)
https://docs.microsoft.com/ja-jp/windows/win32/wfp/protected-file-list
>WRPはWindowsの再起動に必要なファイルを%systemroot%\WinSxS\Backupにあるcacheディレクトリにコピーします。

・WFP(ファイル保護機能)
https://support.microsoft.com/kb/222193/ja
WFPは古く現在はWRPになっている。

DISM

https://docs.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/dism-operating-system-package-servicing-command-line-options

オプションは、
DISM /?

にて確認できる。

Dism /Online /Cleanup-Image /RestoreHealth

/Online
実行中のOSを対象にする。
(ここをImageとするとオフラインイメージが対象)

ここではイメージ=Windowsであり(さらにWindowsの中のコンポーネントストア)と考えると分かりやすい。オフラインの場合は、WIM、VHD 、FFU等。

/Cleanup-Image
イメージ(対象)に対してクリーンアップ操作または回復操作を実行する。

/RestoreHealth
イメージ(対象)をスキャンしてコンポーネント ストアの破損の有無を確認し、修復操作を自動的に実行する。

修復操作に利用する修復ソースの既定はWindowsUpdateだが、
/LimitAccess
を指定するとWindowsUpdateに接続できない。

DISMの修復ソース

https://docs.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/configure-a-windows-repair-source

WindowsUpdateかファイルが修復ソースとなり、グループポリシーで優先を指定できる。(既定はWindowsUpdate)

修復ソースにファイルを指定する場合、
Dism /Online /Cleanup-Image /RestoreHealth /Source:xxx

・優先の指定

>gpedit.msc
コンピューターの構成>管理用テンプレート>システム>オプション コンポーネントのインストールおよびコンポーネントの修復のための設定を指定する
・Windows Server Update Services (WSUS)の … 直接ダウンロードする。
を指定する。

適用
gpupdate /force

修復ソースの優先をWindowsUpdate+オフラインにて、
Dism /Online /Cleanup-Image /RestoreHealth
を実行してもエラーがなければ問題なく終了する。コンポーネントストアに不具合が見つかったタイミングでWindowsUpdateに接続するらしい。

コンポーネントストアとは

https://docs.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/manage-the-component-store

パス
%systemroot%\WinSxS