【DSIM/sfc】Windowsの修復を行うコマンドの紹介

暫く Windows を使用していると、OS の動きが何かおかしいとか、特定の操作をすると表示されるメニューが開かずエラーが表示される、稀にブルースクリーンが発生する、といった OS の不調が現れることがあり、それらを復旧する(=できる可能性がある)ためのコマンドの紹介です。

DISM → sfc の順番に実行して、修復する流れです。

補足:

本記事の操作は必ずコマンドプロンプト or PowerShell を管理者として実行してください。

DISMコマンド

DISM は OS の異常を直接修復するのではなく、修復時に使用する コンポーネントストア のチェック・復元を行うコマンドです。

このコマンドを実行して破損しています、修復されました、と表示されたから OS の動作に異常があるとか異常が復旧したという事じゃないです。

チェックだけ実行

チェックだけ実行して修復は行いません。

個人利用の PC の場合、いきなり次の項目の修復コマンドを実行しても問題ないことが多いですが、業務 PC などでレポートが必要な場合とかで運用手順がある場合こちらを先に実行してから修復しようかな、というようなときに使うモードです。

DISM /Online /Cleanup-Image /ScanHealth
  • /Online: 今動いているOSを対象とする
  • /Cleanup-Image: 復旧系の操作を指定
  • /ScanHealth: コンポーネントストアをチェックする

実行すると以下のような表示になります。

破損してなかったので正常終了時の出力です。

C:\Temp>DISM /Online /Cleanup-Image /ScanHealth

展開イメージのサービスと管理ツール
バージョン: 10.0.26100.5074

イメージのバージョン: 10.0.26200.8457

[==========================100.0%==========================]
コンポーネント ストアが壊れていることは検出されませんでした。
操作は正常に完了しました。

チェック結果ですが - 破損なし → sfc コマンドの実行に進む - 破損あり・修復可能 → 次の修復コマンドを実行する - 破損あり・修復不可 → この記事では扱わない

修復を行う

チェックして破損があれば修復を実行します。

DISM /Online /Cleanup-image /RestoreHealth
  • /RestoreHealth: チェック後に修復を実行する

実行すると以下のような表示になります。

破損が無く正常に終了したときの出力です。

破損してると修復しましたという旨のメッセージが出力されます。

C:\Temp>DISM /Online /Cleanup-image /RestoreHealth

展開イメージのサービスと管理ツール
バージョン: 10.0.26100.5074

イメージのバージョン: 10.0.26200.8457

[==========================100.0%==========================]
復元操作は正常に完了しました。
操作は正常に完了しました。

sfcコマンド

sfc は System File Checker の略です。実際に OS のシステム系のファイルには破損が無いかどうかをチェックして破損している場合修復を行います。

sfc /scannow
  • /scannow: チェックして異常があれば修復する

実行には少し時間がかかります。

実行結果は次の通りです。

記事を書きながら実行しましたが、どうやら破損があり修復されたようです。

C:\Temp>sfc /scannow

システム スキャンを開始しています。これにはしばらく時間がかかります。

システム スキャンの検証フェーズを開始しています。
検証 100% が完了しました。

Windows リソース保護により、破損したファイルが見つかりましたが、それらは正常に修復されました。
オンライン修復の場合、詳細は次の場所にある CBS ログ ファイルに含まれています
%windir%\Logs\CBS\CBS.log (たとえば C:\Windows\Logs\CBS\CBS.log)。オフライン修復の場合、
詳細は /OFFLOGFILE フラグによって指定したログ ファイルに含まれています。

PC に不調は感じていませんでしたが何か復旧されたようです。

この時稀に、修復できませんでしたと表示されることがありますが、その対応は状況によるのでここでは扱いません。