初めに

Windows10を使っていて,突然動作しなくなったりクラッシュが発生することがあります。
そんな時の為に,Windowsにはシステムファイルをチェック・修復するツール「SFC.exe」があります。
それを使うにはコマンドプロンプトかPowerShellでコマンドを叩いてやると楽です。
ただ,いくつか注意点などあるしいちいちコマンドを覚えるのも面倒なので,備忘録として記事に残しておきます。

目次

  1. 初めに
  2. 「DISM.exe」と「sfc /scannow」,「chkedsk」
  3. 「DISM.exe」の実行方法
    1. DISM.exeのオプション
  4. 「sfc /scannow」の実行方法
  5. 「chkdsk」
  6. まとめ
  7. 参考

「DISM.exe」と「sfc /scannow」,「chkedsk」

Windows7の頃までは 「sfc /scannow」 が有名でしたが,Win8.1以降には 「DISM.exe」 というのが加わったようです。
この二つの違いは 「DISM.exe」はWindowsのシステムイメージの破損の確認と修復を、「sfc /scannow」は保護されているすべてのシステムファイルをスキャンして破損したファイルがあった場合は「C:\Windows\System32\dllcache」の圧縮フォルダにあるキャッシュコピーから復元します。

実行順は「DISM.exe」から始め,それでも不安定なら「sfc /scannow」を実行します。

「DISM.exe」の実行方法

まずは,管理者権限でPowerShellを起動します。
スタートアイコンを右クリックして出てきたメニューからWindows PowerShell(管理者)(A)というのをクリックします。
すると,PowerShellが管理者権限付きで起動します。(途中で警告がでたら「はい」を選びます)。
そしたら,

1
DISM.exe /Online /Cleanup-image /Restorehealth

と入力してEnterキーを押すとDISM.exeがスタートします。
ステータスが100%になるまで待ちます。
時間はケース・バイ・ケースですが,おおよそ15分~1時間位は覚悟しましょう。
「操作は正常に完了しました。」と表示されれば終了です。

DISM.exeのオプション

先ほど叩いたコマンドのうち「/」以降はオプション指定です。
とは言え「/?」を叩けばオプションの簡単な説明が出てきます。
さらに詳しく見たいオプションがあれば,そのオプション後に「/?」を叩けば説明が表示されます。

DISM のヘルプDISM のヘルプ

「sfc /scannow」の実行方法

DISM.exeを実行しても不安定なら,「sfc /scannow」を実行します。
実行法はDISM.exeと同じように管理者権限付きのPowerShellを起動してコマンドを叩くだけです。
例によって100%になるまで待ちます。

「Windowsリソース保護は、整合性違反を検出しませんでした。」

と表示されれば問題ありません。
もし

「破損したファイルを検出し、正常に修復しました。」

と表示された場合は,修復されたので問題ありません。Windowsを再起動しましょう。

「Windows リソース保護は要求された操作を実行できませんでした。」

と表示されたら,Windowsのセーフモードで立ち上げて%WinDir%\WinSxS\Temp の下に PendingDeletes フォルダーと PendingRenames フォルダーが存在することを確認します。
このファイルが何なのかはよくわかりません。まぁ,あってもなくても「sfc /scannow」を試してみましょう。

「Windows リソース保護は、破損したファイルを検出しましたが、その一部を修正できませんでした。 詳細は CBS.Log (%WinDir%\Logs\CBS\CBS.log) にあります。」

と出たら修復失敗です。
logファイルなんて見ても分かりませんので「sfc /scannow」での回復は諦めましょう。

「chkdsk」

こちらは,ディスクのエラーを確認するためのコマンドです。(因みに,ドライブを右クリックで出てくるオプションからでも実行できます。)
ただ「chkdsk」はオプションを指定せずに実行すると、一切の修復作業を行いません。エラーがあるかを確認するだけです。
オプションには以下のものがあります。

/f ファイルシステムを修復する。
あくまでもソフトウェア的な修復で、ハードディスクのセクタチェックは行わない。
最も使用頻度の高いオプション。

/r 不良セクタを検出し、不良クラスタから読み出し可能なデータは回収する。
また、「/f」のオプションを包括する。
領域内の全セクタをチェックするため、非常に時間がかかる。
読めないデータはそのまま失われるので、過信は禁物。

/b ファイルシステムに登録されている不良クラスタをチェックし直す。
また、「/r」のオプションを包括する。

ということなので,通常は「/f」オプションをつけて実行します。
ただ,checkdskはドライブに大きな負荷をかけることになります。
因みに,最近主流になり始めているSSDには効果が無いという情報がちらほら見かけます。
その反面,しつこく何回か叩いたら回復したという情報も。
自分ではまだここまで試すエラーが出てないので,真相はわかりません。残念。

まとめ

Windowsの調子が悪い時は

  1. 「Windows PowerShell」を管理者権限で起動
  2. DISM.exe /Online /Cleanup-image /Restorehealth を実行
  3. sfc /scannow を実行
  4. chkdsk /fを試す。ダメ元で/rを叩きまくる。

と,こんな感じになるかと思います。
以上,Windowsの調子が悪い時に試すコマンドの紹介でした。

参考