この内容は、ベータ版を元にしています。製品版では変更になっている可能性があります。
Windows Vista の仮想化の特徴は、グローバルな影響を与える書き込みを、ユーザごとに用意された場所にリダイレクトすることによって、既存のソフトウェアのアプリケーション互換性を改善するよう設計されています。仮想化が、新しい製品開発と、旧式なアプリケーションをWindows Vista にマイグレーションすることの両方に、どのように影響するのか、アプリケーション開発者が理解することは重要です。仮想化は、ファイル仮想化と、レジストリ仮想化の2つのコンポーネントを含みます。
ファイル仮想化
ファイル仮想化は、アプリケーションが(コンフィギュレーション・ファイルのような)ファイルを、システムワイドな場所にしまうことが出来ることに頼る状況を扱います。ユーザーが Administrators グループのメンバーであるとき機能し、プログラムが限定されたユーザーアカウント(あるいは UAC によって守られたアカウント)から開始されるのと同じように、失敗します。 アプリケーションが(\Program Files\... のように) システム位置へ書く時、Windows は \Virtual Store\... ディレクトリ以下のユーザーに特定されたパスへ、リダイレクトします。後に、アプリケーションがこのファイルをリード バックするとき、システムはバーチャル・ストアのものを供給します。アプリケーションから見ると、読み取りに成功し、また、直接 Program Files に書き込むことが出来たように見えます。
例:User A が限定されたユーザーアカウントを使用していて、そしてメモ帳 (Notepad.exe) を使って \Program Files\foo.txt にテキストファイルをセーブしようとしている状況を考えます。仮想化により、このファイルのセーブは成功します。しかし、ファイルは \Virtual Store\ユーザ アカウントのセキュリティ識別子(SID)\Program Files\foo.txt にリダイレクトされます。User A がウィンドウズ・エクスプローラーで \Program Files\ ディレクトリを見ると、適切にユーザーの仮想ファイルにリダイレクトされるので、ファイル foo.txt を見つけるでしょう。しかし、User B がログインすると、\Program Files\ ディレクトリにファイル foo.txt はありません。User B が \Program files\foo.txt にファイルを書く場合は、その書き込みは同様に User B のバーチャル・ストアに書き込まれます。User A が書くファイルはユーザーB が書き込むファイルから独立しています。
レジストリ仮想化
レジストリ仮想化は、ファイル仮想化に似ていますが、HKEY_LOCAL_MACHINE > SOFTWARE 下のレジストリ キーに適用されます。この機能は、構成情報を HKEY_LOCAL_MACHINE > SOFTWARE に書き出すアプリケーションが、限定されたユーザー アカウントで実行されるとき、そうし続けるのを許します。キーとデータは HKEY_CLASSES_ROOT > VirtualStore > SOFTWARE にリダイレクトされます。ファイル仮想化のように、それぞれのユーザーは、アプリケーションが HKLM にストアした値の仮想化されたコピーを持っています。
仮想化は、ただ既存プログラムの、アプリケーション互換性を支援することだけを意図します。 Windows Vista のために設計されたアプリケーションは、センシティブなシステム領域に書き込みを行なうべきではありません。同様に、正しくないアプリケーションの挙動を補償をするために、仮想化に頼るべきではありません。 Windows Vista 上で実行する既存のコードをアップ デートするとき、開発者は、アプリケーションが実行中は、データをユーザごとの場所にストアするだけであることを保証するべきです。
Windows Vista への移行が進めば、マイクロソフトは仮想化を Windows オペレーティング・システムの将来のバージョンから取り除くでしょう。
投稿日時 : 2006年6月8日 21:43