Hebikuzure's Tech Memo

2013年4月28日

Internet Explorer 10 では一時ファイル管理方法が変更されている

Filed under: Internet Explorer — hebikuzure @ 12:22 午後

「IE のキャッシュのオフライン調査について (改訂版)」
http://www.slideshare.net/hebikuzure/iecachedata-20130427-20103419


昨日の第4回「ブラウザー勉強会」で発表した内容で、上に掲載したリンクで資料スライドも公開していますが、こちらでも簡単にまとめを書いておきます。

Inetrnet Explorer 9 以前

Internet Explorer 5 以降、Internet Explorer 9 までのバージョンでは、インターネット一時ファイル (キャッシュ、サーバーからダウンロードしたコンテンツを再利用のため一時保存したもの) の管理方法は同じでした。これはよく知られているように、以下のような仕組みです。

  • インターネット オプションで表示される既定の一時ファイルの場所は以下のパス (Windows Vista 以降の場合)
    %userprofile%\AppData\Local\Microsoft\Windows\Temporary Internet Files
  • 実際の一時ファイルは既定では以下のフォルダに格納される(Windows Vista 以降の場合)
    – 保護モード無効のキャッシュ
    %userprofile%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5
    – 保護モード有効のキャッシュ
    %userprofile%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Low\Content.IE5
  • Content.IE5 フォルダには以下が格納される
    – index.dat
    インデックスファイル
    – キャッシュフォルダ
    ランダムな英数8文字の名前のフォルダ
    フォルダ内に一時ファイルの実データ ファイルを格納

一時ファイルのメタ データ(「インターネットアドレス」「有効期限日時」「最終変更日時」「最終アクセス日時」「最終チェック日時」など)は index.dat にバイナリ情報として保存される
(ただし一部の情報はテキストがそのまま格納されるので、index.dat から簡単に抽出できる)

IE9 までの index.dat はデータ構造非公開のバイナリ ファイルで、その内容へのデータ アクセスは WinInet API 経由でのみサポートされています。またデータ管理は WinInet が直接行っており、データベースとしてはあまり堅牢ではありませんでした (ご存知の方も多いように、よく壊れます)。

Internet Explorer 10

Internet Explorer 10 での一時ファイルの管理方法は以下の通りです。

  • インターネット オプションで表示される既定の一時ファイルの場所は以下のパス (IE9 までと同じ)
    %userprofile%\AppData\Local\Microsoft\Windows\Temporary Internet Files
  • 実際の一時ファイルは既定では以下のフォルダに格納される(IE9 までと同じ)
    – 保護モード無効のキャッシュ
    %userprofile%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5
    – 保護モード有効のキャッシュ
    %userprofile%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Low\Content.IE5
  • Content.IE5 フォルダには以下が格納される
    – container.dat
    キャッシュ管理に関する一時ファイル(?)、通常サイズ 0 バイト
    – キャッシュフォルダ(IE9 までと同じ)
    ランダムな英数8文字の名前のフォルダ
    フォルダ内に一時ファイルの実データ ファイルを格納
  • 一時ファイルの管理情報は以下の場所に保存される
    %userprofile%\AppData\Local\Microsoft\Windows\WebCache

WebCache フォルダ(保護されたオペレーティング システムのフォルダになっています)を表示すると、以下のようになっています。

image

これらのファイルの中で一時ファイルのメタ データ(「インターネットアドレス」「有効期限日時」「最終変更日時」「最終アクセス日時」「最終チェック日時」など)を記録・管理しているのは、WebCacheV01.dat(環境によっては WebCacheV24.dat になる場合もあるようです)です。

WebCacheV01.dat(または WebCacheV24.dat)は Windows 内蔵のデータベース エンジンである Extensible Storage Engine のデータベースで、ここに IE9 まで index.dat で管理されていた情報が保存されています。Extensible Storage Engine は Jet Blue とも呼ばれるデータベース エンジンで、Windows では Exchange、 Active Directory、Desktop Search などのデータ管理で利用されています。Internet Explorer 10 では WinINET から Extensible Storage Engine が呼び出され、実際のキャッシュ情報の管理を行っています。

image

管理方法は変更されていますが、index.dat と同様、WebCacheV01.dat(または WebCacheV24.dat)にも一時ファイルの URL やサーバー レスポンス ヘッダーなどの情報はテキストでそのまま保存されていますので、適切なツールを利用すれば抽出できるのも同じです。

image

IE9 までのキャッシュ関係のトラブルでは、別ユーザーでログオンするなどして Temporary Internet Files 以下のファイル/フォルダを削除する方法が有効でしたが、IE10 ではこれに加えて WebCache フォルダも初期化する必要があると考えられます。この辺りの動作についてはまだ未検証なので、いずれ調査したいと思います。

コメントする »

まだコメントはありません。

RSS feed for comments on this post. TrackBack URI

コメントを残す

WordPress.com で無料サイトやブログを作成.