何となく Blog by Jitta
Microsoft .NET 考

目次

Blog 利用状況
  • 投稿数 - 761
  • 記事 - 18
  • コメント - 36166
  • トラックバック - 222
ニュース
  • IE7以前では、表示がおかしい。div の解釈に問題があるようだ。
    IE8の場合は、「互換」表示を OFF にしてください。
  • 検索エンジンで来られた方へ:
    お望みの情報は見つかりましたか? よろしければ、コメント欄にどのような情報を探していたのか、ご記入ください。
It's ME!
  • はなおか じった
  • 世界遺産の近くに住んでます。
  • Microsoft MVP for Visual Developer ASP/ASP.NET 10, 2004 - 9, 2011
広告

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

その他

わんくま同盟

同郷

 

この内容は、ベータ版を元にしています。製品版では変更になっている可能性があります。

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 にストアした値の仮想化されたコピーを持っています。

ただし、HKLM > SYSTEM は、仮想化されません。この下への書き込みは、失敗します。または、権限の昇格が必要です。

仮想化は、ただ既存プログラムの、アプリケーション互換性を支援することだけを意図します。 Windows Vista のために設計されたアプリケーションは、センシティブなシステム領域に書き込みを行なうべきではありません。同様に、正しくないアプリケーションの挙動を補償をするために、仮想化に頼るべきではありません。 Windows Vista 上で実行する既存のコードをアップ デートするとき、開発者は、アプリケーションが実行中は、データをユーザごとの場所にストアするだけであることを保証するべきです。

Windows Vista への移行が進めば、マイクロソフトは仮想化を Windows オペレーティング・システムの将来のバージョンから取り除くでしょう。

投稿日時 : 2006年6月8日 21:43
コメント
  • # re: 仮想化
    ちゃっぴ
    Posted @ 2006/06/11 19:09
    これはいらないなぁ・・・

    かえって、debug 時に混乱することになるだけじゃないかな?

    これ使わないと動かないのって、Windows XP でも users の member で動作できないものでしょうから・・・
  • # re: 仮想化
    Jitta
    Posted @ 2006/06/12 21:50
    なので、「将来のバージョンから取り除くでしょう」。
    単に、現在のアプリケーションが、修正無しに動作する、互換性のためだけの機能だと思います。
    # いつまでサポートすんねん!(長すぎる)とは思う。
  • # Vista 仮想化されなくなった?
    何となく Blog by Jitta
    Posted @ 2007/01/31 6:35
    Vista 仮想化されなくなった?
  • # re: 仮想化
    シャノン
    Posted @ 2007/02/01 12:26
    UAC関連のエントリを古いのから順にまとめ読み中…

    レジストリリダイレクト、なんで HKCR なんだろ。HKCU にすればいいのにー。
タイトル
名前
Url
コメント