コンピュータ実装された方法であって、クライアントデバイスでアプリケーションを展開するための要求を受信するステップと、前記アプリケーションを展開するために不可欠な1つまたは複数の従属性の各々が前記クライアントデバイスに存在するかどうかを判定するステップと、前記アプリケーションを展開するために不可欠な前記1つまたは複数の従属性の各々が存在しないと判定したとき、前記従属性が存在するように前記クライアントデバイスを構成するステップとのコンピュータ実装された動作を実行することを含むことを特徴とするコンピュータ実装された方法。前記アプリケーションを展開するために不可欠な前記1つまたは複数の従属性の各々が存在すると判定したとき、前記クライアントデバイスで前記アプリケーションを展開するステップをさらに含むことを特徴とする請求項1に記載のコンピュータ実装された方法。前記クライアントデバイスで前記アプリケーションを展開したとき、前記アプリケーションからの資源へのアクセスを要求するアプリケーションプログラミングインターフェースAPI呼出しをインターセプトするステップと、前記API呼出しが転送されることになる先の前記資源のコピーを選択するステップと、前記資源と関連するアクセス制御リストACLを有する専用の場所を保護するステップと、前記専用の場所で記憶された前記資源に前記API呼出しを転送するステップとをさらに含むことを特徴とする請求項2に記載のコンピュータ実装された方法。前記アプリケーションを展開するのに先立って、監視局で前記アプリケーションをインストールするステップと、前記アプリケーションの前記インストール中に前記監視局に行われる変更を監視して前記従属性を識別するステップと、従属性解析データベース内で前記従属性を識別するデータを記憶するステップとをさらに含むことを特徴とする請求項1に記載のコンピュータ実装された方法。前記仮想化されたアプリケーションを展開するのに先立って、前記監視局で前記仮想化されたアプリケーションを実行するステップと、前記仮想化されたアプリケーションの前記実行中に前記監視局に行われる変更を監視して前記従属性を識別するステップと、前記従属性解析データベース内で前記従属性を識別するデータを記憶するステップとをさらに含むことを特徴とする請求項4に記載のコンピュータ実装された方法。前記アプリケーションの前記実行中に前記監視局に行われる変更を監視するステップは、実行中に前記アプリケーションによって行われるAPI呼出しをインターセプトするステップと、前記API呼出しに含まれるパラメータを検査して前記従属性を識別するステップとを含むことを特徴とする請求項5に記載のコンピュータ実装された方法。前記1つまたは複数の従属性の各々が前記アプリケーションの前記インストールまたは展開中に追加または構成されるかどうかを判定するステップと、前記1つまたは複数の従属性の各々が前記アプリケーションの前記インストールまたは展開中に追加または構成されると判定したとき、前記アプリケーションの前記インストールまたは展開中に追加または構成される前記1つまたは複数の従属性が前記アプリケーションの実行時に存在する必要があることになることを指示するデータを記憶するステップとをさらに含むことを特徴とする請求項6に記載のコンピュータ実装された方法。前記1つまたは複数の従属性の各々が前記アプリケーションの前記インストールまたは展開中に追加または構成されるかどうかを判定するステップは、前記オペレーティングシステムによって提供されるレジストリを問い合わせるステップを含むことを特徴とする請求項7に記載のコンピュータ実装された方法。前記1つまたは複数の従属性の各々が前記アプリケーションの前記インストールまたは展開中に追加または構成されるかどうかを判定するステップは、従属性にAPI呼出しを突き合わせる内部マッピングテーブルを問い合わせるステップを含むことを特徴とする請求項7に記載のコンピュータ実装された方法。コンピュータ可読記憶媒体であって、コンピュータによって実行されるときに、前記コンピュータに仮想化されたアプリケーションを展開するための要求を受信させ、前記仮想化されたアプリケーションを展開するために必要とされる1つまたは複数の従属性の各々が存在するかどうかを判定させ、前記1つまたは複数の従属性の各々が存在しないと判定したとき、その上で前記仮想化されたアプリケーションが実行しているクライアントデバイスを前記従属性が存在するように構成させるコンピュータ実行可能命令がコンピュータ可読記憶媒体に記憶されることを特徴とするコンピュータ可読記憶媒体。前記コンピュータによって実行されるときに、前記コンピュータに、前記仮想化されたアプリケーションを展開するために不可欠な前記1つまたは複数の従属性の各々が存在すると判定することに応答して前記クライアントデバイスで前記仮想化されたアプリケーションを展開させる、コンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令をさらに有することを特徴とする請求項10に記載のコンピュータ可読記憶媒体。前記コンピュータによって実行されるときに、前記コンピュータに、前記クライアントデバイス上で前記仮想化されたアプリケーションを展開したとき、資源へのアクセスを要求する前記仮想化されたアプリケーションからのアプリケーションプログラミングインターフェースAPI呼出しをインターセプトさせ、前記API呼出しが転送されることになる先の前記資源のコピーを選択させ、前記資源と関連するアクセス制御リストACLを有する専用の場所を保護させ、前記専用の場所で記憶された前記資源に前記API呼出しを転送させる、コンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令をさらに有することを特徴とする請求項11に記載のコンピュータ可読記憶媒体。前記コンピュータによって実行されるときに、前記コンピュータに、監視局で前記仮想化されたアプリケーションをインストールさせ、前記仮想化されたアプリケーションの前記インストール中に前記監視局に行われる変更を監視して前記従属性を識別させ、前記クライアントデバイスに流されるために構成されるアプリケーションパッケージ内に前記従属性を識別するデータをパッケージ化させる、コンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令をさらに有することを特徴とする請求項10に記載のコンピュータ可読記憶媒体。前記コンピュータによって実行されるときに、前記コンピュータに、前記監視局にインストールされた前記仮想化されたアプリケーションを実行させ、前記仮想化されたアプリケーションの前記実行中に前記監視局に行われる変更を監視して前記従属性を識別させ、前記クライアントデバイスに流されるために構成される前記アプリケーションパッケージ内に前記従属性を識別するデータをパッケージ化させるコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令をさらに有することを特徴とする請求項13に記載のコンピュータ可読記憶媒体。前記仮想化されたアプリケーションの前記実行中に前記監視局に行われる変更を監視して前記従属性を識別するステップは、実行中に前記仮想化されたアプリケーションによって行われるAPI呼出しをインターセプトするステップと、前記API呼出し内に含まれるパラメータを検査して前記従属性を識別するステップと、前記資源に関連するアクセス制御リストACLを有する前記専用の場所を保護するステップと、前記専用の場所で記憶された前記資源に前記API呼出しを転送するステップとを含むことを特徴とする請求項14に記載のコンピュータ可読記憶媒体。以下の詳細な説明は、アプリケーションの従属性を満たすための技術を対象とする。前記で簡潔に論じられたように、本明細書で開示される方式で構成されたクライアントデバイスは、アプリケーション従属性を識別し、それらの従属性をアプリケーション実行時に使用可能にすることができる。この方式では、クライアントデバイスは、VPNに接続することなど、従属性を満たすための手動の動作を必要としない、アプリケーションの実行のために構成可能である。本明細書に記載される対象は、コンピュータシステム上のオペレーティングシステムおよびアプリケーションプログラムの実行と連動して実行するプログラムモジュールの一般的な文脈において提示されるが、他の実施例が他のタイプのプログラムモジュールとの組合せで実行され得ることが、当業者には理解されよう。一般に、プログラムモジュールは、ルーチン、プログラム、構成要素、データ構造体、および、特定のタスクを実行するまたは特定の抽象データタイプを実装する他のタイプの構造体を含む。さらに、本明細書に記載される対象は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサに基づくもしくはプログラマブルな家庭用電化製品、ミニコンピュータ、メインフレームコンピュータ、および、同様のものを含む、他のコンピュータシステム構成で実施され得ることが、当業者には理解されよう。以下の詳細な説明で、本明細書の一部を形成し、例として特定の実施形態または例が示される、添付の図面が参照される。ここで、図面を参照すると、同様の数字はいくつかの図を通して同様の要素を表し、アプリケーション従属性を満たすための計算システムおよび方法論の態様が説明される。図1は、本明細書で開示される実施形態の1つの例示的動作環境100を示すソフトウェアおよびネットワークアーキテクチャ図である。図1に示す例示的動作環境100は、ネットワーク106を経由してサーバ104と通信するように構成されたクライアントデバイス102を含む。クライアントデバイス102は、オペレーティングシステム108Aおよびアプリケーション仮想化クライアント構成要素110を実行するように構成された計算デバイスである。クライアントデバイス102は、標準デスクトップもしくはラップトップコンピュータ、タブレットコンピュータ、スマートフォン、または、仮想化されたアプリケーションの従属性を満たすための本明細書で提示される動作を実行する能力のある任意の他のタイプの計算デバイスでもよい。クライアントデバイス102はまた、本明細書で開示される機能性を提供するように構成されたサーバコンピュータでもよい。サーバ104は、オペレーティングシステム108Bおよびアプリケーション仮想化サーバ構成要素120を実行するように構成された計算システムである。サーバ104は、アプリケーション仮想化サーバ構成要素110を実行するように構成された実際のサーバコンピュータでもよく、または、サーバ104によって実行されるものとして本明細書に記載された機能性を実行するように構成された別のタイプのコンピュータシステムを含み得ることを理解されたい。図1に示すネットワーク106は、ワイドエリアネットワークまたはローカルエリアネットワークを含み得る。たとえば、ネットワーク106は、企業ローカルエリアネットワーク、インターネットなどのワイドエリアネットワーク、または、複数のワイドエリアネットワークおよびローカルエリアネットワークの組合せでもよい。単一のネットワーク106が図1に示されているが、多数の他のネットワークが使用され得ることを理解されたい。単一のクライアントデバイス102およびサーバ104が図1に示されているが、多数のそのようなデバイスが本明細書で開示される実施形態によって使用され得ることも理解されたい。上記で簡潔に論じられたように、クライアントデバイス102は、アプリケーション仮想化クライアント構成要素110を実行するように構成される。アプリケーション仮想化クライアント構成要素110は、アプリケーション仮想化環境を提供するように構成されたソフトウェア構成要素である。この関連で、アプリケーション仮想化クライアント構成要素110は、仮想化されたアプリケーション112を展開および実行するように構成される。アプリケーション仮想化クライアント構成要素110は、オペレーティングシステム108Aからの仮想化されたアプリケーション112の実行をカプセル化するための機能性を提供する。アプリケーション仮想化クライアント構成要素110はまた、クライアントデバイス102の他のアプリケーションプログラムおよびシステム資源からの仮想化されたアプリケーション112の実行をカプセル化するための機能性も提供することができる。たとえば、アプリケーション仮想化クライアント構成要素110は、オペレーティングシステム108Aまたはクライアントデバイス102の資源を仮想化することができる。仮想化されたアプリケーション112が物理資源にアクセスしようと試みるとき、アプリケーション仮想化クライアント構成要素110は、仮想化された資源をアプリケーション112に提示する。この方式で、仮想化されたアプリケーション112は、オペレーティングシステム108Aまたはクライアントデバイス102によってさらされる実際の資源に影響を及ぼさない方式で実行することができる。他の態様によれば、アプリケーション仮想化クライアント構成要素110はまた、要求に応じて仮想化されたアプリケーション112の部分をロードするための機能性を提供する。具体的には、アプリケーション仮想化クライアント構成要素110は、アプリケーション仮想化サーバ構成要素120と連動して動作してサーバ104からクライアントデバイス102に仮想化されたアプリケーション112の必要とされる部分を流すことができる。この方式では、仮想化されたアプリケーション112は、要求に応じてクライアントデバイス102でアクセス可能である。さらに、仮想化されたアプリケーション112の必要とされる部分のみがサーバ104からクライアントデバイス102に流され得るので、仮想化されたアプリケーション112へのアクセスは、サーバ104からクライアントデバイス102にアプリケーション112全体を流すことなしに、提供可能である。仮想化されたアプリケーション112の実行をカプセル化するためのおよびサーバ104からクライアントデバイス102に仮想化されたアプリケーション112を流すためのアプリケーション仮想化クライアント構成要素110によって提供される機能に関するさらなる詳細は、それぞれが参照により本明細書に全体が組み込まれている、2007年5月29日に出願した米国特許第7225264号明細書SystemsandMethodsforDeliveringContentoveraComputerNetwork、2007年4月3日に出願した米国特許第7200632号明細書MethodandSystemforServingSoftwareApplicationstoClientComputers、2008年11月11日に出願した米国特許第7451451号明細書OperatingSystemAbstractionandProtectionLayer、および、2010年9月14日に出願した米国特許第7797372号明細書ServingSoftwareApplicationsfromServersforClientComputersで見ることができる。本明細書でさらに詳しく説明するように、アプリケーション仮想化クライアント構成要素110はまた、仮想化されたアプリケーション112の1つまたは複数の従属性114がアプリケーション112の実行時に満たされることを確保するように構成され得る。本明細書では、従属性という用語は、アプリケーション112が実行のために必要とする任意の資源を指す。従属性は、構成設定、ハードウェア構成要素、ネットワーク接続、アクセス特権、特定の場所での特定のファイルの存在、アンチウイルスソフトウェアのインストールなどのアプリケーション資源、モニタまたは他のデバイスなどのハードウェア構成要素、必要メモリ、処理機能などを含み得るがこれらに限定されない。以下にさらに詳しく論じるように、従属性114は、アプリケーション112のインストール中に、アプリケーション112の実行時より前に、またはアプリケーション112の実行時に、識別することができる。たとえば、仮想化されたアプリケーション112を実行するための要求が受信されるとき、アプリケーション仮想化クライアント構成要素110は、仮想化されたアプリケーション112を展開するおよび/または実行するために不可欠な従属性114が存在するかどうかを判定する。アプリケーション仮想化クライアント構成要素110が、従属性114が存在しないと判定した場合、アプリケーション仮想化クライアント構成要素110は、従属性114のすべてが存在するように、クライアントデバイス102を構成する。従属性114のすべてが存在するまたは満たされた後は、仮想化されたアプリケーション112が展開可能である。本明細書では、展開するという用語は、アプリケーション112を実行のために使用可能にすることを意味する。従属性114のすべてが存在するようなクライアントデバイス102の構成に関するさらなる詳細は、図2~図4に関して以下で提供される。クライアントデバイス102はまた、オペレーティングシステム108Aで実行され得る仮想化されない外部アプリケーション118を含み得ることを理解されたい。以下にさらに詳しく説明するように、アプリケーション仮想化クライアント構成要素110は、外部アプリケーション118が仮想化されたアプリケーション112によって使用される資源にアクセスすることができないことを確保するための一実施形態における機能性を提供する。たとえば、アプリケーション仮想化クライアント構成要素110は、資源が存在しない場所に資源にアクセスするための要求を転送することができる。この方法では、オペレーティングシステムは、要求された資源が存在しないまたは見つけることができないことを示す要求に応答することができる。このプロセスに関するさらなる詳細は、図5~図6に関して以下で提供される。前述のように、サーバ104は、仮想化されたアプリケーション112、アプリケーション仮想化サーバ構成要素110、およびオペレーティングシステム108Bを含み得る。加えて、サーバ104は、従属性解析エンジン122と、従属性114を識別する従属性データ126を記憶するための従属性解析データベース124とを含み得る。従属性データ126を含む従属性解析データベース124はまた、クライアントデバイス102のアプリケーション仮想化クライアント構成要素110に記憶するおよび/またはアクセス可能にすることができることを理解されたい。実施形態によれば、サーバ104は、仮想化されたアプリケーション112をインストールおよび実行するようにならびに仮想化されたアプリケーション112の従属性114を識別するように構成された、監視局として動作することができる。様々な実施形態によれば、従属性解析エンジン122は、仮想化されたアプリケーション112の従属性114を識別し、従属性解析データベース124内に従属性114を識別する従属性データ126を記憶することができる。ユーザインターフェース130もまた、データベース124の内容を見るおよび編集するために提供され得る。従属性114を識別するための本明細書で提供される様々なプロセスに関するさらなる詳細は、図2および図3に関して以下で提供される。本明細書に記載の実施形態は、単に例示を目的とし、本明細書に記載される実施形態に本願の範囲を限定するものではないことを理解されたい。本明細書に記載の技術は、様々なタイプのアプリケーションとともに適用され得ること、および本明細書で開示される実施形態は、仮想化されたアプリケーション112の従属性を満たすことに限定されないことが、当業者には理解されよう。本明細書に記載の概念は、仮想化されたおよび仮想化されない環境で実行する仮想化されたおよび仮想化されないアプリケーションを含むがこれらに限定されない、任意のタイプのアプリケーションに適用され得ることもまた理解されたい。図2は、本明細書で提示される一実施形態による、仮想化されたアプリケーション112が1つの環境において実行している間に、仮想化されたアプリケーション112の従属性を識別するための1つのプロセスを示す、概略図である。具体的には、図2は、従属性114を識別するために使用される動作の学習モードの態様を示す。学習モードの動作では、API呼出しインターセプタ202が、資源にアクセスするためのアプリケーション112によって行われるAPI呼出しをインターセプトする。以下に論じるように、API呼出しは、アプリケーション112の実行時中またはアプリケーション112がインストールされるときに行われ得る。仮想化されたアプリケーション112が、クライアントデバイス102などのデバイスにインストールされるとき、アプリケーション112のインストーラは、デバイス102に変更を行うことができる。たとえば、仮想化されたアプリケーション112に関する様々なファイルが記憶可能であり、または、レジストリファイルが作成もしくは修正可能である。従属性解析エンジン122が、アプリケーション112のインストールを監視して、仮想化されたアプリケーション112のインストールの結果として行われる任意の構成変更を検出する。従属性解析エンジン122はまた、仮想化されたアプリケーション112がインストールされるのより前の従属性解析エンジン122が実行しているコンピュータの構成を仮想化されたアプリケーション112がインストールされた後の構成と比較することもできる。従属性解析エンジン122は、次いで、検出された変更を使用して従属性114を識別することができる。従属性114を識別する従属性データ126が、次いで、従属性解析データベース124内に記憶される。学習モードの動作の一部として、従属性解析エンジン122はさらに、実行時中に仮想化されたアプリケーション112を監視することができる。仮想化されたアプリケーション112が実行しているとき、仮想化されたアプリケーション112は、API呼出しを行って資源にアクセスすることができる。API呼出しインターセプタ202は、仮想化されたアプリケーション112によって行われるAPI呼出しをフックし、呼出しを従属性解析エンジン122に渡し、そこで、API呼出しは、仮想化されたアプリケーション112の追加の従属性114に関する情報を収集するために検査される。API呼出しは、ファイル、データベースなどの特定の資源にアクセスするための要求を含み得る。加えて、API呼出しは、特定のアプリケーションにアクセスするための要求を含み得る。従属性解析エンジン122は、インターセプトされたAPI呼出しを検査して、仮想化されたアプリケーション112の実行時従属性114を識別する。従属性解析エンジン122は、従属性解析データベース124内に実行時従属性114を識別するデータを記憶することができる。加えて、データは、識別された従属性114がオペレーティングシステム108によって提供されるかどうかを指示するデータベース124内に記憶され得る。代替的実施形態で、実行時従属性114を識別するデータが、サーバ104からクライアントデバイス102に流され得る。そのような実施形態で、従属性を識別するデータは、クライアントデバイス102に流されるように構成され得るアプリケーションパッケージ内にパッケージ化され得る。以下にさらに詳しく説明するように、学習モードの動作中に生成されたデータは、アプリケーション112の実行時に使用されて、従属性114のすべてがアプリケーション112に使用可能であることを確保する。たとえば、データベース124内に記憶された従属性データ126は、アプリケーションの実行が、オペレーティングシステムによって提供されないいずれかの資源に従属するかを判定するために、使用され得る。そうである場合、資源は、アプリケーションに使用可能にされ得る。すべての資源がアプリケーションに使用可能にされないことがあることを理解されたい。そのような状況で、アプリケーションは、それらの資源が使用可能にされ、アプリケーションの従属性のすべてが適切に満たされるまで、デバイス上で展開することはできないことがある。たとえば、企業は、企業のビル内からのみアクセス可能な文書を有し得る。企業ビルの外側のユーザが、それらの文書と対話するアプリケーションを走らせるとき、アプリケーション仮想化クライアント構成要素110は、アプリケーションが文書にアクセスすることを防ぐことができる。この場合、従属性は、ユーザが企業ビル内にいることを示す企業IPアドレスの存在でもよい。ユーザが企業ビル内にいない場合、企業IPアドレスの存在に対応する従属性は満たされないので、仮想化されたアプリケーション112は展開され得ない。図3は、前述の学習モードで仮想化されたアプリケーション112の従属性114を識別するための本明細書で開示される1つの例示的プロセスの態様を示す、フロー図である。図3、図4、および図6に関して本明細書に記載される論理的動作は、1コンピュータ実装された行動もしくは計算システム上で走るプログラムモジュールのシーケンスとして、および/または、2計算システム内の相互接続された機械論理回路もしくは回路モジュールとして、実装されることを理解されたい。実装は、計算システムの性能および他の要件に依存する選択の問題である。したがって、本明細書に記載の論理的動作は、動作、構造的デバイス、行動、またはモジュールとして様々に称される。これらの動作、構造的デバイス、行動およびモジュールは、ソフトウェアに、ファームウェアに、特定目的デジタル論理に、およびそれらの組合せに実装することができる。図示されたおよび本明細書に記載されたものより多くのまたは少ない動作が実行され得ることもまた理解されたい。これらの動作はまた、本明細書に記載されるものとは異なる順序で実行することができる。図3は、図2に示すおよび前述の動作の学習モードで実行される動作を説明するルーチン300を示す。ルーチン300は、仮想化されたアプリケーション112がサーバ104などの監視システムでインストールされる、動作302で開始する。サーバ104は、仮想化されたアプリケーション112の従属性114を識別するための前述の機能性を提供する従属性解析エンジン122を含む。サーバ104はまた、仮想化されたアプリケーション112の適切なインストールおよび実行のために不可欠なすべての従属性114を含み得る。この方式では、仮想化されたアプリケーション112は、学習モードでサーバ104上で動作することができる。サーバ104以外の別のコンピュータが、本明細書に記載の学習プロセスを実行するための監視局として使用され得ることを理解されたい。一実施例によれば、サーバ104が学習モードで動作しているとき、従属性解析エンジン122は、仮想化されたアプリケーション112の従属性114を識別し、従属性114を識別する従属性データ126を従属性解析データベース124で記憶するサーバ104に行われる変更を監視するように構成される。従属性114は、アプリケーション112のインストールおよび構成を分析することによって識別される従属性、ならびに、実行時に仮想化されたアプリケーション112によって行われるAPI呼出しをインターセプトすることによって識別される従属性を含み得る。動作302から、ルーチン300は動作304に進み、そこで、従属性解析エンジン122が、仮想化されたアプリケーション112のインストール中に行われる変更について監視する。従属性解析エンジン122は、仮想化されたアプリケーション112のインストールより前のシステムの構成設定と仮想化されたアプリケーション112がインストールされた後のシステムの構成設定を比較することによって、変更を監視することができる。さらに、従属性解析エンジン122は、レジストリに行われた変更、または、仮想化されたアプリケーション112のインストールに関連する追加ファイルおよびフォルダの作成など、システムの様々な資源を監視して従属性114を識別することができる。動作304から、ルーチン300は動作306に進み、そこで、仮想化されたアプリケーション112が実行される。実行中、従属性解析エンジン122は、資源にアクセスするために仮想化されたアプリケーション112によって行われるAPI呼出し、ならびに、仮想化されたアプリケーション112の実行の結果として行われる任意の構成変更について、仮想化されたアプリケーション112を継続的に監視する。動作306から、ルーチン300は動作308に進み、そこで、API呼出しインターセプタ202が、仮想化されたアプリケーション112によって行われるAPI呼出しをインターセプトする。API呼出しインターセプタ202は、次いで、これらのAPI呼出しを従属性解析エンジン122に提供することができる。動作308から、ルーチン300は、動作310に進み、そこで、従属性解析エンジン122は、インターセプトされたAPI呼出しのパラメータを検査して、仮想化されたアプリケーション112の従属性114を識別する。前述のように、API呼出しは、ファイル、アプリケーション、または、スピーカもしくはディスプレイなどのハードウェア構成要素など、特定の資源にアクセスするための要求を含み得る。そのようなものとして、従属性解析エンジン122は、インターセプトされたAPI呼出しのフォーマットおよび内容を検査することによって、仮想化されたアプリケーション112の実行時従属性を判定する能力を有する。動作310から、ルーチン300は動作312に進み、そこで、従属性解析エンジン122が、従属性解析データベース124内で従属性114を識別する、仮想化されたアプリケーション112のインストールおよび実行中に収集された従属性データ126を記憶する。一実施例によれば、従属性解析データベース124は、サーバ104、または、ネットワーク106を介してクライアントデバイス102もしくはサーバ104によってアクセス可能な任意の他の場所に記憶され得る。動作312から、ルーチン300は動作314に進み、そこで、仮想化されたアプリケーション112の従属性114の各々が仮想化されたアプリケーション112のインストールまたは展開中に追加または構成されるかどうかに関して、決定が行われる。これは、たとえば、オペレーティングシステム提供のレジストリを調べることによって達成され得る。あるいは、これは、API呼出しを従属性にマップするマッピングテーブルを調べることによって達成される。マッピングテーブルは、各従属性がオペレーティングシステムによって提供されるかどうかを示す情報を含み得る。動作314から、従属性がアプリケーションのインストールまたは展開中に追加または構成された場合、ルーチン300は、動作316に進む。動作316で、データは、仮想化されたアプリケーション112のインストールまたは展開中に追加または構成された従属性114が、クライアントデバイス102で仮想化されたアプリケーション112を無事に展開するために、実行時にクライアントデバイス102に存在する必要があることになることを示す従属性解析データベース124に記憶される。動作314で、従属性114が、仮想化されたアプリケーション112のインストールまたは展開中に追加または構成されないと判定された場合、ルーチン300は動作318に進み、そこで、ルーチン300は終了する。同様に、動作316から、ルーチン300はまた、動作318に進み、そこでルーチン300は終了する。仮想化されたアプリケーション112の従属性114が識別され、従属性114を識別する従属性データ126が従属性解析データベース124に記憶された後は、仮想化されたアプリケーション112は、クライアントデバイス102で展開することができる。しかし、仮想化されたアプリケーション112をクライアントデバイス102上で展開することに先立って、仮想化されたアプリケーション112を展開するために必要とされる従属性114が、クライアントデバイス102によってアクセス可能である必要があり得る。一実施例で、従属性114を識別する従属性データ126は、クライアントデバイス102で記憶され、アプリケーション仮想化クライアント構成要素110によって使用されて、仮想化されたアプリケーション112の従属性114がクライアントデバイス102での仮想化されたアプリケーション112の展開の実行時に存在することを確保する。本プロセスに関するさらなる詳細が、図4に関して以下で提供される。図4は、本明細書で提示される一実施形態による、クライアントデバイス102上の仮想化されたアプリケーション112の従属性を満たすための本明細書で開示される1つの例示的プロセスの態様を示す、フロー図である。具体的には、図4は、アプリケーション112の実行時に実行される動作を説明するルーチン400を示す。具体的には、ルーチン400は、動作402で開始し、そこで、アプリケーション仮想化クライアント構成要素110が、仮想化されたアプリケーション112をクライアントデバイス102上で展開するための要求を受信する。一実施例によれば、クライアントデバイス102のユーザは、仮想化されたアプリケーション112をクライアントデバイス102上で展開するための要求を提出することができる。動作402から、ルーチン400は動作404に進み、そこで、アプリケーション仮想化クライアント構成要素110が、従属性解析データベース124に問い合わせることによって、仮想化されたアプリケーション112の従属性114を判定する。アプリケーション仮想化クライアント構成要素110はまた、従属性解析データベース124に問い合わせて、識別された従属性が動作システム108によって提供されるかどうかを判定することができる。そうである場合、従属性は、アプリケーション仮想化クライアント構成要素110によって実行時に復元される必要はない。動作404から、ルーチン400は動作406に進み、そこで、アプリケーション仮想化クライアント構成要素110は、従属性114のすべてが存在するかを判定する。いくつかの実施例によれば、アプリケーション仮想化クライアント構成要素110は、学習モード中に従属性解析エンジン122によって判定される従属性114をクライアントデバイス102に存在する従属性と比較することによって、それを行うことができる。アプリケーション仮想化クライアント構成要素110が、従属性114のすべてが存在すると判定した場合、ルーチン400は動作414に進み、そこで、アプリケーション仮想化クライアント構成要素110が、仮想化されたアプリケーション112をクライアントデバイス102上で展開する。しかし、動作406で、アプリケーション仮想化クライアント構成要素110が、従属性114のすべてがクライアントデバイス102上に存在しないと判定した場合、ルーチン400は、動作406から動作408に進み、そこで、アプリケーション仮想化クライアント構成要素110は、欠落した従属性を識別する。欠落した従属性は、存在しないまたは適切に構成されない資源であることがある。たとえば、従属性114のうちの1つが、クライアントデバイス102でファイアウォールを作動させることを含む場合、アプリケーション仮想化クライアント構成要素110は、クライアントデバイス102を検査して、ファイアウォールが作動されているかを確認することができる。ファイアウォールが作動されていない場合、次いで、アプリケーション仮想化クライアント構成要素110は、ファイアウォールを欠落した従属性として識別する。動作408から、ルーチン400は動作410に進み、そこで、アプリケーション仮想化クライアント構成要素110は、欠落した従属性が満たされるように、クライアントデバイス102を構成する。アプリケーション仮想化クライアント構成要素110は、仮想化されたアプリケーション112がサーバ104でインストールおよび実行されるときにクライアントデバイス102の構成設定がサーバ104の構成設定と一致するような方法でクライアントデバイス102を構成することによって、それを行うことができる。前述の例を使用し、アプリケーション仮想化クライアント構成要素110は、クライアントデバイス102のファイアウォール設定を変更することによって、ファイアウォールを自動的に作動させることができる。いくつかの実施形態で、アプリケーション仮想化クライアント構成要素110はまた、資源を使用可能にすることができる。この方法で、アプリケーション仮想化クライアント構成要素110は、アプリケーションを展開および/または実行するために不可欠な従属性114が満たされるように、クライアントデバイス102を構成することができる。動作410から、ルーチン400は動作412に進み、そこで、アプリケーション仮想化クライアント構成要素110は、欠落した従属性114がもうないかを判定する。アプリケーション仮想化クライアント構成要素110が、欠落した従属性114がまだあると判定した場合、ルーチン400は動作406に戻り、そこで、ルーチン400は、別の欠落した従属性を識別する。しかし、アプリケーション仮想化クライアント構成要素110が、欠落した従属性114はもうないと判定した場合、ルーチン400は動作414に進み、そこで、アプリケーション仮想化クライアント構成要素110は、仮想化されたアプリケーション112を展開する。動作414から、ルーチン400は動作416に進み、そこで、ルーチン400は終了する。アプリケーション仮想化クライアント構成要素110は、仮想化されたアプリケーション112を展開するために必要とされるあらゆる従属性を満たすことができないことがあることを理解されたい。たとえば、前述の例で、アプリケーション仮想化クライアント構成要素110は、企業ビル内で動作するデバイスにのみ提供される企業IPアドレスの存在などの従属性を満たすことができないことがある。図5は、セキュリティ境界を提供して外部アプリケーションがアプリケーション112に使用可能な資源にアクセスすることを防ぐためのプロセスを示す、概略図である。いくつかの実施例によれば、外部アプリケーション118など、クライアントデバイス102上にインストールされた非企業アプリケーションが、仮想化されたアプリケーション112によって使用される資源へのアクセス権を得ようと試みることがある。これはセキュリティ脅威をもたらすことがあり、したがって、外部アプリケーション118が資源と対話することを防ぐための努力が行われ得る。一実施例で、クライアントデバイス102は、外部アプリケーション118が資源にアクセスすることを防ぐために、外部アプリケーションによって行われるAPI呼出しを転送するための機能性を提供する。いくつかの実施例で、この転送は、資源の名称を修正することによって生じ得る本明細書では、名前空間難号化namespacemanglingと称する場合がある。図5は、この機能性を実行するために本明細書で提供される1つのプロセスを示す。仮想化されたアプリケーション112が、外部の資源にアクセスまたはそれを修正するためにAPI呼出しを行うとき、経路指定レイヤ502は、API呼出しをインターセプトし、2つの機能を実行する。第1に、経路指定レイヤ502は、元の資源504の名前を修正させ、それによって、改名された資源506を作成する。結果として、アプリケーション仮想化クライアント構成要素110の外で実行する外部アプリケーション118は、資源の予期される場所の中を見ることができない。この方法で、奇異なアプリケーションは、資源へのアクセス権を得ようとするのを阻まれる。しかし、判定された外部アプリケーション118は、まだ、元の資源504を開き、アクセスすることができる。任意の判定された外部アプリケーションが資源にアクセスすることを防ぐために、アプリケーション仮想化クライアント構成要素110はまた、外部アプリケーション118が資源504を開くまたはそれにアクセスすることができないように、元の資源504のアクセス制御リストACLをカスタマイズされたACLに修正することもできる。図6は、このプロセスの追加の態様を説明する。アプリケーション仮想化クライアント構成要素110は、資源の複数のコピーを有することができ、異なるプロセスを転送して、資源の異なるバージョンを見ることができることを理解されたい。たとえば、クライアントデバイス102は、fooの名前を付けられたレジストリ値の2つのコピーを有することができ、一方のコピーは0にセットされ、もう一方は1にセットされる。1つのプロセスが、レジストリ値にアクセスするとき、クライアントデバイス102は、0にセットされた資源のコピーにプロセスを透過的に転送する。他のプロセスが、それが同レジストリ値であると考えるものにアクセスするとき、クライアントデバイス102は、1にセットされた資源のコピーにこのプロセスを透過的に転送する。両方のプロセスは、同資源にアクセスしようと試みているが、クライアントデバイス102は、それらに気付かれることなしに、資源の異なる名前を付けられたインスタンスにそれらを転送している。この方法では、これらの2つのプロセスは異なる入力値を受信しているので、2つのプロセスは2つの別個の動作を実行し得る。結果として、クライアントデバイス102は、許可されたアプリケーションに正しい入力値を提供し、一方で、無許可のアプリケーションには誤った入力値を提供することができ、クライアントデバイス102にセキュリティを提供することができる。もう1つの例では、2つのプロセスが同ファイルにアクセスしようと試みるとき、クライアントデバイス102は、それらのうちの1つをファイルの有効なコピーに転送することができ、他の1つにファイルが存在しなかったと知らせることができ、あるいは、ファイルが存在しない場所にそれを転送し、オペレーティングシステムが応答できるようにすることができる。結果として、無許可のプロセスは、ファイルへのアクセス権を提供され得ない。図6は、セキュリティ境界を提供するために本明細書で開示される1つの例示的プロセスの態様を示すフロー図である。具体的には、図6は、図5を参照して前述された方式でセキュリティ境界を提供するための一実施形態で実行される動作を説明するルーチン600を示す。ルーチン600は動作602で開始し、そこで、経路指定レイヤ502が、資源にアクセスするために仮想化されたアプリケーション112によって行われるAPI呼出しをインターセプトする。前述のように、経路指定レイヤ502は、仮想化されたアプリケーション112によって行われるAPI呼出しのみをインターセプトすることができる。動作602から、ルーチン600は動作604に進み、そこで、経路指定レイヤ502は、仮想化されたアプリケーション112によって行われるAPI呼出しが転送されることになる先の資源のコピーを選択する。資源のコピーは、前に、オペレーティングシステムによって保存しておくことができる。動作604から、ルーチン600は動作606に進み、そこで、オペレーティングシステム108Aはさらに、資源がアプリケーション仮想化クライアント構成要素110の外側で動作する外部アプリケーションにアクセス可能でないように、資源と関連するACLを再構成する。動作606から、ルーチン600は動作608に進み、そこで、インターセプトされたAPI呼出しが、改名された資源506に経路指定される。動作608から、ルーチン600は動作610に進み、そこで、オペレーティングシステム108Aは、外部アプリケーション118から資源へのアクセスを要求するAPI呼出しを受信する。実施形態によれば、外部アプリケーション118はアプリケーション仮想化クライアント構成要素110を経由することなしにオペレーティングシステム108Aと直接通信するので、オペレーティングシステム108Aは、外部アプリケーション118からAPI呼出しを受信する。しかし、外部アプリケーションはアプリケーション仮想化クライアント構成要素110を介してAPI呼出しを送信することができることを理解されたい。そのような実施形態で、アプリケーション仮想化クライアント構成要素110は、転送のいずれも行わないが、代わりに、オペレーティングシステム108Aが処理するために元のAPI呼出しをオペレーティングシステム108Aに渡す。動作610から、ルーチン600は動作612に進み、そこで、オペレーティングシステム108Aは、API呼出しを外部アプリケーション118から元の資源504に経路指定する。この方法で、外部アプリケーション118などの非企業アプリケーションから行われるAPI呼出しは、資源506にアクセスすることはできない。動作612から、ルーチン600は動作614に進み、そこで、ルーチン600は終了する。図7は、本明細書で提示される様々な実施形態を実装する能力のある計算システムの例示的コンピュータハードウェアおよびソフトウェアアーキテクチャを示すコンピュータアーキテクチャ図である。図7に示すコンピュータアーキテクチャは、従来のデスクトップ、ラップトップコンピュータ、またはサーバコンピュータを図示し、本明細書に記載の様々なソフトウェア構成要素を実行するために使用され得る。図7に示すコンピュータアーキテクチャは、中央処理装置702CPUと、ランダムアクセスメモリ714RAMおよび読取り専用メモリROM716を含むシステムメモリ708と、メモリをCPU702に連結させるシステムバス704とを含む。起動中など、コンピュータ700内の要素の間で情報を転送するのを助ける基本ルーチンを含む基本入出力システムBIOSは、ROM716内で記憶される。コンピュータ700は、以下でさらに詳しく説明される、オペレーティングシステム718、アプリケーションプログラム、および他のプログラムモジュールを格納するための大容量記憶デバイス710をさらに含む。大容量記憶デバイス710は、バス704に接続された大容量記憶コントローラ図示せずを介してCPU702に接続される。大容量記憶デバイス710および関連コンピュータ可読記憶媒体は、コンピュータ700のための非揮発性記憶装置を提供する。本明細書に含まれるコンピュータ可読媒体の説明は、ハードディスクまたはCD-ROMドライブなどの大容量記憶デバイスを示すが、コンピュータ可読記憶媒体は、コンピュータ700によってアクセスすることができる任意の使用可能なコンピュータ記憶媒体でもよいことが、当業者には理解されよう。例として、そして限定ではなく、コンピュータ可読記憶媒体は、コンピュータ可読命令、データ構造体、プログラムモジュールまたは他のデータなどの情報の記憶のための任意の方法または技術で実装された、揮発性および非揮発性の、取外し可能なおよび取外し不可能な媒体を含み得る。たとえば、コンピュータ可読記憶媒体は、RAM、ROM、EPROM、EEPROM、フラッシュメモリもしくは他の固体状態メモリ技術、CD-ROM、デジタル多用途ディスクDVD、HD-DVD、BLU-RAY登録商標、もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置デバイス、または、所望の情報を記憶するために使用することができるおよびコンピュータ700によってアクセスすることができる任意の他の非一時的媒体を含むが、これらに限定されない。本明細書で開示されるコンピュータ可読媒体はまた、通信媒体を包含することを理解されたい。通信媒体は通常は、コンピュータ可読命令、データ構造体、プログラムモジュール、または、搬送波もしくは他の移送機構などの変調されたデータ信号内の他のデータを実施し、任意の情報配信媒体を含む。変調されたデータ信号という用語は、特性集合のうちの1つまたは複数を有する、または、信号内の情報を符号化することなどの形で変更した、信号を意味する。例として、そして限定ではなく、通信媒体は、ワイヤードネットワークまたは直接ワイヤード接続などのワイヤード媒体と、音波、RF、赤外線および他のワイヤレス媒体などのワイヤレス媒体とを含む。前述のいずれかの組合せもまた、コンピュータ可読媒体の範囲内に含まれよう。コンピュータ可読記憶媒体は、通信媒体を包含しない。様々な実施形態によれば、コンピュータ700は、ネットワーク720などのネットワークを介する遠隔コンピュータへの論理的接続を使用するネットワーク化された環境で動作することができる。コンピュータ700は、バス704に接続されたネットワークインターフェースユニット706を介してネットワーク720に接続することができる。ネットワークインターフェースユニット706はまた、他のタイプのネットワークおよび遠隔コンピュータシステムに接続するためにも使用され得ることを理解されたい。コンピュータ700はまた、キーボード、マウス、または電子スタイラス図7に示さずを含む複数の他のデバイスから入力を受信および処理するための入力/出力コントローラ712も含み得る。同様に、入力/出力コントローラは、表示画面、プリンタ、または他のタイプの出力デバイスやはり図7に示さずに出力を提供することができる。簡潔に前述したように、複数のプログラムモジュールおよびデータファイルは、ネットワーク化されたデスクトップ、ラップトップ、またはサーバコンピュータの動作を制御するのに適したオペレーティングシステム718を含むコンピュータ700の大容量記憶デバイス710およびRAM714内に記憶され得る。大容量記憶デバイス710およびRAM714はまた、1つまたは複数のプログラムモジュールも記憶することができる。具体的には、大容量記憶デバイス710およびRAM714は、仮想化されたアプリケーション112、アプリケーション仮想化クライアント構成要素110、および/または、前述の他のソフトウェア構成要素を記憶することができる。大容量記憶デバイス710およびRAM714はまた、従属性114など、他のプログラムモジュールおよびデータも記憶することができる。概して、ソフトウェアアプリケーションまたはモジュールは、CPU702にロードされ実行されるとき、CPU702およびコンピュータ700全体を汎用計算システムから本明細書で提示される機能性を実行するようにカスタマイズされた特定目的計算システムに変形することができる。CPU702は、任意の数の状態を個別にまたは集合的に仮定することができる任意の数のトランジスタまたは他のディスクリート回路要素から構築され得る。より具体的には、CPU702は、ソフトウェアまたはモジュール内に含まれる実行可能命令に応答して、1つまたは複数の有限状態機械として動作することができる。これらのコンピュータ実行可能命令は、CPU702が状態間でどのように遷移するかを指定することによって、CPU702を変形し、それによって、CPU702を構成するトランジスタまたは他のディスクリートハードウェア要素を物理的に変形することができる。大容量記憶デバイス上にソフトウェアまたはモジュールを符号化することはまた、大容量記憶デバイスまたは関連コンピュータ可読記憶媒体の物理構造を変形し得る。物理構造の具体的な変形は、本明細書の異なる実施例において、様々な要因に依存し得る。そのような要因の例は、コンピュータ可読記憶媒体が1次記憶装置または2次記憶装置などとして特徴付けられるかどうかにかかわらず、コンピュータ可読記憶媒体を実装するために使用される技術を含み得るが、これに限定されない。たとえば、コンピュータ可読記憶媒体が半導体ベースのメモリとして実装される場合、ソフトウェアまたはモジュールは、ソフトウェアが半導体メモリの中で符号化されるときに、半導体メモリの物理状態を変形することができる。たとえば、ソフトウェアは、トランジスタ、コンデンサ、または、半導体メモリを構成する他のディスクリート回路要素の状態を変形することができる。もう1つの例として、コンピュータ可読記憶媒体は、磁気または光技術を使用して、実装することができる。そのような実装例で、ソフトウェアまたはモジュールは、ソフトウェアがそこで符号化されるときに、磁気または光媒体の物理状態を変形することができる。これらの変形は、所与の磁気媒体内の特定の場所の磁気特性を変更することを含み得る。これらの変形はまた、それらの場所の光特性を変更するために、所与の光媒体内の特定の場所の物理的特徴または特性を変更することを含み得る。物理媒体の他の変形は、本論を円滑に進めるためのみに提供される前述の例で、本明細書の範囲および趣旨を逸脱することなしに可能である。前述に基づいて、アプリケーション従属性が実行時に満たされることを確保するための技術が本明細書で提示されていることを理解されたい。本明細書で提示される対象は、コンピュータ構造的特徴、方法論的行動、およびコンピュータ可読媒体に特有の言語で説明されているが、添付の特許請求の範囲で定義される本発明は、本明細書に記載の特定の特徴、行動、または媒体に必ずしも限定されないことが理解されよう。そうではなくて、これらの特定の特徴、行動および媒体は、本特許請求の範囲を実装する例示的形として開示される。前述の対象は、例としてのみ提供され、限定として解釈されるべきではない。様々な修正および変更が、図示および記載される例示的実施形態および適用例に従うことなしに、そして、以下の特許請求の範囲に記載の本発明の真の趣旨および範囲を逸脱することなしに、本明細書に記載の対象に行われ得る。