WindowsのSFCコマンドでシステムファイルの不整合や破損を修復するTech TIPS

Internet ExplorerやWindows OSのサービスパックのインストールなどに失敗すると、システム・ファイルの不整合が起きることがある。アプリケーションのエラーやウイルスの感染などによって、システム・ファイルが壊れることがある。システム・ファイルの不整合や破損などが起きると、システムが不安定になる。SFC.EXEを実行することで、システム・ファイルのバージョン・チェックが行われ、不整合や破損が解消する。

» 2008年01月25日 05時00分 公開
[小林章彦デジタルアドバンテージ]
Tech TIPS
Windows Server Insider


「Tech TIPS」のインデックス

連載目次

対象OS:Windows XP/Windows Server 2003



解説

 セキュリティ修正プログラムの適用失敗やディスク・エラーなどにより、システム・ファイルの不整合や損傷が起きることがある。また誤ってシステム・ファイルを移動してしまったり、削除してしまったりすることもある。システム・ファイルが損傷すると、システムが不安定になり、ブルースクリーンが発生するなどの深刻な事態に陥ることもある。

 Windows 2000以降のWindows OSには、Windowsファイル保護(WFP:Windows File Protection)」と呼ばれる、保護対象のシステム・ファイルに不整合や破損が起きた場合、自動的に修復する機能が実装されている。この機能により、一般のアプリケーションがシステム・ファイルの変更を行えないようにもなっている。これは、一般のアプリケーションが、システム・ファイルを上書きして、システムやほかのアプリケーションに影響を与えるのを防止するためだ。

 WFPでは、2種類のメカニズムによって、システム・ファイルの保護が実現されている。

 1つ目は、バックグランドで動作しているもので、保護されたディレクトリ内のファイルに対して、ファイルの変更が通知されると実行される。保護されたディレクトリ(WINDOWSフォルダ:%systemroot%やsystem32フォルダ:%systemroot%\system32)内のファイルに対して、カタログ・ファイルのファイル署名を検索、変更されたファイルが正しいバージョンかどうかを判別する。またファイルが削除されたような場合にも、同様にチェック機能が実行される。この際、ファイル・バージョンが正しくなかったり、システム・ファイルが削除されてしまったりすることが検知されると、自動的に以下の優先順位でキャッシュ・フォルダ(デフォルトでは%systemroot%\system32\dllcache)やWindows OSのインストールCDなどから、ファイルがコピーされる。

  1. キャッシュ・フォルダ
  2. ネットワーク・インストール・パス(ネットワーク・インストールでシステムをインストールされた場合)
  3. インストールCD(インストールCDからシステムをインストールされた場合)

 WFPがキャッシュ・フォルダで正しいファイルを見つけた場合や、インストール元(ネットワーク・インストール元やCD-ROM)が自動的に見つかった場合は、メッセージを表示せずにファイルの置き換えを実行する。

WFPで保護されているフォルダ内のファイル名を変更する WFPで保護されているフォルダ内のファイル名を変更する
実際の動作を見るため、意図的にファイル名を変更してみる。%systemroot%system32\calc.exe(「電卓」アプリケーション)をcalc1.exeに変える。
  (1)calc.exeのファイル名を変更する。→[A]

[A]

WFPによりファイルが復元される WFPによりファイルが復元される
元のファイルが名前変更や削除によって消滅すると、このようにWFPによってdllcacheフォルダからファイルがコピーされ、calc.exeが復元されていることが分かる(新たにコピーされたため、calc1.exeはそのまま残っている)。
  (1)ファイル名を変更した後のcalc1.exeとともに、calc.exeが存在する。

 2つ目のメカニズムは、Windows OS(Windows 2000以降)の標準コマンドであるシステム・ファイル・チェッカー・ツール(SFC.EXE)だ。SFC.EXEを実行することで、システム・ファイルのバージョンやカタログ・ファイルとキャッシュ・フォルダの整合性などがチェックされる。システム・ファイルのバージョンが正しくない(存在しない)場合は、自動的にキャッシュ・フォルダから正しいバージョンのファイルがコピーされる。またカタログ・ファイルとキャッシュ・フォルダに不整合があった場合は、Windows OSのインストールCDからカタログ・ファイルに該当するファイルを取得するように、CD-ROMを要求する。

 SFC.EXEを利用することで、システム・ファイルのスキャンやキャッシュ・フォルダのチェックと再作成が行える。キャッシュ・フォルダが破損したり、使用できなくなったりした場合、フォルダの内容を修復することが可能だ。

 通常の利用においては、WPFはバックグランドで働いているため、ユーザーや管理者がSFC.EXEを実行する必要はない。しかし、キャッシュ・フォルダが何らかの理由により破損しているような場合は、正しいファイルに戻らずシステムが不安定になったり、WFPにより常にインストールCDが要求されたりすることになる。このような場合は、SFC.EXEを手動で実行し、システム・ファイルとキャッシュ・フォルダの中身を正常にしておくとよい。

操作方法

 SFC.EXEを実行することで、保護されているシステム・ファイルのバージョン・チェックが実行され、正しいバージョンへの置き換えが行われる。また同時に、キャッシュ・フォルダのチェックと再作成も実行される。

 SFC.EXEは、コマンド・プロンプトまたは[スタート]−[ファイル名を指定して実行]で以下のオプションを付けて実行する。

SFC.EXE [/SCANNOW][/SCANONCE][/SCANBOOT][/REVERT][/PURGECACHE][/CACHESIZE=<キャッシュ・サイズ>]



オプション名 機能
/SCANNOW 保護されているすべてのシステム・ファイルを直ちにスキャンし、不整合などがあった場合は正しいファイルに置き換える
/SCANONCE 保護されているすべてのシステム・ファイルを次回の起動時に1回スキャンするように設定する
/SCANBOOT 保護されているすべてのシステム・ファイルを、コンピュータが起動するたびにスキャンする
/REVERT スキャンをデフォルトの設定に戻す
/PURGECACHE ファイル・キャッシュを削除して、保護されているすべてのシステム・ファイルを直ちにスキャンする
/CACHESIZE=<キャッシュ・サイズ> ファイル・キャッシュのサイズを指定した容量(単位:Mbytes)に設定する(デフォルトは50Mbytes)
SFC.EXEのオプション一覧

 通常は、「SFC.EXE /SCANNOW」または「SFC.EXE /SCANONCE」を実行すればよい。ただしSFC.EXEを実行すると、システム・ファイルをスキャンするため、システムが非常に重くなるので、業務時間中に実行するのは避けた方がよいだろう。

SFC.EXE /SCANNOWの実行画面 SFC.EXE /SCANNOWの実行画面
SFC.EXEを実行すると、インストールCDが要求されることがあるので、実行前に用意しておいた方がよい。スキャンが終了すると、何のメッセージも表示せずに終了してしまうので、就業後などに自動的に実行するように仕掛けておくとよい。コンピュータの性能にもよるが、SFC.EXEの終了まで1時間以上こともある。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。