McAfee Avert Labs Blog
Windows 7 – XP Mode」より
January 6,2010 Posted by Bing Sun

 前回は「Windows 7」におけるカーネルAPIの修正を取り上げた。今回はWindows 7の新機能で、仮想化とリモート・アプリケーションを組み合わせた「Windows XP Mode(XPM)」を紹介する。

 まずWikipediaの解説を引用して手短にXPMを説明しよう。「XPMは『Windows Virtual PC』用の仮想マシン・パッケージであり、ゲストOSとしてインストール/ライセンス取得済み『Windows XP SP3』が付属している。必要なコンポーネントが総合的にインストールされており、XPM仮想化環境で作動中のアプリケーションはホスト環境で直接動いているように見え、Windows 7本来のデスクトップやスタートメニュー、ファイル・タイプ関連の設定を利用できる。XPMアプリケーションは仮想化Windows XP内のターミナル・サービス・セッション内で動き、Windows 7ホスト環境上のクライアントとリモートデスクトップ・プロトコル(RDP)を介して通信する。仮想マシンのWindows XP上で動くアプリケーションをRDPでWindows 7ホストにリダイレクトしているため、互換性の問題が発生しない」

 正常にインストールできたXPMは3種類のモードが使える。Windows XPのデスクトップをそのまま表示して使う「Enhanced Mode」および「Basic Mode」というモードの見た目は、通常のVirtual PCを使う場合と全く変わらない(以下のスクリーンショットで示した通り、Virtual PCとWindows XP仮想マシンが表示される)。

 第3のモード「Virtual Applications Mode」で実行した仮想アプリケーションは、通常のWindows 7アプリケーションと同様にWindows 7のデスクトップとスタートメニューと連携する。同モードでは、Virtual PCとWindows XP仮想マシンは以下のスクリーンショットのように表示されない。実際にはWindows XP仮想マシン上で動いている二つの仮想アプリケーション(「TCPView」と「Process Explorer」)が、あたかもWindows 7ホスト上で動いているかのようにWindows 7ホストのデスクトップに表示される。米ヴイエムウェアの製品をご存じなら、同モードが同社の「Unity」機能にやや似ていると思うだろう。ただし、内部の仕組みは異なる。

 Virtual Applications ModeではWindows XP仮想マシンの表示やアクセスが不可能なため、仮想アプリケーションの状況を調べるにはTCPViewとProcess Explorerを使わなければならない。調査したい仮想アプリケーションのショートカットが対応するWindows XP仮想マシンの「All Users」プロファイル内(\Documents and Settings\All Users\Start Menu\Programs)に作られるなら、そのアプリケーションは自動的にWindows 7ホストへ発行される。

 TCPViewの出力結果から、Windows 7ホストとWindows XP仮想マシンのリモートデスクトップ・サービスは直接接続されておらず、Windows XP仮想マシン上の仮想マシン・ゲスト・サービス(vmsrvc.exe)を使っていることが分かる。vmsrvc.exeは、ターミナル・サービス(svchost.exeから実行されるtermsrv.dll)のモニタリングしている3389番ポートにローカル接続する。そして仮想マシン・ゲスト・サービスは、VPCBus(Hyper-VのVMBusに相当する仮想的な通信バス)経由でVirtual PCホスト・プロセス(vpc.exe)とやり取りする。なおこの通信経路はホストとゲストを結ぶ専用チャネルであり、仮想マシン間のネットワークを使わないため高速かつ効率的なデータ交換が行える。ホスト側ではVirtual PCホスト・プロセスが名前付きパイプ・サーバーとして、ほかのVirtual PCコンポーネントであるVmsal.exeが同じパイプのクライアントとして機能し、ホスト上での仮想アプリケーション起動を仲介する。この通信チャネルは複数のコンポーネントを組み合わせてWindows 7ホストとWindows XP仮想マシンを双方向に結び、仮想マシンに対するキー入力やマウス操作で変化するグラフィックス情報を一つにまとめ、Windows 7のデスクトップに遠隔表示するよう送る。

 以下のプロセス・ツリー構造は、TCPViewとProcess ExploerがいずれもWindows XP仮想マシンのRemoteAppセッション内で動いており、rdpinit.exe(RDPシェルのログオン・プロセス)の子プロセスであることを示している。

 XPMの正体は、米マイクロソフトの仮想化ソリューションに含まれる企業向け仮想化デスクトップ管理ソフトウエア「Microsoft Enterprise Desktop Virtualization(MED-V)」の構成アプリケーションに過ぎない。同社の仮想化ソリューションには、「Server Virtualization(Hyper-V)」や「Application Virtualization(App-V)」(旧名称は「SoftGrid」)、(「Windows Vista」のフォルダー・リダイレクト/ユーザー・ローミング機能を実現する)「Profile Virtualization」などもある。App-Vの仕組みについては、近いうちに当ブログで取り上げる(関連記事:Microsoftのディレクタに仮想化戦略の方向性と「App-V」「MED-V」について聞いた)。


Copyrights (C) 2010 McAfee, Inc. All rights reserved.
本記事の内容は執筆時点のものであり,含まれている情報やリンクの正確性,完全性,妥当性について保証するものではありません。
◆この記事は,マカフィーの許可を得て,米国のセキュリティ・ラボであるMcAfee Avert Labsの研究員が執筆するブログMcAfee Avert Labs Blogの記事を抜粋して日本語化したものです。オリジナルの記事は,「Windows 7 – XP Mode」でお読みいただけます。