デスクトップの幽霊ファイルの問題

翻訳元: The Case of the Phantom Desktop Files (英語)

数週間前、私は妻から、「デスクトップには表示されていないファイルがときどきデスクトップ フォルダーに表示されて紛らわしいので、そのような幽霊ファイルをどこか別のファイルに移動するか、削除するかしたい」と頼まれました。私には妻が何の話をしているのかわかりませんでした (妻がコンピューターのトラブルを説明するときはたいていそうです)。そこで私は、今度その不思議なファイルが表示されたら私に見せて欲しい、と妻に伝えておきました。

何日かして、私が会社から帰宅すると、妻が興奮気味に玄関で私を出迎え、例の問題が再発したので、奇妙なファイルが表示されたウィンドウを開いたままにしていると言います。私は、途中で出迎えてくれた愛犬にもかまわず、何事かと思いながらキッチンのコンピューターに飛んでいって状況を見てみました。最大化した IE のウィンドウには、開いた電子メールのタブがずらっと並んでいました (妻はいまだかつて電子メールのウィンドウを閉じたことがないのではないかと思います)。手前に表示されている IE の [ファイルの選択] ダイアログ ボックスには、デスクトップ フォルダーにあるファイルが一覧表示されていました。電子メール エディターの添付ファイル ボタンをクリックして開いたこのダイアログ ボックスは、次のように表示されていました。

図 1

図 1

IE を最小化してデスクトップの背景を見てみましたが、妻の言うとおり、ダイアログ ボックス表示されている一部のファイル (Maui Feb. 08 フォルダーや CIMG13xx JPG ファイルなど) が見当たりません。エクスプローラー ウィンドウを開いて、妻のデスクトップ フォルダーにファイルが表示されるかどうか確認してみましたが、やはりファイルは見つかりません。

図 2

図 2

私はこのような現象を今まで見たことがありませんでしたが、これは、Process Monitor の出番だと思いました。妻は自分のシステムに Sysinternals のツールをインストールしていないので (悲しいけど、本当の話です)、Sysinternals Live (\\live.sysinternals.com\tools\procmon.exe) を使用してネットワークから直接このツールを実行しました。Process Monitor でアクティビティの記録を有効にした状態で、[ファイルの選択] ダイアログ ボックスをいったん閉じて開きなおし、"CIMG" を含むファイル名を検索しました。このようなファイル名が [ファイルの選択] ダイアログ ボックスにはたくさん表示されていたのですが、デスクトップのエクスプローラー ウィンドウには存在していませんでした。 最初にヒットしたのはディレクトリの列挙処理で、右端の [Details] 列にはファイル名が表示されていました。

図 3

図 3

これらのファイルは、\Appdata\Local\Microsoft\Windows\Temporary Internet Files\Virtualized\C\Users\Daryl\Desktop にある妻のプロファイルの中にありました。この Virtualized は、IE7 が保護モード (PMIE) で実行されているときに作成されるディレクトリです。保護モードは、Windows Vista および Windows Server 2008 では既定のモードです。

保護モードでは、Windows Vista および Windows Server 2008 で導入された整合性レベルを使用することによって、IE 内部で実行されるコードにより変更可能なファイル システムやレジストリの場所を、IE を実行しているユーザー アカウントで書き込み可能な場所のサブセットに制限しています。以前の投稿 (英語) で説明したように、低整合性レベルに指定された場所であるサンドボックスでは、PMIE が低整合性レベルで実行され、低整合性レベルのオブジェクトの変更が可能になるため、IE のキャッシュや閲覧履歴と同様に、PMIE によってお気に入りや一時ファイルを保存できます。ただし、ユーザー アカウントのその他の場所 (ドキュメント フォルダーや、レジストリやファイル システム内のユーザーごとの自動起動など) は整合性レベルが中であるため、PMIE では変更できません。これによって、IE プロセスがドライブバイダウンロード マルウェアに感染して、持続的なプレゼンスを確立できなくなるのを防ぎます。

サンドボックス外部への書き込みを行う可能性がある ActiveX コントロールやブラウザー ヘルパー オブジェクトといったレガシー コードとの下位互換性を維持するために、PMIE では、shim を実装しています。shim は、ファイルおよびレジストリの操作をインターセプトし、サンドボックス外部に対する処理をサンドボックス内の Virtualized ディレクトリにリダイレクトします。

このような処理がこの場合も発生しているかどうかを確認するために、前の図で強調表示されている行を右クリックし、[Stack] をクリックして、仮想化された操作のスタック トレースを調べました。スタックから、Acredir.dll が操作をインターセプトし、リダイレクト機能を実行していることがわかりました。

図 4

図 4

スタック トレースの該当する行をダブルクリックして表示されたモジュールのプロパティ ダイアログ ボックスを見ると、この DLL が "Windows Compatibility DLL (Windows 互換性の DLL)" であり、PMIE のサンドボックスの実装の一部であることがわかります。

図 5

図 5

PMIE の仮想化については知っていましたが、デスクトップ上に仮想化されたファイルが置かれているのは見たことがなかったので、これがファイル表示の食い違いの原因であることがわかりませんでした。Process Monitor によって原因が判明したので、後は仮想化されたファイルをクリーンアップするだけです。ファイルの参照ダイアログ ボックスからファイルを移動したり削除できることを知らないユーザーが多いので、この機会に、電子メール エディターの添付ファイル ダイアログ ボックスで仮想ファイルが再び表示された場合の対処方法を妻に教えました。不要なファイルは削除し、写真はフォト ライブラリ フォルダーに移動しました。

こうして問題が解決しました。うれしいことに、妻は私が幽霊ファイルの原因をいとも簡単に突き止めたこと、さらには問題を解決したツールの作者が私であることにとても感動していました。また、PMIE の仮想化や整合性レベルについて妻に詳しく説明しましたが、私の説明はちょっと彼女にはわかりにくかったかなと思っています。

ちなみに、IE 内部のルーチン操作に対してもリダイレクトが行われので、自分のプロファイル内の PMIE の Virtualized フォルダーを見れば、きっと何らかのファイルやフォルダーが見つかるはずです。次の図は、IE 内部からシェルのファイルの参照ダイアログ ボックスを使用したときに作成されるサムネイル キャッシュ ファイルです。通常、サムネイル キャッシュ ファイルはシェルによりユーザーのプロファイルに保存されますが、PMIE ではこの場所に書き込めないので、shim によって仮想化が行われます。

図 6

図 6

公開: 2009 年 2 月 3 日火曜日 6: 00 AM 投稿者: markrussinovich (英語)

ページのトップへ

共有

ブログにコピー: ([Ctrl] + [C] でコピーしてください)