拡張ポイントを識別しアプリケーションによる拡張ポイントの利用を分離するためのコンピュータ実行型の方法であって、サードパーティ製の拡張を介してオペレーティングシステムまたはアプリケーションを拡張する方法を提供する拡張ポイントを識別するステップと、識別した前記拡張ポイントを拡張ポイントデータ記憶に追加するステップと、仮想アプリケーションパッケージを指定するアプリケーション実行要求を受け取るステップと、前記仮想アプリケーションパッケージが参照する1つまたは複数のパスを前記拡張ポイントデータ記憶内のパスと比較することによって、指定した前記仮想アプリケーションパッケージ内の1つまたは複数のアプリケーション拡張ポイント参照を識別するステップと、識別したアプリケーション拡張ポイント参照を前記指定した仮想アプリケーションパッケージ内の分離した位置にリダイレクトするためのリパースポイントを生成するステップと、を含み、これらのステップが少なくとも1つのプロセッサにより実行されることを特徴とする方法。拡張ポイントを識別するステップが、拡張ポイントのリストをオペレーティングシステムのベンダまたは独立したソフトウェアベンダISVから受け取るステップを含むことを特徴とする請求項1に記載の方法。拡張ポイントを識別するステップが、アプリケーションがオペレーティングシステムのリソースを利用することを検出するプロセス監視ツールで前記拡張ポイントを自動的に識別するステップを含むことを特徴とする請求項1に記載の方法。前記拡張ポイントデータ記憶が、既知の拡張ポイントと関連するリソースパスとを列挙する宣言的なフォーマットを含むことを特徴とする請求項1に記載の方法。アプリケーション実行要求を受け取るステップが、仮想化アプリケーションを実行するためのユーザ要求を受け取るステップを含むことを特徴とする請求項1に記載の方法。アプリケーション実行要求を受け取るステップが、前記要求が受け取られたコンピュータシステムにネイティブにインストールされていないアプリケーションを実行する要求を受け取るステップを含むことを特徴とする請求項1に記載の方法。前記アプリケーション実行要求を受け取ると、要求されたアプリケーションを実行するためのアプリケーション仮想化環境を起動するステップをさらに含むことを特徴とする請求項1に記載の方法。拡張ポイント参照を識別するステップが、ファイルタイプ関連付けを登録するための要求を識別するステップを含むことを特徴とする請求項1に記載の方法。リパースポイントを生成するステップが、アプリケーション識別子と、識別した前記アプリケーション拡張ポイント参照にアクセスするための代替パスとを指定するステップを含むことを特徴とする請求項1に記載の方法。リパースポイントを生成するステップがさらに、指定された仮想アプリケーションが、前記仮想アプリケーションを実行するホストのオペレーティングシステムを直接修正することを防ぐステップを含むことを特徴とする請求項1に記載の方法。オペレーティングシステムとアプリケーション拡張ポイントの仮想化を包括的に扱うためのコンピュータシステムであって、ソフトウェア命令を実行するように構成されたプロセッサおよびメモリと、拡張ポイントを識別するように構成された拡張ポイント識別コンポーネントであって、当該拡張ポイントを介してオペレーティングシステムまたはアプリケーションをサードパーティのプログラムコードにより拡張できる、拡張ポイント識別コンポーネントと、識別した拡張ポイントを宣言的なフォーマットで格納するように構成された拡張ポイントデータ記憶と、仮想アプリケーションとホストのオペレーティングシステムの間の間接レベルを提供するように構成されたアプリケーション仮想化環境と、識別された拡張ポイントを参照する仮想アプリケーションパッケージのインストールを検出するように構成された拡張ポイント登録コンポーネントと、識別された拡張ポイントを参照する検出された前記仮想アプリケーションパッケージをポイントする前記識別された拡張ポイントに対するリパースポイントを生成するように構成されたリパースポイント生成コンポーネントと、生成された前記リパースポイントのアクセスを検出し、拡張ポイントリダイレクションコンポーネントを起動するように構成された拡張ポイントアクセスコンポーネントと、前記ホストのオペレーティングシステムまたはアプリケーションに、前記検出された仮想アプリケーションパッケージに関連付けられた位置でリパースポイントが参照する指定データを検索させるように構成された拡張ポイントリダイレクションコンポーネントと、を備えることを特徴とするコンピュータシステム。前記拡張ポイント識別コンポーネントがさらに、プロセス監視に基づいて拡張ポイントを自動的に識別し、実行中にアプリケーションによってアクセスされるパスを検出するように構成されたことを特徴とする請求項11に記載のシステム。前記拡張ポイントデータ記憶が、識別された拡張ポイントのリストを含むXMLファイルを含むことを特徴とする請求項11に記載のシステム。前記拡張ポイントデータ記憶がさらに、新たな拡張ポイントが発見される度にその都度当該新たな拡張ポイントを受け取り、それにより、以前に配置した仮想化アプリケーションが、前記アプリケーション環境が以前に検出しなかった前記オペレーティングシステムへの修正から保護することで、オペレーティングシステムの分離が拡大することによる利益を得ることができるように構成されたことを特徴とする請求項11に記載のシステム。前記アプリケーション仮想化環境がさらに、前記ホストのオペレーティングシステムの利用可能なリソースを用いてアプリケーションが設計された環境を前記仮想アプリケーションに提供するように構成されたことを特徴とする請求項11に記載のシステム。本明細書では、オペレーティングシステムが提供するリパースポイントを用いて拡張ポイントの登録を最小限にする、拡張ポイント仮想化システムを説明する。リパースポイントはアプリケーションの分離を保ちつつ、拡張ポイントごとにカスタム拡張ポイントのプロキシを書くという拡張性の問題を排除する。オペレーティングシステムをアプリケーションリソースの典型的な位置から当該アプリケーションリソースの仮想化された安全な位置にリダイレクトすることによって、多数の拡張ポイントを扱うことができる。例えば、以前にファイルをオペレーティングシステムのディレクトリにインストールしたアプリケーションをリダイレクトして、これらのファイルを当該アプリケーションのディレクトリにインストールすることができるが、アプリケーション仮想化により、アプリケーションはファイルが依然としてオペレーティングシステムのディレクトリに存在すると勘違いする。ファイルまたはディレクトリはリパースポイントを含むことができる。リパースポイントは、ユーザ定義型のデータ集合である。このデータのフォーマットは、当該データとファイルシステムフィルタを格納するアプリケーションにより認識される。アプリケーション開発者は当該フィルタをインストールしてデータを解釈しファイルを処理する。アプリケーションがリパースポイントを設定すると、アプリケーションはこのデータとリパースタグを格納する。リパースタグは、アプリケーションが格納しているデータを一意に識別するものである。ファイルシステムがファイルをリパースポイントで開くと、当該ファイルシステムは、リパースタグで識別されたデータフォーマットに関連付けられたファイルシステムフィルタを見つけようとする。ファイルシステムフィルタが見つかった場合は、当該フィルタはリパースデータが指示するようにファイルを処理する。ファイルシステムフィルタが見つからなかった場合は、ファイルオープン動作が失敗する。例えば、リパースポイントは、NTFSファイルシステムリンクとマイクロソフトのRSSRemoteStorageServerを実装するために使用される。RSSは、管理者が定義した1組のルールを使用して、あまり使用されていないファイルを長期記憶、例えばテープまたは光媒体に移動する。RSSはリパースポイントを使用して、ファイルシステム内のファイルに関する情報を格納する。この情報は、リパースポイントを含むスタブファイルに格納される。当該リパースポイントのデータは、実際のファイルが存在する装置をポイントする。ファイルシステムフィルタはこの情報を使用してファイルを取り出すことができる。リパースポイントはまた、マウントされたフォルダを実装するために使用される。拡張ポイント仮想化システムは、リパースポイントを使用して、拡張ポイントごとのカスタムプロキシの必要性を排除する。それだけでなく、本システムは、アプリケーション仮想化リパースポイントを包括的に扱う単一のファイルシステムフィルタを利用し、リダイレクションを要する拡張ポイントに対するリパースポイントデータを格納することができる。例えば、システムは、リパースポイントをファイルまたはレジストリキーと、そのファイルまたはレジストリキーの具体的な拡張の目的とは無関係に、関連付けることができる。このように、本システムは、アプリケーション仮想化システムが、単にリパースポイントで扱える新たな位置を登録し、次いで登録した位置を包括的に扱えるようにすることで、新たな拡張ポイントを扱う処理を簡潔にする。アプリケーション仮想化では、アプリケーションに関するファイルとレジストリデータを収集してこれをパッケージと呼ばれる記憶域に置いて、ファイルとレジストリエントリが、実際にはそうではないけれども、ローカルにインストールされているとアプリケーションに思わせる。以前の拡張ポイント登録方法では、拡張ポイントごとにプロキシを生成していた。このプロキシでは、パッケージがシステム上に存在することを検出し、拡張ポイントをオペレーティングシステムに登録するのに十分なメタデータを抽出していたはずである。このプロキシは、拡張ポイントが起動されたときに起動され、正しいパッケージを発見し、作業をそのパッケージに委譲したはずである。対照的に、本明細書で説明する拡張ポイント仮想化システムでは、オペレーティングシステムの機能、即ち、リパースポイントまたは、UNIXではシンボリックリンクを利用して拡張ポイントの登録を最小限にする。リパースポイントとは、特定のパスがオペレーティングシステムのAPIapplicationprogramminginterfaceで使用されるときにオペレーティングシステムが代替のデータパスを見るべきであることをオペレーティングシステムに伝える、オペレーティングシステムの機能である。拡張ポイント仮想化システムにより、仮想パッケージ内の位置へのリダイレクションが行われる。これを行うことで、システムは、アプリケーションをオペレーティングシステムから分離し続けつつ、プロキシに依らずに新たな拡張ポイントを追加できる方法を提供する。.txtファイルタイプ関連付けの例を挙げ、この技法が他の種類の拡張ポイントと連動することを示す。ファイルタイプ関連付けはレジストリキーを有し、当該レジストリキーにより、オペレーティングシステムは、ユーザがオペレーティングシステムのシェル例えば、マイクロソフトのWINDOWSのエクスプローラからこのファイルタイプ関連付けをクリックしたときに実行可能ファイルへのパスを指定するコマンドラインを実行させる。デフォルトでは、レジストリキーのデータはHKEY_CLASSES_ROOT\txtfile\shell\open\command=SystemRoot\system32\NOTEPAD.EXE1であり、これによりオペレーティングシステムがメモ帳を実行してファイルを開く。拡張ポイント仮想化システムは、.txtファイルタイプ関連付けを登録したパッケージがシステムに存在することを検出し、リパースポイントをレジストリに配置して、シェルが、HKEY_CLASSES_ROOT\txtfile\shell\open\commandを開いたときに、それがHKCR\[APPGUID]\txtfile\shell\open\commandにリパースされるようにする。この場合、[APPGUID]はパッケージ固有のGUIDgloballyuniqueidentifierである。本技法を、他の拡張ポイント、ならびに1つのレジストリエントリではなく複数の位置の複数のレジストリエントリを含む拡張ポイント、ならびにファイルおよびディレクトリに一般化することができる。拡張ポイント仮想化システムはデータであるパッケージ、パッケージのために登録を行うアプリケーション仮想化環境例えば、マイクロソフトのApp-Vクライアント、および1組の拡張ポイントと連動する。拡張ポイントを、宣言的なXMLextensiblemarkuplanguage構文で表現することができ、それにより、アプリケーション仮想化環境は、環境またはパッケージに修正を加える必要なく新たな拡張ポイントを容易に追加することができる。図1は、1実施形態における、拡張ポイント仮想化システムのコンポーネントを示すブロック図である。システム100は、拡張ポイント識別コンポーネント110、拡張ポイントデータ記憶120、アプリケーション仮想化環境130、拡張ポイント登録コンポーネント140、リパースポイント生成コンポーネント150、拡張ポイントアクセスコンポーネント160、および拡張ポイントリダイレクションコンポーネント170を備える。これらのコンポーネントの各々を本明細書でさらに詳細に説明する。拡張ポイント識別コンポーネント110は拡張ポイントを識別する。当該拡張ポイントを介して、サードパーティ製のプログラムコードによりオペレーティングシステムまたはアプリケーションを拡張することができる。例えば、当該コンポーネントがレジストリキーを検出し、当該レジストリキーを介して、アプリケーションによって起動されるアプリケーションのアドインを登録することができる。幾つかの場合、拡張ポイントは、プロセス監視により手動で識別されるか、または、アプリケーションが実行されたときにアプリケーションの振舞いを見るために管理者が使用する他のツールにより手動で識別される。例えば、管理者はレジストリ監視位置を用いて、アプリケーションまたはオペレーティングシステムが読み出すレジストリ位置を決定することができる。拡張ポイントデータ記憶120は、識別された拡張ポイントを宣言的なフォーマットで格納する。拡張ポイントデータ記憶120は、ファイル例えば、XMLファイル、データベース、ネットワークベースのデータ記憶、クラウドベースの記憶サービス、または、識別された拡張ポイントのリストを取り出せる他の記憶媒体を備えてもよい。管理者またはアプリケーション環境の作成者が、時間の経過とともに新たな拡張ポイントを発見され次第追加してもよく、それにより、以前に配置した仮想化アプリケーションでさえも、アプリケーション環境が以前に検出しなかったオペレーティングシステムへの修正から保護することで、オペレーティングシステムの分離が拡大することによる利益を得ることができる。さらに、独立したソフトウェアベンダISVがデータ記憶120に追加するための独自のアプリケーション拡張ポイントのリストを提供し、自己を修正したアプリケーションをより簡単に仮想化し分離できるようにしてもよい。アプリケーション仮想化環境130は、仮想アプリケーションとホストのオペレーティングシステムの間の間接レベルを提供する。例えばアプリケーションがホストのオペレーティングシステム上で実行するように設計されているときは、ラッパが非常に薄くアプリケーションをほぼネイティブに実行可能としてもよい。代替または追加として、ラッパがAPIを提供し、他のオペレーティングシステムまたはオペレーティングシステムのバージョン向けに設計されたアプリケーションが期待する他の制約を満足してもよい。このように、アプリケーション仮想化環境130は、アプリケーションがホストのオペレーティングシステムの利用可能リソースを用いて設計された環境を、仮想アプリケーションに提供する。拡張ポイント登録コンポーネント140は、識別された拡張ポイントを参照する仮想アプリケーションパッケージのインストールを検出する。コンポーネント140は拡張ポイントデータ記憶120にアクセスして、識別された拡張ポイントのリストをロードし、当該リストをユーザが起動したパッケージと比較する。これらがマッチすれば、コンポーネント140はリパースポイント生成コンポーネント150を起動して、アプリケーションパッケージ内の拡張ポイントデータを検索するようにアプリケーションをリダイレクトするリパースポイントを生成する。リパースポイント生成コンポーネント150は、識別された拡張ポイントと、識別された拡張ポイントを参照する検出された仮想アプリケーションパッケージとに対して、リパースポイントを生成する。例えば、拡張ポイント登録コンポーネント140がファイルタイプ関連付けを登録するパッケージを検出した場合、リパースポイント生成コンポーネント150は、当該ファイルタイプ関連付けの中のレジストリエントリに対するリパースポイントを生成する。当該レジストリエントリは、当該ファイルタイプ関連付けが起動されたときにアプリケーションを起動することを記述するものである。生成されたリパースポイントは当該レジストリエントリを、検出した仮想アプリケーションパッケージ内の位置にリダイレクトする。拡張ポイントアクセスコンポーネント160は、生成されたリパースポイントへのアクセスを検出し、拡張ポイントリダイレクションコンポーネント170を起動して、オペレーティングシステムに、検出された仮想アプリケーションパッケージに関連付けられた位置で指定データを検索させる。別々のコンポーネントとして説明しているが、拡張ポイント仮想化システム100が、デフォルトのオペレーティングシステムの振舞いを利用して、オペレーティングシステムが拡張ポイント仮想化システム100に通知することなくリダイレクションを実施できるようにしてもよい。しかし、オペレーティングシステムにより、リパースポイントがアクセスされたときに起動されるファイルシステムフィルタを登録可能にし、幾つかの実施形態では、システムがこの機能を利用してアクセスを検出しカスタム処理を実行してもよい。これは、例えば、アプリケーション要求がリダイレクトされているデバッグおよび監査において有用であろう。拡張ポイントリダイレクションコンポーネント170は、オペレーティングシステムまたはアプリケーションに、検出された仮想アプリケーションパッケージと関連付けられた位置でリパースポイントが参照する指定データを検索させる。前述したように、拡張ポイント仮想化システム100はオペレーティングシステムのデフォルトの振舞いを利用して、拡張ポイント仮想化システム100を起動せずにリダイレクションをリパースポイントの機能として実行してもよい。拡張ポイント仮想化システムが実装されたコンピューティング装置が、中央演算装置、メモリ、入力装置例えば、キーボードおよびポインティングデバイス、出力装置例えば、表示装置、および記憶装置例えば、ディスクドライブまたは他の不揮発性記憶媒体を備えてもよい。メモリおよび記憶装置は、システムを実装または実現するコンピュータ実行可能命令例えば、ソフトウェアでエンコードできるコンピュータ読取可能記憶媒体である。さらに、データ構造およびメッセージ構造を、通信リンク上の信号のようなデータ伝送媒体を介して格納または送信してもよい。インターネット、ローカルエリアネットワーク、広域ネットワーク、拠点間ダイヤルアップ接続、携帯電話ネットワーク、等の様々な通信リンクを使用してもよい。システムの諸実施形態を様々な動作環境で実装してもよい。当該動作環境には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド装置またはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能消費家電、デジタルカメラ、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上述のシステムもしくは装置の何れかを含む分散コンピューティング環境、等が含まれる。コンピュータシステムが、携帯電話、携帯情報端末、スマートフォン、パーソナルコンピュータ、プログラム可能消費家電、デジタルカメラ、等であってもよい。システムを、プログラムモジュールのような、1つもしくは複数のコンピュータまたは他の装置によって実行されるコンピュータ実行可能命令の一般的なコンテキストで説明してもよい。一般に、プログラムモジュールは、特定のタスクを実施するかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含む。一般に、プログラムモジュールの機能を様々な実施形態において必要に応じて組み合わせるかまたは分散させてもよい。図2は、1実施形態における、拡張ポイントを識別し、識別した拡張ポイントに対するアプリケーションリダイレクションを構成するための拡張ポイント仮想化システムの処理を示す流れ図である。ブロック210から開始して、システムが拡張ポイントを識別する。例えば、システムが拡張ポイントのリストをオペレーティングシステムのベンダまたはISVから受け取って、拡張ポイントのデータ記憶に追加してもよい。代替または追加として、アプリケーション仮想化を利用する仮想化システムの開発者またはシステム管理者が、例えばプロセス監視ツールにより、拡張ポイントを手動で識別してもよい。続いてブロック220で、システムが、識別した拡張ポイントを拡張ポイントデータ記憶に追加する。拡張ポイントデーダ記憶が、XMLファイルのような、既知の拡張ポイントと関連するリソースパスとを列挙する宣言的なフォーマットを備えてもよい。システムがアプリケーションパッケージ内に拡張ポイントパスへの参照を検出すると、システムは本明細書で説明したステップを実施して、オペレーティングシステムのアプリケーション修正を分離しリダイレクトする。続いて決定ブロック230で、識別すべき拡張ポイントがまだある場合は、システムはブロック210にループし、そうでなければシステムはブロック240に続く。本流れ図では説明を簡単にするために示したが、以上のステップを、下記のステップと別々に実施しても、新たな拡張ポイントが発見される度にその都度実施してもよいことに留意されたい。同様に、下記のステップを多数のアプリケーションに対して、システムが仮想化アプリケーションを実行する度に繰返し行ってもよい。続いてブロック240で、システムは、仮想アプリケーションパッケージを指定するアプリケーション実行要求を受け取る。一般に、これはユーザが、管理者が仮想化するよう構成したアプリケーションをオペレーティングシステムのシェルから実行したときに行われる。アプリケーションは一般にはユーザのコンピュータにインストールさえもされていないが、ユーザのコンピュータは、中央に例えば、ネットワーク上に格納された仮想アプリケーションパッケージを発見して実行するのに十分な参照を有する。仮想アプリケーションパッケージが起動されると、システムは本明細書で説明したアプリケーション仮想化環境をクライアントとして実行してアプリケーション仮想化プロセスを誘導する。続いてブロック250で、システムは、仮想アプリケーションパッケージが参照する1つまたは複数のパスと拡張ポイントデータ記憶内のパスとを比較することによって、1つまたは複数のアプリケーション拡張ポイント参照を指定の仮想アプリケーションパッケージ内で識別する。例えば、アプリケーションが、レジストリベースの拡張ポイントを介してファイルタイプ関連付けまたはワードプロセッサアプリケーションのアドインを登録してもよい。レジストリの位置が、拡張ポイントデータ記憶が記憶するリスト上にある場合は、システムはアプリケーションパッケージが拡張ポイントを参照すると判定する。続いて決定ブロック260で、システムが拡張ポイシト参照を検出した場合は、システムはブロック270に進み、そうでなければシステムは終了する。続いて決定ブロック270で、システムは識別したアプリケーション拡張ポイント参照を指定の仮想アプリケーションパッケージ内の分離された位置にリダイレクトするためのリパースポイントを生成する。当該リパースポイントにより、拡張ポイントにアクセスしてアプリケーションパッケージ内のデータを検索させ、アプリケーションパッケージがオペレーティングシステムを直接修正することを防ぐ。続いて決定ブロック280で、システムがアプリケーション拡張ポイント参照をさらに検出した場合、システムはブロック270にループして残りの参照ごとにリパースポイントを生成し、そうでない場合は、システムは終了する。ブロック280の後、これらのステップが完了する。図3は、1実施形態における、拡張ポイントを介してリソースにアクセスする要求に応答するための仮想化システムの処理を示す流れ図である。ブロック310から開始して、システムはリソースパスを参照するリソースアクセス要求を受け取る。例えば、アプリケーションが、オペレーティングシステムが提供するファイルオープンのAPIを呼び出して、アプリケーションが開くことを要求するファイルへのパスを指定してもよい。代替または追加として、オペレーティングシステムのシェルのような他のアプリケーションが、アプリケーションがそれを通じてオペレーティングシステムまたはアプリケーションの機能を拡張できるリソース位置にアクセスを試みてもよい。続いてブロック320で、拡張ポイント仮想化システムが、パスが参照するリソースが関連するリパースポイントを含むかどうかを判定する。例えば、オペレーティングシステムが、リパースポイントのデータが格納されているリソースに関連付けられたデータを検索してもよい。続いて決定ブロック330で、システムがリパースポイントを検出した場合、システムはブロック340に進み、そうでない場合システムは終了する。続いてブロック340で、拡張ポイント仮想化システムが、参照パスに関連付けられた仮想アプリケーションパッケージを識別する。例えば、リパースポイントが、アプリケーションパッケージを識別するアプリケーションのGUIDを含んでもよい。システムが、アプリケーションのGUIDを用いてアプリケーションパッケージを公知の位置に格納するといった、アプリケーションのGUIDをアプリケーションパッケージにマップする共通メソッドを含んでもよい。続いてブロック350で、拡張ポイント仮想化システムはリソース要求を識別した仮想アプリケーションパッケージにリダイレクトする。例えば、オペレーティングシステムが、リパースポイントを検出した後に当該リソース要求を登録したファイルシステムドライバに転送してもよく、または、例えば当該要求を指定の位置にリダイレクトすることによって当該要求をデフォルトのやり方で処理してもよい。例として、システムが、受け取った要求に含まれるファイルパスを、仮想アプリケーションパッケージに関連付けられたファイルパスで置き換えてもよい。続いてブロック360で、拡張ポイント仮想化システムが、要求されたリソースへのアクセスを提供することによって、リダイレクトされたリソース要求に応答する。例えば、オペレーティングシステムが当該要求に応答して、識別されたファイルを開き、当該ファイルのデータを提供してもよい。アプリケーションは、アプリケーションがデータを通常格納する場所にデータがあたかも存在するかのように振舞い、仮想化システムが、データが実際に格納されている場所を指すように要求を修正する。リパースポイントが行ったリダイレクションのため、アプリケーション仮想化は、リソース要求がアプリケーションから来たか、別のプロセスから来たか、または他のソースから来たかに関わらず正しく動作する。ブロック360の後、これらのステップが完了する。幾つかの実施形態では、拡張ポイント仮想化システムがアプリケーションデータをパッケージファイルのフォーマットで格納する。パッケージファイルは、複数の他のファイルおよび複数の種類のデータを格納できる任意のファイルフォーマットであることができる。例えば、一般的な既存のパッケージファイルフォーマットには、ZIP、CAB、RAR、SFT、および他の同様なフォーマットがある。パッケージファイルはしばしば、複数のファイルを1つのアーカイブフォーマットに格納可能とすることに加えて、ファイルサイズを削減するための圧縮や他の機能例えば、暗号化を含む。仮想化アプリケーション向けのパッケージファイルには、レジストリハイブ、ファイル、データベース、および仮想アプリケーションが用いる他種のデータを含めてもよい。オペレーティングシステムが、ディレクトリ、ボリューム、ディスクドライブ、または他のリソースのようなパッケージファイルをマウントして、仮想アプリケーションが、ファイルおよび他のリソースを操作するための共通のオペレーティングシステムAPIを用いてパッケージファイル内に格納されたアイテムを参照できるようにしてもよい。幾つかの実施形態では、拡張ポイント仮想化システムが、仮想アプリケーションのデータを当該仮想アプリケーションの実行可能ファイルに含めてもよく、それにより、当該アプリケーションを、自己解凍式データを伴う単一の実行ファイルとして分散させることができる。本明細書では幾つかの例を説明したが、拡張ポイント仮想化システムはアプリケーションのデータを格納するどの特定の方法にも限定されず、説明したもの以外の記憶機構を使用して同様な結果を実現することができる。以上から、拡張ポイント仮想化システムの特定の実施形態を本明細書では例示の目的で説明したが、本発明の趣旨と範囲を逸脱しない様々な修正を加え得ることは理解されよう。したがって、本発明は添付の特許請求の範囲による以外は限定されない。