Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

SFCコマンドでdllcacheフォルダのデフォルト・サイズを小さくする

解説をスキップして操作方法を読む

デジタルアドバンテージ 小林 章彦
2008/02/08
対象OS
Windows XP
Windows Server 2003
古いノートPCや携帯型ノートPCなど、ハードディスクの容量が小さいものがある。
デフォルトでは、ハードディスクの空き容量が600Mbytes+ページ・ファイルの最大サイズになるまでdllcacheフォルダにシステム・ファイルをキャッシュし続ける。
SFCコマンドでdllcacheフォルダのデフォルト・サイズを変更できる。

解説

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

 Windows XPやWindows Server 2003では、セキュリティ修正プログラムの適用失敗やディスク・エラーなどによるシステム・ファイルの不整合や損傷を修復するWindowsファイル保護(WFP:Windows File Protection)」と呼ばれる機能が実装されている。システム・ファイルは、%systemroot%\system32\dllcacheフォルダにも保存されており、不整合や損傷などを検知すると、このフォルダから正しいファイルがシステム・フォルダにコピーされる仕組みとなっている(WFPについては関連TIPS記事も参照)。

 このフォルダはデフォルトで400Mbytesも確保されており、さらにハードディスクの空き容量が600Mbytes+ページ・ファイルの最大サイズになるまで、システム・ファイルをキャッシュし続けるようになっている。修正プログラムが適用されるなどすると、dllcacheフォルダ内のDLLファイルが置き換わったり、新たなDLLファイルがコピーされたりすることになる。

 古いノートPCなどでは、ディスク容量が小さいことが多く、dllcacheフォルダに400Mbytesも割り当てられてしまっていると、作業領域が狭くなってしまいかねない。そこで、dllcacheフォルダのデフォルト・サイズを小さくする方法を紹介する。

操作方法

  dllcacheフォルダのデフォルト・サイズを変更するには、Windows OS(Windows 2000以降)の標準コマンドであるシステム・ファイル・チェッカー・ツール(SFC.EXE)を利用する。SFC.EXEは、WFPを手動で実行するためのツールでもある。

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

SFC.EXE /CACHESIZE=<キャッシュ・サイズ>

 これにより、dllcacheフォルダのデフォルト・サイズが、指定した<キャッシュ・サイズ>(Mbytes)に変更される。<キャッシュ・サイズ>を指定しない場合は、50(Mbytes)がデフォルト値として設定される。実際にはこのコマンドによって、以下のレジストリ・キーの値(SfcQuota)のデータが変更されるだけである。

項目 内容
キー HKEY_LOCAL_MACHINEの\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
値の名前 SfcQuota
REG_DWORD
値のデータ 設定した<キャッシュ・サイズ>(デフォルトは0xFFFFFFFF、ただしキャッシュ・サイズは400Mbytes)

 この時点では、dllcacheフォルダの中身は、デフォルト・サイズの変更前と何ら変わらない。次に、以下のコマンドを実行することで、dllcacheフォルダ内の全ファイルを削除する。

SFC.EXE /PURGECACHE

 その後は、修正プログラムの適用などによって、新たにシステム・ファイルがdllcacheフォルダにコピーされることになる。またSFC.EXEによるスキャン(SFC.EXE /SCANNOW)を実行すると、システムCDが要求され、設定したキャッシュ・サイズになるまでシステム・ファイルがコピーされる(修正プログラムの適用などによって、dllcacheフォルダがすでに変更したキャッシュ・サイズを超えている場合は、システムCDは要求されない)。キャッシュ・サイズを変更しない状態では、約400Mbytes分のファイルがコピーされるので、その差の分だけ、ディスク容量が節約できることになる。

 設定するのは、あくまでdllcacheフォルダのデフォルト・サイズなので、修正プログラムの適用などを続けていくと、dllcacheフォルダのサイズは上述の制限まで大きくなっていくので注意が必要だ。dllcacheフォルダの容量が大きくなってきたら、再びSFC.EXE /PURGECACHEを実行して、dllcacheフォルダ内のシステム・ファイルを削除すればよい。

dllcacheフォルダのキャッシュ・サイズ変更前
日付の古いシステム・ファイルも多くキャッシュされていることが分かる。フォルダのサイズ()も90.7Mbytesになっている。
フォルダのサイズ

dllcacheフォルダのキャッシュ・サイズ変更後
キャッシュ・サイズを1Mbytesに設定し、SFC.EXE /PURGECACHEによってキャッシュを削除、その後にいくつかの修正プログラムを適用した。1Mbytesに設定されているが、修正プログラムの適用によって、13Mbytesにまでフォルダ・サイズ()が膨らんでいる。ただし、dllcacheフォルダは修正プログラムによってコピーされたシステム・ファイルのみで、日付の古いシステム・ファイルは、SFC.EXEによってコピーされたacgenral.dll()のみであることが分かる。
フォルダのサイズ
SFC.EXEによってコピーされた、日付の古いシステム・ファイル

 ただしWFPによって、システム・ファイルの不整合などが見つかった場合には、dllcacheフォルダからファイルをコピーする仕様となっているので、ここにファイルが存在しない場合は、システムCDなどが要求されることになる。修正プログラムの適用後などは、システム・ファイルの不整合が起こりやすい状態となっているので、しばらく運用した後にdllcacheフォルダ内のファイルを削除するようにした方がよいだろう。End of Article

「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間