(57)【特許請求の範囲】
【請求項１】
拡張ポイントを識別しアプリケーションによる拡張ポイントの利用を分離するためのコンピュータ実行型の方法であって、
サード・パーティ製の拡張を介してオペレーティング・システムまたはアプリケーションを拡張する手法を提供する拡張ポイントを識別するステップと、
識別した前記拡張ポイントを拡張ポイント・データ記憶に追加するステップと、
仮想アプリケーション・パッケージを指定するアプリケーション実行要求を受け取るステップと、
前記仮想アプリケーション・パッケージが参照する１つまたは複数のパスを前記拡張ポイント・データ記憶内のパスと比較することによって、指定した前記仮想アプリケーション・パッケージ内の１つまたは複数のアプリケーション拡張ポイント参照を識別するステップと、
識別したアプリケーション拡張ポイント参照を前記指定した仮想アプリケーション・パッケージ内の分離した位置にリダイレクトするために、リパース・ポイントを生成するステップと、
を含み、
これらのステップが少なくとも１つのプロセッサにより実行されることを特徴とする方法。
【請求項２】
拡張ポイントを識別する前記ステップが、拡張ポイントのリストをオペレーティング・システムのベンダまたは独立したソフトウェア・ベンダ（ＩＳＶ）から受け取るステップを含む、請求項１に記載の方法。
【請求項３】
拡張ポイントを識別する前記ステップが、アプリケーションがオペレーティング・システムのリソースを利用することを検出するプロセス監視ツールで前記拡張ポイントを識別するステップを含む、請求項１に記載の方法。
【請求項４】
前記拡張ポイント・データ記憶が、既知の拡張ポイントと関連するリソース・パスとをリストする宣言的なフォーマットを含む、請求項１に記載の方法。
【請求項５】
アプリケーション実行要求を受け取る前記ステップが、仮想化アプリケーションを実行するためのユーザ要求を受け取るステップを含む、請求項１に記載の方法。
【請求項６】
アプリケーション実行要求を受け取る前記ステップが、前記要求が受け取られたコンピュータ・システムにネイティブにインストールされていないアプリケーションを実行する要求を受け取るステップを含む、請求項１に記載の方法。
【請求項７】
前記アプリケーション実行要求を受け取ると、要求されたアプリケーションを実行するためのアプリケーション仮想化環境を起動するステップをさらに含む、請求項１に記載の方法。
【請求項８】
拡張ポイント参照を識別する前記ステップが、ファイル・タイプ関連付けを登録するための要求を識別するステップを含む、請求項１に記載の方法。
【請求項９】
リパース・ポイントを生成する前記ステップが、アプリケーション識別子と、識別した前記アプリケーション拡張ポイント参照にアクセスするための代替パスとを指定するステップを含む、請求項１に記載の方法。
【請求項１０】
リパース・ポイントを生成する前記ステップがさらに、指定された仮想アプリケーションが、前記仮想アプリケーションを実行するホストのオペレーティング・システムを直接修正することを防ぐステップを含む、請求項１に記載の方法。
【請求項１１】
オペレーティング・システムとアプリケーション拡張ポイントの仮想化を包括的にハンドリングするためのコンピュータ・システムであって、
ソフトウェア命令を実行するように構成されたプロセッサおよびメモリと、
拡張ポイントを識別するように構成された拡張ポイント識別コンポーネントであって、当該拡張ポイントを介してオペレーティング・システムまたはアプリケーションをサード・パーティのプログラム・コードにより拡張することができる、拡張ポイント識別コンポーネントと、
識別した拡張ポイントを宣言的なフォーマットで格納するように構成された拡張ポイント・データ記憶と、
仮想アプリケーションとホストのオペレーティング・システムとの間の間接レベルを提供するように構成されたアプリケーション仮想化環境と、
識別された拡張ポイントを参照する仮想アプリケーション・パッケージのインストールを検出するように構成された拡張ポイント登録コンポーネントと、
識別された拡張ポイントを参照する検出された前記仮想アプリケーション・パッケージをポイントする前記識別された拡張ポイントに対するリパース・ポイントを生成するように構成されたリパース・ポイント生成コンポーネントと、
生成された前記リパース・ポイントのアクセスを検出し、拡張ポイント・リダイレクション・コンポーネントを起動するように構成された拡張ポイント・アクセス・コンポーネントと、
前記ホストのオペレーティング・システムまたはアプリケーションに、前記検出された仮想アプリケーション・パッケージに関連付けられた位置でリパース・ポイントが参照する指定データを検索させるように構成された拡張ポイント・リダイレクション・コンポーネントと
を備える、コンピュータ・システム。
【請求項１２】
前記拡張ポイント識別コンポーネントがさらに、プロセス監視に基づいて拡張ポイントを識別し、実行中にアプリケーションによってアクセスされるパスを検出するように構成される、請求項１１に記載のシステム。
【請求項１３】
前記拡張ポイント・データ記憶が、識別された拡張ポイントのリストを含むＸＭＬファイルを含む、請求項１１に記載のシステム。
【請求項１４】
前記拡張ポイント・データ記憶がさらに、新たな拡張ポイントが発見される度に、その都度当該新たな拡張ポイントを受け取るように構成され、それにより、以前に配置した仮想化アプリケーションは、前記アプリケーション環境が以前に検出しなかった前記オペレーティング・システムへの修正から保護することで、オペレーティング・システムの分離が拡大することによる利益を得ることを特徴とする、請求項１１に記載のシステム。
【請求項１５】
前記アプリケーション仮想化環境がさらに、前記ホストのオペレーティング・システムについて利用可能なリソースを用いてアプリケーションが設計された環境を、前記仮想アプリケーションに提供するように構成される、請求項１１に記載のシステム。
【請求項１６】
前記拡張ポイント登録コンポーネントがさらに、前記拡張ポイント・データ記憶にアクセスして、識別された拡張ポイントのリストをロードし、該リストをユーザにより起動された仮想アプリケーション・パッケージと比較するように構成される、請求項１１に記載のシステム。
【請求項１７】
前記拡張ポイント・アクセス・コンポーネントがさらに、アクセス情報を、生成されたリパース・ポイントにアクセスされるときに起動されるファイル・システム・フィルタから受け取るように構成される、請求項１１に記載のシステム。
【請求項１８】
仮想化された拡張ポイントの要求へのアクセスに応答するようにコンピュータ・システムを制御するための命令を備えるコンピュータ可読ストレージ・デバイスであって、該命令は、実行されるときに、
リソースのパスを参照するリソース・アクセス要求を受け取るステップと、
パスによって参照されたリソースが、関連するリパース・ポイントを含かについて決定するステップと、
前記パスによって参照された前記リソースが、関連するリパース・ポイントを含むと決定すると、
前記参照されたパスに関連付けられた仮想アプリケーション・パッケージを識別するステップと、
前記受け取ったリソースの要求を、識別された前記仮想アプリケーション・パッケージにリダイレクトするステップと、
前記要求されたリソースへのアクセスを提供することにより、前記リダイレクトされたリソース要求に応答するステップと
を含むアクションをプロセッサに実行させる、デバイス。
【請求項１９】
前記要求によって参照された前記リソースのパスは、アプリケーションがオペレーティング・システムまたはアプリケーションの機能を拡張できるリソース・ロケーションを参照する、請求項１８に記載のデバイス。
【請求項２０】
仮想アプリケーション・パッケージを識別する前記ステップが、前記リパース・ポイントに関連付けられたアプリケーション識別子を識別するステップと、該識別したアプリケーション識別子を用いて前記仮想アプリケーション・パッケージにアクセスするステップとを含む、請求項１８に記載のデバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
仮想化とは、物理ハードウェアにより仮想マシンを実行し、次いでオペレーティング・システムおよび／またはアプリケーションをその仮想マシン上で仮想的に実行することをいう。仮想マシンは、ハードウェア機能の最小の共通の特徴を表現することができ、または、オペレーティング・システムおよびアプリケーションを簡単に準備できる公知な構成を表現することができる。多くのデータ・センタでは仮想化を利用して、保守サイクルに対してリソース要求が増大したときに仮想マシンを容易に新たな物理ハードウェアへ移動させ、物理サーバの負荷を平準化することができる。仮想化は多くの状況で有用であるが、多くの仮想マシンが同じリソース（例えば、ＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、メモリ、およびＮＩＣ（ｎｅｔｗｏｒｋ  ｉｎｔｅｒｆａｃｅ  ｃａｒｄ））に対して競合するために生ずる制約をもたらす可能性もある。
【０００２】
アプリケーション仮想化により、１つのアプリケーションのレベルで仮想マシンが提供される。例えば、ホストのオペレーティング・システムがネイティブに幾つかのアプリケーションを実行し、他のアプリケーションを実行するための仮想環境を提供することができる。これにより、オペレーティング・システムが、例えば、様々なオペレーティング・システム向けに設計されたアプリケーションを実行することができる。アプリケーション仮想化により、ユーザにとっては、ホストのオペレーティング・システムでネイティブに実行されているアプリケーションと仮想マシンで実行されているアプリケーションの差異が不明瞭になる。例えば、何れのアプリケーションのタイプも、オペレーティング・システムのシェルが提供するタスクバーまたはメニューの中で隣り合って現れることがある。例えば、マイクロソフトのＡｐｐｌｉｃａｔｉｏｎ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ（Ａｐｐ−Ｖ）は、アプリケーションを、インストールされず他のアプリケーションと衝突しない中央管理型の仮想サービスに変換する。物理的な環境では、全てのアプリケーションは様々なサービスに関してそのＯＳ（ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）に依存する。当該サービスには、メモリ割当て、デバイス・ドライバが含まれるが、他にも多くのものがある。アプリケーションとそのＯＳの間の非互換性は、サーバ仮想化またはプレゼンテーション仮想化の何れかにより対処できるが、同じＯＳインスタンスにインストールされた２つのアプリケーションの間の非互換性については、アプリケーション仮想化により解決される。
【０００３】
オペレーティング・システムは、顧客のニーズに適合するためにそれ自体の振舞いを修正する必要がある。例えば、ユーザがマイクロソフトのＷｏｒｄをインストールすることがあり、これによりファイル・タイプ関連付けが登録される。このファイル・タイプ関連付けにより、オペレーティング・システムがどのように振る舞うかが変更される。Ｗｏｒｄのファイル・タイプ関連付けを有するドキュメントをユーザがクリックすると、オペレーティング・システムはマイクロソフトのＷｏｒｄを起動する。ファイル・タイプ関連付けは、オペレーティング・システムの拡張ポイントの具体的な例である。仮想化の一部分は分離であり、これは、或るアプリケーションには別のアプリケーションが見えず、或るアプリケーションの動作がオペレーティング・システムに影響を及ぼさないかまたはプロキシを介してのみオペレーティング・システムに影響を及ぼすことを意味する。ファイル・タイプ関連付けのケースでは、アプリケーションのためにファイル・タイプ関連付けをプロキシとして検出し登録するマイクロソフトのＡｐｐ−Ｖクライアントが、プロキシの１つの例である。このように、マイクロソフトのＡｐｐ−Ｖはオペレーティング・システムの修正を認識し、仮想化されたアプリケーションが削除されたときは当該修正を元に戻すことができる。
【発明の概要】
【０００４】
不都合なことに、オペレーティング・システムの拡張ポイントごとにカスタム・プロキシを構築することは現実的でなく拡張可能ではない。マイクロソフトのＷＩＮＤＯＷＳには３０００を超える拡張ポイントがあり、それらの拡張ポイントごとにプロキシを書くことは事実上不可能である。さらに、新たなオペレーティング・システムの各々をサポートすることに伴い、拡張ポイントをさらに検出し管理してアプリケーション仮想化を期待通りに動作させ続ける必要がある。拡張ポイントの数が絶え間なく拡大すると、開発とテストの工数が浪費され、他の新機能に費やす工数が奪われることとなる。
【０００５】
本明細書では、オペレーティング・システムが提供するリパース・ポイントを用いて拡張ポイントの登録を最小限にする、拡張ポイント仮想化システムを説明する。リパース・ポイントはアプリケーションの分離を保ちつつ、拡張ポイントごとにカスタム拡張ポイントのプロキシを書くという拡張性の問題を排除する。オペレーティング・システムをアプリケーション・リソースの典型的な位置から当該アプリケーション・リソースの仮想化された安全な位置にリダイレクトすることによって、多数の拡張ポイントを扱うことができる。拡張ポイント仮想化システムは、リパース・ポイントを使用して、拡張ポイントごとのカスタム・プロキシの必要性を排除する。それだけでなく、本システムは、アプリケーション仮想化リパース・ポイントを包括的に扱う単一のファイル・システム・フィルタを利用し、リダイレクションを要する拡張ポイントに対するリパース・ポイント・データを格納することができる。このように、本システムは、アプリケーション仮想化システムが、単にリパース・ポイントで扱える新たな位置を登録し、次いで登録した位置を包括的に扱えるようにすることで、新たな拡張ポイントを扱う処理を簡潔にする。
【０００６】
本要約は、選択した概念を簡潔な形で導入するために与えたものである。その概念は、下記の発明を実施するための形態においてさらに説明する。本要約は、クレーム主題の主要な特徴または本質的な特徴を特定しようとするものではなく、クレーム主題の範囲を限定するために使用しようとするものでもない。
【図面の簡単な説明】
【０００７】
【図１】１実施形態における、拡張ポイント仮想化システムのコンポーネントを示すブロック図である。
【図２】１実施形態における、拡張ポイントを識別し、識別した拡張ポイントに対するアプリケーション・リダイレクションを構成するための、拡張ポイント仮想化システムの処理を示す流れ図である。
【図３】１実施形態における、拡張ポイントを介してリソースにアクセスする要求に応答するための仮想化システムの処理を示す流れ図である。
【発明を実施するための形態】
【０００８】
本明細書では、オペレーティング・システムが提供するリパース・ポイントを用いて拡張ポイントの登録を最小限にする、拡張ポイント仮想化システムを説明する。リパース・ポイントはアプリケーションの分離を保ちつつ、拡張ポイントごとにカスタム拡張ポイントのプロキシを書くという拡張性の問題を排除する。オペレーティング・システムをアプリケーション・リソースの典型的な位置から当該アプリケーション・リソースの仮想化された安全な位置にリダイレクトすることによって、多数の拡張ポイントを扱うことができる。例えば、以前にファイルをオペレーティング・システムのディレクトリにインストールしたアプリケーションをリダイレクトして、これらのファイルを当該アプリケーションのディレクトリにインストールすることができる（が、アプリケーション仮想化により、アプリケーションはファイルが依然としてオペレーティング・システムのディレクトリに存在すると勘違いする）。
【０００９】
ファイルまたはディレクトリはリパース・ポイントを含むことができる。リパース・ポイントは、ユーザ定義型のデータ集合である。このデータのフォーマットは、当該データとファイル・システム・フィルタを格納するアプリケーションにより認識される。アプリケーション開発者は当該フィルタをインストールしてデータを解釈しファイルを処理する。アプリケーションがリパース・ポイントを設定すると、アプリケーションはこのデータとリパース・タグを格納する。リパース・タグは、アプリケーションが格納しているデータを一意に識別するものである。ファイル・システムがファイルをリパース・ポイントで開くと、当該ファイル・システムは、リパース・タグで識別されたデータ・フォーマットに関連付けられたファイル・システム・フィルタを見つけようとする。ファイル・システム・フィルタが見つかった場合は、当該フィルタはリパース・データが指示するようにファイルを処理する。ファイル・システム・フィルタが見つからなかった場合は、ファイル・オープン動作が失敗する。例えば、リパース・ポイントは、ＮＴＦＳファイル・システム・リンクとマイクロソフトのＲＳＳ（Ｒｅｍｏｔｅ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ）を実装するために使用される。ＲＳＳは、管理者が定義した１組のルールを使用して、あまり使用されていないファイルを長期記憶、例えばテープまたは光媒体に移動する。ＲＳＳはリパース・ポイントを使用して、ファイル・システム内のファイルに関する情報を格納する。この情報は、リパース・ポイントを含むスタブ・ファイルに格納される。当該リパース・ポイントのデータは、実際のファイルが存在する装置をポイントする。ファイル・システム・フィルタはこの情報を使用してファイルを取り出すことができる。リパース・ポイントはまた、マウントされたフォルダを実装するために使用される。
【００１０】
拡張ポイント仮想化システムは、リパース・ポイントを使用して、拡張ポイントごとのカスタム・プロキシの必要性を排除する。それだけでなく、本システムは、アプリケーション仮想化リパース・ポイントを包括的に扱う単一のファイル・システム・フィルタを利用し、リダイレクションを要する拡張ポイントに対するリパース・ポイント・データを格納することができる。例えば、システムは、リパース・ポイントをファイルまたはレジストリ・キーと、そのファイルまたはレジストリ・キーの具体的な拡張の目的とは無関係に、関連付けることができる。このように、本システムは、アプリケーション仮想化システムが、単にリパース・ポイントで扱える新たな位置を登録し、次いで登録した位置を包括的に扱えるようにすることで、新たな拡張ポイントを扱う処理を簡潔にする。
【００１１】
アプリケーション仮想化では、アプリケーションに関するファイルとレジストリ・データを収集してこれをパッケージと呼ばれる記憶域に置いて、ファイルとレジストリ・エントリが、実際にはそうではないけれども、ローカルにインストールされているとアプリケーションに思わせる。以前の拡張ポイント登録方法では、拡張ポイントごとにプロキシを生成していた。このプロキシでは、パッケージがシステム上に存在することを検出し、拡張ポイントをオペレーティング・システムに登録するのに十分なメタデータを抽出していたはずである。このプロキシは、拡張ポイントが起動されたときに起動され、正しいパッケージを発見し、作業をそのパッケージに委譲したはずである。対照的に、本明細書で説明する拡張ポイント仮想化システムでは、オペレーティング・システムの機能、即ち、リパース・ポイント（または、ＵＮＩＸではシンボリック・リンク）を利用して拡張ポイントの登録を最小限にする。リパース・ポイントとは、特定のパスがオペレーティング・システムのＡＰＩ（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）で使用されるときにオペレーティング・システムが代替のデータ・パスを見るべきであることをオペレーティング・システムに伝える、オペレーティング・システムの機能である。
【００１２】
拡張ポイント仮想化システムにより、仮想パッケージ内の位置へのリダイレクションが行われる。これを行うことで、システムは、アプリケーションをオペレーティング・システムから分離し続けつつ、プロキシに依らずに新たな拡張ポイントを追加できる方法を提供する。“．ｔｘｔ”ファイル・タイプ関連付けの例を挙げ、この技法が他の種類の拡張ポイントと連動することを示す。ファイル・タイプ関連付けはレジストリ・キーを有し、当該レジストリ・キーにより、オペレーティング・システムは、ユーザがオペレーティング・システムのシェル（例えば、マイクロソフトのＷＩＮＤＯＷＳのエクスプローラ）からこのファイル・タイプ関連付けをクリックしたときに実行可能ファイルへのパスを指定するコマンドラインを実行させる。デフォルトでは、レジストリ・キーのデータは”ＨＫＥＹ＿ＣＬＡＳＳＥＳ＿ＲＯＯＴ＼ｔｘｔｆｉｌｅ＼ｓｈｅｌｌ＼ｏｐｅｎ＼ｃｏｍｍａｎｄ＝％ＳｙｓｔｅｍＲｏｏｔ％＼ｓｙｓｔｅｍ３２＼ＮＯＴＥＰＡＤ．ＥＸＥ％１“であり、これによりオペレーティング・システムがメモ帳を実行してファイルを開く。拡張ポイント仮想化システムは、”．ｔｘｔ”ファイル・タイプ関連付けを登録したパッケージがシステムに存在することを検出し、リパース・ポイントをレジストリに配置して、シェルが、ＨＫＥＹ＿ＣＬＡＳＳＥＳ＿ＲＯＯＴ＼ｔｘｔｆｉｌｅ＼ｓｈｅｌｌ＼ｏｐｅｎ＼ｃｏｍｍａｎｄを開いたときに、それがＨＫＣＲ＼［ＡＰＰ  ＧＵＩＤ］＼ｔｘｔｆｉｌｅ＼ｓｈｅｌｌ＼ｏｐｅｎ＼ｃｏｍｍａｎｄにリパースされるようにする。この場合、［ＡＰＰ  ＧＵＩＤ］はパッケージ固有のＧＵＩＤ（ｇｌｏｂａｌｌｙ  ｕｎｉｑｕｅ  ｉｄｅｎｔｉｆｉｅｒ）である。
【００１３】
本技法を、他の拡張ポイント、ならびに１つのレジストリ・エントリではなく複数の位置の複数のレジストリ・エントリを含む拡張ポイント、ならびにファイルおよびディレクトリに一般化することができる。拡張ポイント仮想化システムは（データである）パッケージ、パッケージのために登録を行うアプリケーション仮想化環境（例えば、マイクロソフトのＡｐｐ−Ｖクライアント）、および１組の拡張ポイントと連動する。拡張ポイントを、宣言的なＸＭＬ（ｅｘｔｅｎｓｉｂｌｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）構文で表現することができ、それにより、アプリケーション仮想化環境は、環境またはパッケージに修正を加える必要なく新たな拡張ポイントを容易に追加することができる。
【００１４】
図１は、１実施形態における、拡張ポイント仮想化システムのコンポーネントを示すブロック図である。システム１００は、拡張ポイント識別コンポーネント１１０、拡張ポイント・データ記憶１２０、アプリケーション仮想化環境１３０、拡張ポイント登録コンポーネント１４０、リパース・ポイント生成コンポーネント１５０、拡張ポイント・アクセス・コンポーネント１６０、および拡張ポイント・リダイレクション・コンポーネント１７０を備える。これらのコンポーネントの各々を本明細書でさらに詳細に説明する。
【００１５】
拡張ポイント識別コンポーネント１１０は拡張ポイントを識別する。当該拡張ポイントを介して、サード・パーティ製のプログラム・コードによりオペレーティング・システムまたはアプリケーションを拡張することができる。例えば、当該コンポーネントがレジストリ・キーを検出し、当該レジストリ・キーを介して、アプリケーションによって起動されるアプリケーションのアドインを登録することができる。幾つかの場合、拡張ポイントは、プロセス監視により手動で識別されるか、または、アプリケーションが実行されたときにアプリケーションの振舞いを見るために管理者が使用する他のツールにより手動で識別される。例えば、管理者はレジストリ監視位置を用いて、アプリケーションまたはオペレーティング・システムが読み出すレジストリ位置を決定することができる。
【００１６】
拡張ポイント・データ記憶１２０は、識別された拡張ポイントを宣言的なフォーマットで格納する。拡張ポイント・データ記憶１２０は、ファイル（例えば、ＸＭＬファイル）、データベース、ネットワーク・ベースのデータ記憶、クラウドベースの記憶サービス、または、識別された拡張ポイントのリストを取り出せる他の記憶媒体を備えてもよい。管理者またはアプリケーション環境の作成者が、時間の経過とともに新たな拡張ポイントを発見され次第追加してもよく、それにより、以前に配置した仮想化アプリケーションでさえも、アプリケーション環境が以前に検出しなかったオペレーティング・システムへの修正から保護することで、オペレーティング・システムの分離が拡大することによる利益を得ることができる。さらに、独立したソフトウェア・ベンダ（ＩＳＶ）がデータ記憶１２０に追加するための独自のアプリケーション拡張ポイントのリストを提供し、自己を修正したアプリケーションをより簡単に仮想化し分離できるようにしてもよい。
【００１７】
アプリケーション仮想化環境１３０は、仮想アプリケーションとホストのオペレーティング・システムの間の間接レベルを提供する。例えばアプリケーションがホストのオペレーティング・システム上で実行するように設計されているときは、ラッパが非常に薄くアプリケーションをほぼネイティブに実行可能としてもよい。代替または追加として、ラッパがＡＰＩを提供し、他のオペレーティング・システムまたはオペレーティング・システムのバージョン向けに設計されたアプリケーションが期待する他の制約を満足してもよい。このように、アプリケーション仮想化環境１３０は、アプリケーションがホストのオペレーティング・システムの利用可能リソースを用いて設計された環境を、仮想アプリケーションに提供する。
【００１８】
拡張ポイント登録コンポーネント１４０は、識別された拡張ポイントを参照する仮想アプリケーション・パッケージのインストールを検出する。コンポーネント１４０は拡張ポイント・データ記憶１２０にアクセスして、識別された拡張ポイントのリストをロードし、当該リストをユーザが起動したパッケージと比較する。これらがマッチすれば、コンポーネント１４０はリパース・ポイント生成コンポーネント１５０を起動して、アプリケーション・パッケージ内の拡張ポイント・データを検索するようにアプリケーションをリダイレクトするリパース・ポイントを生成する。
【００１９】
リパース・ポイント生成コンポーネント１５０は、識別された拡張ポイントと、識別された拡張ポイントを参照する検出された仮想アプリケーション・パッケージとに対して、リパース・ポイントを生成する。例えば、拡張ポイント登録コンポーネント１４０がファイル・タイプ関連付けを登録するパッケージを検出した場合、リパース・ポイント生成コンポーネント１５０は、当該ファイル・タイプ関連付けの中のレジストリ・エントリに対するリパース・ポイントを生成する。当該レジストリ・エントリは、当該ファイル・タイプ関連付けが起動されたときにアプリケーションを起動することを記述するものである。生成されたリパース・ポイントは当該レジストリ・エントリを、検出した仮想アプリケーション・パッケージ内の位置にリダイレクトする。
【００２０】
拡張ポイント・アクセス・コンポーネント１６０は、生成されたリパース・ポイントへのアクセスを検出し、拡張ポイント・リダイレクション・コンポーネント１７０を起動して、オペレーティング・システムに、検出された仮想アプリケーション・パッケージに関連付けられた位置で指定データを検索させる。別々のコンポーネントとして説明しているが、拡張ポイント仮想化システム１００が、デフォルトのオペレーティング・システムの振舞いを利用して、オペレーティング・システムが拡張ポイント仮想化システム１００に通知することなくリダイレクションを実施できるようにしてもよい。しかし、オペレーティング・システムにより、リパース・ポイントがアクセスされたときに起動されるファイル・システム・フィルタを登録可能にし、幾つかの実施形態では、システムがこの機能を利用してアクセスを検出しカスタム処理を実行してもよい。これは、例えば、アプリケーション要求がリダイレクトされているデバッグおよび監査において有用であろう。
【００２１】
拡張ポイント・リダイレクション・コンポーネント１７０は、オペレーティング・システムまたはアプリケーションに、検出された仮想アプリケーション・パッケージと関連付けられた位置でリパース・ポイントが参照する指定データを検索させる。前述したように、拡張ポイント仮想化システム１００はオペレーティング・システムのデフォルトの振舞いを利用して、拡張ポイント仮想化システム１００を起動せずにリダイレクションをリパース・ポイントの機能として実行してもよい。
【００２２】
拡張ポイント仮想化システムが実装されたコンピューティング装置が、中央演算装置、メモリ、入力装置（例えば、キーボードおよびポインティング・デバイス）、出力装置（例えば、表示装置）、および記憶装置（例えば、ディスク・ドライブまたは他の不揮発性記憶媒体）を備えてもよい。メモリおよび記憶装置は、システムを実装または実現するコンピュータ実行可能命令（例えば、ソフトウェア）でエンコードできるコンピュータ読取可能記憶媒体である。さらに、データ構造およびメッセージ構造を、通信リンク上の信号のようなデータ伝送媒体を介して格納または送信してもよい。インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、拠点間ダイヤルアップ接続、携帯電話ネットワーク、等の様々な通信リンクを使用してもよい。
【００２３】
システムの諸実施形態を様々な動作環境で実装してもよい。当該動作環境には、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルド装置またはラップトップ装置、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、プログラム可能消費家電、デジタル・カメラ、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ、上述のシステムもしくは装置の何れかを含む分散コンピューティング環境、等が含まれる。コンピュータ・システムが、携帯電話、携帯情報端末、スマート・フォン、パーソナル・コンピュータ、プログラム可能消費家電、デジタル・カメラ、等であってもよい。
【００２４】
システムを、プログラム・モジュールのような、１つもしくは複数のコンピュータまたは他の装置によって実行されるコンピュータ実行可能命令の一般的なコンテキストで説明してもよい。一般に、プログラム・モジュールは、特定のタスクを実施するかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含む。一般に、プログラム・モジュールの機能を様々な実施形態において必要に応じて組み合わせるかまたは分散させてもよい。
【００２５】
図２は、１実施形態における、拡張ポイントを識別し、識別した拡張ポイントに対するアプリケーション・リダイレクションを構成するための拡張ポイント仮想化システムの処理を示す流れ図である。ブロック２１０から開始して、システムが拡張ポイントを識別する。例えば、システムが拡張ポイントのリストをオペレーティング・システムのベンダまたはＩＳＶから受け取って、拡張ポイントのデータ記憶に追加してもよい。代替または追加として、アプリケーション仮想化を利用する仮想化システムの開発者またはシステム管理者が、例えばプロセス監視ツールにより、拡張ポイントを手動で識別してもよい。
【００２６】
続いてブロック２２０で、システムが、識別した拡張ポイントを拡張ポイント・データ記憶に追加する。拡張ポイント・デーダ記憶が、ＸＭＬファイルのような、既知の拡張ポイントと関連するリソース・パスとを列挙する宣言的なフォーマットを備えてもよい。システムがアプリケーション・パッケージ内に拡張ポイント・パスへの参照を検出すると、システムは本明細書で説明したステップを実施して、オペレーティング・システムのアプリケーション修正を分離しリダイレクトする。続いて決定ブロック２３０で、識別すべき拡張ポイントがまだある場合は、システムはブロック２１０にループし、そうでなければシステムはブロック２４０に続く。本流れ図では説明を簡単にするために示したが、以上のステップを、下記のステップと別々に実施しても、新たな拡張ポイントが発見される度にその都度実施してもよいことに留意されたい。同様に、下記のステップを多数のアプリケーションに対して、システムが仮想化アプリケーションを実行する度に繰返し行ってもよい。
【００２７】
続いてブロック２４０で、システムは、仮想アプリケーション・パッケージを指定するアプリケーション実行要求を受け取る。一般に、これはユーザが、管理者が仮想化するよう構成したアプリケーションをオペレーティング・システムのシェルから実行したときに行われる。アプリケーションは一般にはユーザのコンピュータにインストールさえもされていないが、ユーザのコンピュータは、中央に（例えば、ネットワーク上に）格納された仮想アプリケーション・パッケージを発見して実行するのに十分な参照を有する。仮想アプリケーション・パッケージが起動されると、システムは本明細書で説明したアプリケーション仮想化環境をクライアントとして実行してアプリケーション仮想化プロセスを誘導する。
【００２８】
続いてブロック２５０で、システムは、仮想アプリケーション・パッケージが参照する１つまたは複数のパスと拡張ポイント・データ記憶内のパスとを比較することによって、１つまたは複数のアプリケーション拡張ポイント参照を指定の仮想アプリケーション・パッケージ内で識別する。例えば、アプリケーションが、レジストリ・ベースの拡張ポイントを介してファイル・タイプ関連付けまたはワード・プロセッサ・アプリケーションのアドインを登録してもよい。レジストリの位置が、拡張ポイント・データ記憶が記憶するリスト上にある場合は、システムはアプリケーション・パッケージが拡張ポイントを参照すると判定する。続いて決定ブロック２６０で、システムが拡張ポイシト参照を検出した場合は、システムはブロック２７０に進み、そうでなければシステムは終了する。
【００２９】
続いて決定ブロック２７０で、システムは識別したアプリケーション拡張ポイント参照を指定の仮想アプリケーション・パッケージ内の分離された位置にリダイレクトするためのリパース・ポイントを生成する。当該リパース・ポイントにより、拡張ポイントにアクセスしてアプリケーション・パッケージ内のデータを検索させ、アプリケーション・パッケージがオペレーティング・システムを直接修正することを防ぐ。続いて決定ブロック２８０で、システムがアプリケーション拡張ポイント参照をさらに検出した場合、システムはブロック２７０にループして残りの参照ごとにリパース・ポイントを生成し、そうでない場合は、システムは終了する。ブロック２８０の後、これらのステップが完了する。
【００３０】
図３は、１実施形態における、拡張ポイントを介してリソースにアクセスする要求に応答するための仮想化システムの処理を示す流れ図である。ブロック３１０から開始して、システムはリソース・パスを参照するリソース・アクセス要求を受け取る。例えば、アプリケーションが、オペレーティング・システムが提供するファイル・オープンのＡＰＩを呼び出して、アプリケーションが開くことを要求するファイルへのパスを指定してもよい。代替または追加として、オペレーティング・システムのシェルのような他のアプリケーションが、アプリケーションがそれを通じてオペレーティング・システムまたはアプリケーションの機能を拡張できるリソース位置にアクセスを試みてもよい。
【００３１】
続いてブロック３２０で、拡張ポイント仮想化システムが、パスが参照するリソースが関連するリパース・ポイントを含むかどうかを判定する。例えば、オペレーティング・システムが、リパース・ポイントのデータが格納されているリソースに関連付けられたデータを検索してもよい。続いて決定ブロック３３０で、システムがリパース・ポイントを検出した場合、システムはブロック３４０に進み、そうでない場合システムは終了する。続いてブロック３４０で、拡張ポイント仮想化システムが、参照パスに関連付けられた仮想アプリケーション・パッケージを識別する。例えば、リパース・ポイントが、アプリケーション・パッケージを識別するアプリケーションのＧＵＩＤを含んでもよい。システムが、アプリケーションのＧＵＩＤを用いてアプリケーション・パッケージを公知の位置に格納するといった、アプリケーションのＧＵＩＤをアプリケーション・パッケージにマップする共通メソッドを含んでもよい。
【００３２】
続いてブロック３５０で、拡張ポイント仮想化システムはリソース要求を識別した仮想アプリケーション・パッケージにリダイレクトする。例えば、オペレーティング・システムが、リパース・ポイントを検出した後に当該リソース要求を登録したファイル・システム・ドライバに転送してもよく、または、例えば当該要求を指定の位置にリダイレクトすることによって当該要求をデフォルトのやり方で処理してもよい。例として、システムが、受け取った要求に含まれるファイル・パスを、仮想アプリケーション・パッケージに関連付けられたファイル・パスで置き換えてもよい。続いてブロック３６０で、拡張ポイント仮想化システムが、要求されたリソースへのアクセスを提供することによって、リダイレクトされたリソース要求に応答する。例えば、オペレーティング・システムが当該要求に応答して、識別されたファイルを開き、当該ファイルのデータを提供してもよい。アプリケーションは、アプリケーションがデータを通常格納する場所にデータがあたかも存在するかのように振舞い、仮想化システムが、データが実際に格納されている場所を指すように要求を修正する。リパース・ポイントが行ったリダイレクションのため、アプリケーション仮想化は、リソース要求がアプリケーションから来たか、別のプロセスから来たか、または他のソースから来たかに関わらず正しく動作する。ブロック３６０の後、これらのステップが完了する。
【００３３】
幾つかの実施形態では、拡張ポイント仮想化システムがアプリケーション・データをパッケージ・ファイルのフォーマットで格納する。パッケージ・ファイルは、複数の他のファイルおよび複数の種類のデータを格納できる任意のファイルフォーマットであることができる。例えば、一般的な既存のパッケージ・ファイルフォーマットには、ＺＩＰ、ＣＡＢ、ＲＡＲ、ＳＦＴ、および他の同様なフォーマットがある。パッケージ・ファイルはしばしば、複数のファイルを１つのアーカイブ・フォーマットに格納可能とすることに加えて、ファイル・サイズを削減するための圧縮や他の機能（例えば、暗号化）を含む。仮想化アプリケーション向けのパッケージ・ファイルには、レジストリ・ハイブ、ファイル、データベース、および仮想アプリケーションが用いる他種のデータを含めてもよい。オペレーティング・システムが、ディレクトリ、ボリューム、ディスク・ドライブ、または他のリソースのようなパッケージ・ファイルをマウントして、仮想アプリケーションが、ファイルおよび他のリソースを操作するための共通のオペレーティング・システムＡＰＩを用いてパッケージ・ファイル内に格納されたアイテムを参照できるようにしてもよい。幾つかの実施形態では、拡張ポイント仮想化システムが、仮想アプリケーションのデータを当該仮想アプリケーションの実行可能ファイルに含めてもよく、それにより、当該アプリケーションを、自己解凍式データを伴う単一の実行ファイルとして分散させることができる。本明細書では幾つかの例を説明したが、拡張ポイント仮想化システムはアプリケーションのデータを格納するどの特定の方法にも限定されず、説明したもの以外の記憶機構を使用して同様な結果を実現することができる。
【００３４】
以上から、拡張ポイント仮想化システムの特定の実施形態を本明細書では例示の目的で説明したが、本発明の趣旨と範囲を逸脱しない様々な修正を加え得ることは理解されよう。したがって、本発明は添付の特許請求の範囲による以外は限定されない。
【図１】
0005847734.tif 000002
【図２】
0005847734.tif 000003
【図３】
0005847734.tif 000004