(57)【要約】アプリケーションによって行われるアプリケーションプログラミングインターフェース呼出しをインターセプトすることによって、アプリケーションの従属性が識別される。次いで、アプリケーションの従属性が存在するかどうかに関して、アプリケーションの実行時に判定が行われる。従属性が存在しない場合、その上でアプリケーションが実行しているクライアントデバイスは、従属性が存在し、許可されたアプリケーションのみに使用可能にされるように、構成される。従属性が存在し、アプリケーションが従属性と対話することを許可された場合、アプリケーションは実行することを許される。
2014501410.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実装された方法であって、
クライアントデバイスでアプリケーションを展開するための要求を受信するステップと、
前記アプリケーションを展開するために不可欠な１つまたは複数の従属性の各々が前記クライアントデバイスに存在するかどうかを判定するステップと、
前記アプリケーションを展開するために不可欠な前記１つまたは複数の従属性の各々が存在しないと判定したとき、前記従属性が存在するように前記クライアントデバイスを構成するステップと
のコンピュータ実装された動作を実行することを含むことを特徴とするコンピュータ実装された方法。
【請求項２】
前記アプリケーションを展開するために不可欠な前記１つまたは複数の従属性の各々が存在すると判定したとき、前記クライアントデバイスで前記アプリケーションを展開するステップをさらに含むことを特徴とする請求項１に記載のコンピュータ実装された方法。
【請求項３】
前記クライアントデバイスで前記アプリケーションを展開したとき、前記アプリケーションからの資源へのアクセスを要求するアプリケーションプログラミングインターフェース（ＡＰＩ）呼出しをインターセプトするステップと、
前記ＡＰＩ呼出しが転送されることになる先の前記資源のコピーを選択するステップと、
前記資源と関連するアクセス制御リスト（ＡＣＬ）を有する専用の場所を保護するステップと、
前記専用の場所で記憶された前記資源に前記ＡＰＩ呼出しを転送するステップと
をさらに含むことを特徴とする請求項２に記載のコンピュータ実装された方法。
【請求項４】
前記アプリケーションを展開するのに先立って、
監視局で前記アプリケーションをインストールするステップと、
前記アプリケーションの前記インストール中に前記監視局に行われる変更を監視して前記従属性を識別するステップと、
従属性解析データベース内で前記従属性を識別するデータを記憶するステップと
をさらに含むことを特徴とする請求項１に記載のコンピュータ実装された方法。
【請求項５】
前記仮想化されたアプリケーションを展開するのに先立って、
前記監視局で前記仮想化されたアプリケーションを実行するステップと、
前記仮想化されたアプリケーションの前記実行中に前記監視局に行われる変更を監視して前記従属性を識別するステップと、
前記従属性解析データベース内で前記従属性を識別するデータを記憶するステップと
をさらに含むことを特徴とする請求項４に記載のコンピュータ実装された方法。
【請求項６】
前記アプリケーションの前記実行中に前記監視局に行われる変更を監視するステップは、
実行中に前記アプリケーションによって行われるＡＰＩ呼出しをインターセプトするステップと、
前記ＡＰＩ呼出しに含まれるパラメータを検査して前記従属性を識別するステップと
を含むことを特徴とする請求項５に記載のコンピュータ実装された方法。
【請求項７】
前記１つまたは複数の従属性の各々が前記アプリケーションの前記インストールまたは展開中に追加または構成されるかどうかを判定するステップと、
前記１つまたは複数の従属性の各々が前記アプリケーションの前記インストールまたは展開中に追加または構成されると判定したとき、前記アプリケーションの前記インストールまたは展開中に追加または構成される前記１つまたは複数の従属性が前記アプリケーションの実行時に存在する必要があることになることを指示するデータを記憶するステップと
をさらに含むことを特徴とする請求項６に記載のコンピュータ実装された方法。
【請求項８】
前記１つまたは複数の従属性の各々が前記アプリケーションの前記インストールまたは展開中に追加または構成されるかどうかを判定するステップは、前記オペレーティングシステムによって提供されるレジストリを問い合わせるステップを含むことを特徴とする請求項７に記載のコンピュータ実装された方法。
【請求項９】
前記１つまたは複数の従属性の各々が前記アプリケーションの前記インストールまたは展開中に追加または構成されるかどうかを判定するステップは、従属性にＡＰＩ呼出しを突き合わせる内部マッピングテーブルを問い合わせるステップを含むことを特徴とする請求項７に記載のコンピュータ実装された方法。
【請求項１０】
コンピュータ可読記憶媒体であって、
コンピュータによって実行されるときに、前記コンピュータに
仮想化されたアプリケーションを展開するための要求を受信させ、
前記仮想化されたアプリケーションを展開するために必要とされる１つまたは複数の従属性の各々が存在するかどうかを判定させ、
前記１つまたは複数の従属性の各々が存在しないと判定したとき、その上で前記仮想化されたアプリケーションが実行しているクライアントデバイスを前記従属性が存在するように構成させる
コンピュータ実行可能命令がコンピュータ可読記憶媒体に記憶されることを特徴とするコンピュータ可読記憶媒体。
【請求項１１】
前記コンピュータによって実行されるときに、前記コンピュータに、前記仮想化されたアプリケーションを展開するために不可欠な前記１つまたは複数の従属性の各々が存在すると判定することに応答して前記クライアントデバイスで前記仮想化されたアプリケーションを展開させる、コンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令をさらに有することを特徴とする請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１２】
前記コンピュータによって実行されるときに、前記コンピュータに、
前記クライアントデバイス上で前記仮想化されたアプリケーションを展開したとき、資源へのアクセスを要求する前記仮想化されたアプリケーションからのアプリケーションプログラミングインターフェース（ＡＰＩ）呼出しをインターセプトさせ、
前記ＡＰＩ呼出しが転送されることになる先の前記資源のコピーを選択させ、
前記資源と関連するアクセス制御リスト（ＡＣＬ）を有する専用の場所を保護させ、
前記専用の場所で記憶された前記資源に前記ＡＰＩ呼出しを転送させる、
コンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令をさらに有することを特徴とする請求項１１に記載のコンピュータ可読記憶媒体。
【請求項１３】
前記コンピュータによって実行されるときに、前記コンピュータに、
監視局で前記仮想化されたアプリケーションをインストールさせ、
前記仮想化されたアプリケーションの前記インストール中に前記監視局に行われる変更を監視して前記従属性を識別させ、
前記クライアントデバイスに流されるために構成されるアプリケーションパッケージ内に前記従属性を識別するデータをパッケージ化させる、
コンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令をさらに有することを特徴とする請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１４】
前記コンピュータによって実行されるときに、前記コンピュータに、
前記監視局にインストールされた前記仮想化されたアプリケーションを実行させ、
前記仮想化されたアプリケーションの前記実行中に前記監視局に行われる変更を監視して前記従属性を識別させ、
前記クライアントデバイスに流されるために構成される前記アプリケーションパッケージ内に前記従属性を識別するデータをパッケージ化させる
コンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令をさらに有することを特徴とする請求項１３に記載のコンピュータ可読記憶媒体。
【請求項１５】
前記仮想化されたアプリケーションの前記実行中に前記監視局に行われる変更を監視して前記従属性を識別するステップは、
実行中に前記仮想化されたアプリケーションによって行われるＡＰＩ呼出しをインターセプトするステップと、
前記ＡＰＩ呼出し内に含まれるパラメータを検査して前記従属性を識別するステップと、
前記資源に関連するアクセス制御リスト（ＡＣＬ）を有する前記専用の場所を保護するステップと、
前記専用の場所で記憶された前記資源に前記ＡＰＩ呼出しを転送するステップと
を含むことを特徴とする請求項１４に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーション従属性を満たすことに関する。
【背景技術】
【０００２】
コンピュータアプリケーションプログラム（「アプリケーション」）は、通常は、アプリケーションを成功裏に展開および実行するために必要とされる一連の従属性を有する。これらの従属性は、データベース、アプリケーション、ハードウェア構成要素、ネットワーク接続、および同様のものなどの資源へのアクセスを含み得る。デバイスが企業の企業ネットワーク内で局所的に動作している間、これらの従属性の多数は、企業ネットワークに接続されているという理由で存在する。しかし、たとえば、デバイスが企業の敷地を出たときなど、デバイスがもはや企業ネットワークに接続されなくなった後は、デバイスは企業ネットワークにもはや接続することはできない。結果として、デバイスが企業ネットワークに接続されているという理由で存在したアプリケーションの従属性の多数は、もはや存在しない。したがって、アプリケーションは、従属性が復元されるまで、デバイス上で展開または実行することはできない。
【０００３】
アプリケーション従属性を復元するための１つの機構は、企業ネットワークと接続が確立されることを必要とする。たとえば、自宅から作業している企業ユーザは、従属性を再確立するために、仮想プライベートネットワーク（ＶＰＮ）を介して企業ネットワークに接続する必要があり得る。しかし、この方式で接続を使用することは、煩雑であることがあり、または、企業ネットワークをセキュリティ脅威にさらすことがある。
【０００４】
これらのおよび他の考慮すべき事項に関して、本明細書で行われる開示は提示される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第７２２５２６４号明細書
【特許文献２】米国特許第７２００６３２号明細書
【特許文献３】米国特許第７４５１４５１号明細書
【特許文献４】米国特許第７７９７３７２号明細書
【発明の概要】
【０００６】
仮想化されたアプリケーションの従属性を満たすための技術が、本明細書に記載される。本明細書で提示される概念および技術の実装を介して、アプリケーション従属性が、アプリケーション実行時に識別および復元され得る。結果として、クライアントデバイスは、デバイスと企業ネットワークの間のバックエンド接続を確立する必要なしに、アプリケーションを成功裏に展開および実行することができる。本明細書では、「従属性」という用語は、アプリケーションが実行のために必要とする任意の資源を示す。従属性は、構成設定、ハードウェア構成要素、ネットワーク接続、アクセス特権、または任意の他のタイプの資源を含み得るが、これらに限定されない。
【０００７】
本明細書で提供される一態様によれば、仮想化されたアプリケーションのすべての従属性が存在するようにクライアントデバイスを構成することによって、仮想化されたアプリケーションを実行することができるアプリケーション仮想化環境が提供される。本開示の範囲は、アプリケーション仮想化環境内の使用に限定されるものではないことを理解されたい。そうではなくて、本明細書で開示される実施形態は、仮想化されたまたは仮想化されない環境において実行する任意のタイプのアプリケーションの従属性を満たすために使用され得る。
【０００８】
もう１つの態様によれば、要求が、仮想化されたアプリケーションを展開するために受信されるとき、アプリケーション仮想化クライアント構成要素は、仮想化されたアプリケーションを展開するために不可欠な従属性が存在するかどうかを判定する。アプリケーション仮想化クライアント構成要素が、従属性が存在しないと判定した場合、アプリケーション仮想化クライアント構成要素は、従属性が存在するようにクライアントデバイスを構成する。アプリケーション仮想化クライアント構成要素が、従属性が存在すると判定した場合、アプリケーション仮想化クライアント構成要素は、実行のために仮想化されたアプリケーションを展開する。
【０００９】
もう１つの態様によれば、アプリケーション仮想化クライアント構成要素はまた、仮想化されないアプリケーションがある種の資源にアクセスすることができないように、仮想化されたアプリケーションと仮想化されないアプリケーションの間にセキュリティ境界を提供するように構成される。たとえば、一実施形態で、アプリケーション仮想化クライアント構成要素は、クライアントデバイスに使用可能な資源にアクセスするための要求など、資源にアクセスするための仮想化されたアプリケーションによって行われるアプリケーションプログラミングインターフェース（ＡＰＩ）呼出しをインターセプトする。アプリケーション仮想化クライアント構成要素は、次いで、資源が新しい場所でアクセス可能であるように、要求された資源の名前空間を修正する。いくつかの実施形態で、アプリケーション仮想化クライアント構成要素はまた、資源と関連するアクセス制御リスト（ＡＣＬ）を修正し、ＡＰＩ呼出しを新しい場所で記憶された資源に渡すことができる。資源にアクセスするための仮想化されないアプリケーションからの要求は、資源に新しい場所でアクセスすることはできない。
【００１０】
もう１つの態様によれば、アプリケーション従属性は、アプリケーションに静的解析を実行することによって、実行時より前に識別される。一実施例で、仮想化されたアプリケーションは、仮想化されたアプリケーションのすべての従属性が存在する環境を提供する監視局にインストールされる。監視局の従属性解析エンジンは、仮想化されたアプリケーションのインストールおよび実行中に監視局に行われる変更を監視して、従属性を識別する。仮想化されたアプリケーションを監視したとき、従属性解析エンジンは、従属性解析データベース内で従属性を識別するデータを記憶する。従属性解析データベースは、アプリケーションの実行時に使用されて、すべての必要な従属性が存在することを確保することができる。
【００１１】
本概要は、本特許請求の対象の重要な特徴または本質的特徴を識別するものではなく、本概要が本特許請求の対象の範囲を限定するために使用されることを意図しない。さらに、本特許請求の対象は、本開示のいずれかの部分で指摘されたいずれかのまたはすべての欠点を解決する実施例に限定されない。
【図面の簡単な説明】
【００１２】
【図１】本明細書で開示される実施形態の１つの例示的動作環境を示すソフトウェアおよびネットワークアーキテクチャ図である。
【図２】本明細書で提示される一実施形態による、仮想化されたアプリケーションの従属性を識別するための１つのプロセスを示す概略図である。
【図３】本明細書で提示される一実施形態による、学習モードの動作において仮想化されたアプリケーションの従属性を識別するための本明細書で開示される１つの例示的プロセスの態様を示すフロー図である。
【図４】本明細書で提示される一実施形態による、仮想化されたアプリケーションの従属性を満たすために本明細書で開示される１つの例示的プロセスの態様を示すフロー図である。
【図５】本明細書で提示される一実施形態による、セキュリティ境界を提供して、外部の仮想化されないアプリケーションが資源にアクセスすることを防ぐための１つのプロセスを示す概略図である。
【図６】本明細書で提示される一実施形態による、外部アプリケーションが資源と対話することを防ぐために一方向のセキュリティ境界を提供するための本明細書で開示される１つの例示的プロセスの態様を示すフロー図である。
【図７】本明細書で提示される様々な実施形態を実装することができる計算システムの例示的コンピュータハードウェアおよびソフトウェアアーキテクチャを示す、コンピュータアーキテクチャ図である。
【発明を実施するための形態】
【００１３】
以下の詳細な説明は、アプリケーションの従属性を満たすための技術を対象とする。前記で簡潔に論じられたように、本明細書で開示される方式で構成されたクライアントデバイスは、アプリケーション従属性を識別し、それらの従属性をアプリケーション実行時に使用可能にすることができる。この方式では、クライアントデバイスは、ＶＰＮに接続することなど、従属性を満たすための手動の動作を必要としない、アプリケーションの実行のために構成可能である。
【００１４】
本明細書に記載される対象は、コンピュータシステム上のオペレーティングシステムおよびアプリケーションプログラムの実行と連動して実行するプログラムモジュールの一般的な文脈において提示されるが、他の実施例が他のタイプのプログラムモジュールとの組合せで実行され得ることが、当業者には理解されよう。一般に、プログラムモジュールは、ルーチン、プログラム、構成要素、データ構造体、および、特定のタスクを実行するまたは特定の抽象データタイプを実装する他のタイプの構造体を含む。さらに、本明細書に記載される対象は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサに基づくもしくはプログラマブルな家庭用電化製品、ミニコンピュータ、メインフレームコンピュータ、および、同様のものを含む、他のコンピュータシステム構成で実施され得ることが、当業者には理解されよう。
【００１５】
以下の詳細な説明で、本明細書の一部を形成し、例として特定の実施形態または例が示される、添付の図面が参照される。ここで、図面を参照すると、同様の数字はいくつかの図を通して同様の要素を表し、アプリケーション従属性を満たすための計算システムおよび方法論の態様が説明される。
【００１６】
図１は、本明細書で開示される実施形態の１つの例示的動作環境１００を示すソフトウェアおよびネットワークアーキテクチャ図である。図１に示す例示的動作環境１００は、ネットワーク１０６を経由してサーバ１０４と通信するように構成されたクライアントデバイス１０２を含む。クライアントデバイス１０２は、オペレーティングシステム１０８Ａおよびアプリケーション仮想化クライアント構成要素１１０を実行するように構成された計算デバイスである。クライアントデバイス１０２は、標準デスクトップもしくはラップトップコンピュータ、タブレットコンピュータ、スマートフォン、または、仮想化されたアプリケーションの従属性を満たすための本明細書で提示される動作を実行する能力のある任意の他のタイプの計算デバイスでもよい。クライアントデバイス１０２はまた、本明細書で開示される機能性を提供するように構成されたサーバコンピュータでもよい。
【００１７】
サーバ１０４は、オペレーティングシステム１０８Ｂおよびアプリケーション仮想化サーバ構成要素１２０を実行するように構成された計算システムである。サーバ１０４は、アプリケーション仮想化サーバ構成要素１１０を実行するように構成された実際のサーバコンピュータでもよく、または、サーバ１０４によって実行されるものとして本明細書に記載された機能性を実行するように構成された別のタイプのコンピュータシステムを含み得ることを理解されたい。
【００１８】
図１に示すネットワーク１０６は、ワイドエリアネットワークまたはローカルエリアネットワークを含み得る。たとえば、ネットワーク１０６は、企業ローカルエリアネットワーク、インターネットなどのワイドエリアネットワーク、または、複数のワイドエリアネットワークおよびローカルエリアネットワークの組合せでもよい。単一のネットワーク１０６が図１に示されているが、多数の他のネットワークが使用され得ることを理解されたい。単一のクライアントデバイス１０２およびサーバ１０４が図１に示されているが、多数のそのようなデバイスが本明細書で開示される実施形態によって使用され得ることも理解されたい。
【００１９】
上記で簡潔に論じられたように、クライアントデバイス１０２は、アプリケーション仮想化クライアント構成要素１１０を実行するように構成される。アプリケーション仮想化クライアント構成要素１１０は、アプリケーション仮想化環境を提供するように構成されたソフトウェア構成要素である。この関連で、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２を展開および実行するように構成される。
【００２０】
アプリケーション仮想化クライアント構成要素１１０は、オペレーティングシステム１０８Ａからの仮想化されたアプリケーション１１２の実行をカプセル化するための機能性を提供する。アプリケーション仮想化クライアント構成要素１１０はまた、クライアントデバイス１０２の他のアプリケーションプログラムおよびシステム資源からの仮想化されたアプリケーション１１２の実行をカプセル化するための機能性も提供することができる。たとえば、アプリケーション仮想化クライアント構成要素１１０は、オペレーティングシステム１０８Ａまたはクライアントデバイス１０２の資源を仮想化することができる。仮想化されたアプリケーション１１２が物理資源にアクセスしようと試みるとき、アプリケーション仮想化クライアント構成要素１１０は、仮想化された資源をアプリケーション１１２に提示する。この方式で、仮想化されたアプリケーション１１２は、オペレーティングシステム１０８Ａまたはクライアントデバイス１０２によってさらされる実際の資源に影響を及ぼさない方式で実行することができる。
【００２１】
他の態様によれば、アプリケーション仮想化クライアント構成要素１１０はまた、要求に応じて仮想化されたアプリケーション１１２の部分をロードするための機能性を提供する。具体的には、アプリケーション仮想化クライアント構成要素１１０は、アプリケーション仮想化サーバ構成要素１２０と連動して動作してサーバ１０４からクライアントデバイス１０２に仮想化されたアプリケーション１１２の必要とされる部分を流すことができる。この方式では、仮想化されたアプリケーション１１２は、要求に応じてクライアントデバイス１０２でアクセス可能である。さらに、仮想化されたアプリケーション１１２の必要とされる部分のみがサーバ１０４からクライアントデバイス１０２に流され得るので、仮想化されたアプリケーション１１２へのアクセスは、サーバ１０４からクライアントデバイス１０２にアプリケーション１１２全体を流すことなしに、提供可能である。
【００２２】
仮想化されたアプリケーション１１２の実行をカプセル化するためのおよびサーバ１０４からクライアントデバイス１０２に仮想化されたアプリケーション１１２を流すためのアプリケーション仮想化クライアント構成要素１１０によって提供される機能に関するさらなる詳細は、それぞれが参照により本明細書に全体が組み込まれている、２００７年５月２９日に出願した米国特許第７２２５２６４号明細書「Ｓｙｓｔｅｍｓ  ａｎｄ  Ｍｅｔｈｏｄｓ  ｆｏｒ  Ｄｅｌｉｖｅｒｉｎｇ  Ｃｏｎｔｅｎｔ  ｏｖｅｒ  ａ  Ｃｏｍｐｕｔｅｒ  Ｎｅｔｗｏｒｋ」、２００７年４月３日に出願した米国特許第７２００６３２号明細書「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｓｅｒｖｉｎｇ  Ｓｏｆｔｗａｒｅ  Ａｐｐｌｉｃａｔｉｏｎｓ  ｔｏ  Ｃｌｉｅｎｔ  Ｃｏｍｐｕｔｅｒｓ」、２００８年１１月１１日に出願した米国特許第７４５１４５１号明細書「Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ  Ａｂｓｔｒａｃｔｉｏｎ  ａｎｄ  Ｐｒｏｔｅｃｔｉｏｎ  Ｌａｙｅｒ」、および、２０１０年９月１４日に出願した米国特許第７７９７３７２号明細書「Ｓｅｒｖｉｎｇ  Ｓｏｆｔｗａｒｅ  Ａｐｐｌｉｃａｔｉｏｎｓ  ｆｒｏｍ  Ｓｅｒｖｅｒｓ  ｆｏｒ  Ｃｌｉｅｎｔ  Ｃｏｍｐｕｔｅｒｓ」で見ることができる。
【００２３】
本明細書でさらに詳しく説明するように、アプリケーション仮想化クライアント構成要素１１０はまた、仮想化されたアプリケーション１１２の１つまたは複数の従属性１１４がアプリケーション１１２の実行時に満たされることを確保するように構成され得る。本明細書では、「従属性」という用語は、アプリケーション１１２が実行のために必要とする任意の資源を指す。従属性は、構成設定、ハードウェア構成要素、ネットワーク接続、アクセス特権、特定の場所での特定のファイルの存在、アンチウイルスソフトウェアのインストールなどのアプリケーション資源、モニタまたは他のデバイスなどのハードウェア構成要素、必要メモリ、処理機能などを含み得るがこれらに限定されない。
【００２４】
以下にさらに詳しく論じるように、従属性１１４は、アプリケーション１１２のインストール中に、アプリケーション１１２の実行時より前に、またはアプリケーション１１２の実行時に、識別することができる。たとえば、仮想化されたアプリケーション１１２を実行するための要求が受信されるとき、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２を展開するおよび／または実行するために不可欠な従属性１１４が存在するかどうかを判定する。アプリケーション仮想化クライアント構成要素１１０が、従属性１１４が存在しないと判定した場合、アプリケーション仮想化クライアント構成要素１１０は、従属性１１４のすべてが存在するように、クライアントデバイス１０２を構成する。従属性１１４のすべてが存在するまたは満たされた後は、仮想化されたアプリケーション１１２が展開可能である。本明細書では、「展開する」という用語は、アプリケーション１１２を実行のために使用可能にすることを意味する。従属性１１４のすべてが存在するようなクライアントデバイス１０２の構成に関するさらなる詳細は、図２〜図４に関して以下で提供される。
【００２５】
クライアントデバイス１０２はまた、オペレーティングシステム１０８Ａで実行され得る仮想化されない外部アプリケーション１１８を含み得ることを理解されたい。以下にさらに詳しく説明するように、アプリケーション仮想化クライアント構成要素１１０は、外部アプリケーション１１８が仮想化されたアプリケーション１１２によって使用される資源にアクセスすることができないことを確保するための一実施形態における機能性を提供する。たとえば、アプリケーション仮想化クライアント構成要素１１０は、資源が存在しない場所に資源にアクセスするための要求を転送することができる。この方法では、オペレーティングシステムは、要求された資源が存在しないまたは見つけることができないことを示す要求に応答することができる。このプロセスに関するさらなる詳細は、図５〜図６に関して以下で提供される。
【００２６】
前述のように、サーバ１０４は、仮想化されたアプリケーション１１２、アプリケーション仮想化サーバ構成要素１１０、およびオペレーティングシステム１０８Ｂを含み得る。加えて、サーバ１０４は、従属性解析エンジン１２２と、従属性１１４を識別する従属性データ１２６を記憶するための従属性解析データベース１２４とを含み得る。従属性データ１２６を含む従属性解析データベース１２４はまた、クライアントデバイス１０２のアプリケーション仮想化クライアント構成要素１１０に記憶するおよび／またはアクセス可能にすることができることを理解されたい。実施形態によれば、サーバ１０４は、仮想化されたアプリケーション１１２をインストールおよび実行するようにならびに仮想化されたアプリケーション１１２の従属性１１４を識別するように構成された、監視局として動作することができる。様々な実施形態によれば、従属性解析エンジン１２２は、仮想化されたアプリケーション１１２の従属性１１４を識別し、従属性解析データベース１２４内に従属性１１４を識別する従属性データ１２６を記憶することができる。ユーザインターフェース１３０もまた、データベース１２４の内容を見るおよび編集するために提供され得る。従属性１１４を識別するための本明細書で提供される様々なプロセスに関するさらなる詳細は、図２および図３に関して以下で提供される。
【００２７】
本明細書に記載の実施形態は、単に例示を目的とし、本明細書に記載される実施形態に本願の範囲を限定するものではないことを理解されたい。本明細書に記載の技術は、様々なタイプのアプリケーションとともに適用され得ること、および本明細書で開示される実施形態は、仮想化されたアプリケーション１１２の従属性を満たすことに限定されないことが、当業者には理解されよう。本明細書に記載の概念は、仮想化されたおよび仮想化されない環境で実行する仮想化されたおよび仮想化されないアプリケーションを含むがこれらに限定されない、任意のタイプのアプリケーションに適用され得ることもまた理解されたい。
【００２８】
図２は、本明細書で提示される一実施形態による、仮想化されたアプリケーション１１２が１つの環境において実行している間に、仮想化されたアプリケーション１１２の従属性を識別するための１つのプロセスを示す、概略図である。具体的には、図２は、従属性１１４を識別するために使用される動作の学習モードの態様を示す。学習モードの動作では、ＡＰＩ呼出しインターセプタ２０２が、資源にアクセスするためのアプリケーション１１２によって行われるＡＰＩ呼出しをインターセプトする。以下に論じるように、ＡＰＩ呼出しは、アプリケーション１１２の実行時中またはアプリケーション１１２がインストールされるときに行われ得る。
【００２９】
仮想化されたアプリケーション１１２が、クライアントデバイス１０２などのデバイスにインストールされるとき、アプリケーション１１２のインストーラは、デバイス１０２に変更を行うことができる。たとえば、仮想化されたアプリケーション１１２に関する様々なファイルが記憶可能であり、または、レジストリファイルが作成もしくは修正可能である。従属性解析エンジン１２２が、アプリケーション１１２のインストールを監視して、仮想化されたアプリケーション１１２のインストールの結果として行われる任意の構成変更を検出する。従属性解析エンジン１２２はまた、仮想化されたアプリケーション１１２がインストールされるのより前の従属性解析エンジン１２２が実行しているコンピュータの構成を仮想化されたアプリケーション１１２がインストールされた後の構成と比較することもできる。従属性解析エンジン１２２は、次いで、検出された変更を使用して従属性１１４を識別することができる。従属性１１４を識別する従属性データ１２６が、次いで、従属性解析データベース１２４内に記憶される。
【００３０】
学習モードの動作の一部として、従属性解析エンジン１２２はさらに、実行時中に仮想化されたアプリケーション１１２を監視することができる。仮想化されたアプリケーション１１２が実行しているとき、仮想化されたアプリケーション１１２は、ＡＰＩ呼出しを行って資源にアクセスすることができる。ＡＰＩ呼出しインターセプタ２０２は、仮想化されたアプリケーション１１２によって行われるＡＰＩ呼出しをフックし、呼出しを従属性解析エンジン１２２に渡し、そこで、ＡＰＩ呼出しは、仮想化されたアプリケーション１１２の追加の従属性１１４に関する情報を収集するために検査される。ＡＰＩ呼出しは、ファイル、データベースなどの特定の資源にアクセスするための要求を含み得る。加えて、ＡＰＩ呼出しは、特定のアプリケーションにアクセスするための要求を含み得る。
【００３１】
従属性解析エンジン１２２は、インターセプトされたＡＰＩ呼出しを検査して、仮想化されたアプリケーション１１２の実行時従属性１１４を識別する。従属性解析エンジン１２２は、従属性解析データベース１２４内に実行時従属性１１４を識別するデータを記憶することができる。加えて、データは、識別された従属性１１４がオペレーティングシステム１０８によって提供されるかどうかを指示するデータベース１２４内に記憶され得る。代替的実施形態で、実行時従属性１１４を識別するデータが、サーバ１０４からクライアントデバイス１０２に流され得る。そのような実施形態で、従属性を識別するデータは、クライアントデバイス１０２に流されるように構成され得るアプリケーションパッケージ内にパッケージ化され得る。以下にさらに詳しく説明するように、学習モードの動作中に生成されたデータは、アプリケーション１１２の実行時に使用されて、従属性１１４のすべてがアプリケーション１１２に使用可能であることを確保する。たとえば、データベース１２４内に記憶された従属性データ１２６は、アプリケーションの実行が、オペレーティングシステムによって提供されないいずれかの資源に従属するかを判定するために、使用され得る。そうである場合、資源は、アプリケーションに使用可能にされ得る。
【００３２】
すべての資源がアプリケーションに使用可能にされないことがあることを理解されたい。そのような状況で、アプリケーションは、それらの資源が使用可能にされ、アプリケーションの従属性のすべてが適切に満たされるまで、デバイス上で展開することはできないことがある。たとえば、企業は、企業のビル内からのみアクセス可能な文書を有し得る。企業ビルの外側のユーザが、それらの文書と対話するアプリケーションを走らせるとき、アプリケーション仮想化クライアント構成要素１１０は、アプリケーションが文書にアクセスすることを防ぐことができる。この場合、従属性は、ユーザが企業ビル内にいることを示す企業ＩＰアドレスの存在でもよい。ユーザが企業ビル内にいない場合、企業ＩＰアドレスの存在に対応する従属性は満たされないので、仮想化されたアプリケーション１１２は展開され得ない。
【００３３】
図３は、前述の学習モードで仮想化されたアプリケーション１１２の従属性１１４を識別するための本明細書で開示される１つの例示的プロセスの態様を示す、フロー図である。図３、図４、および図６に関して本明細書に記載される論理的動作は、（１）コンピュータ実装された行動もしくは計算システム上で走るプログラムモジュールのシーケンスとして、および／または、（２）計算システム内の相互接続された機械論理回路もしくは回路モジュールとして、実装されることを理解されたい。実装は、計算システムの性能および他の要件に依存する選択の問題である。したがって、本明細書に記載の論理的動作は、動作、構造的デバイス、行動、またはモジュールとして様々に称される。これらの動作、構造的デバイス、行動およびモジュールは、ソフトウェアに、ファームウェアに、特定目的デジタル論理に、およびそれらの組合せに実装することができる。図示されたおよび本明細書に記載されたものより多くのまたは少ない動作が実行され得ることもまた理解されたい。これらの動作はまた、本明細書に記載されるものとは異なる順序で実行することができる。
【００３４】
図３は、図２に示すおよび前述の動作の学習モードで実行される動作を説明するルーチン３００を示す。ルーチン３００は、仮想化されたアプリケーション１１２がサーバ１０４などの監視システムでインストールされる、動作３０２で開始する。サーバ１０４は、仮想化されたアプリケーション１１２の従属性１１４を識別するための前述の機能性を提供する従属性解析エンジン１２２を含む。サーバ１０４はまた、仮想化されたアプリケーション１１２の適切なインストールおよび実行のために不可欠なすべての従属性１１４を含み得る。この方式では、仮想化されたアプリケーション１１２は、学習モードでサーバ１０４上で動作することができる。サーバ１０４以外の別のコンピュータが、本明細書に記載の学習プロセスを実行するための監視局として使用され得ることを理解されたい。
【００３５】
一実施例によれば、サーバ１０４が学習モードで動作しているとき、従属性解析エンジン１２２は、仮想化されたアプリケーション１１２の従属性１１４を識別し、従属性１１４を識別する従属性データ１２６を従属性解析データベース１２４で記憶するサーバ１０４に行われる変更を監視するように構成される。従属性１１４は、アプリケーション１１２のインストールおよび構成を分析することによって識別される従属性、ならびに、実行時に仮想化されたアプリケーション１１２によって行われるＡＰＩ呼出しをインターセプトすることによって識別される従属性を含み得る。
【００３６】
動作３０２から、ルーチン３００は動作３０４に進み、そこで、従属性解析エンジン１２２が、仮想化されたアプリケーション１１２のインストール中に行われる変更について監視する。従属性解析エンジン１２２は、仮想化されたアプリケーション１１２のインストールより前のシステムの構成設定と仮想化されたアプリケーション１１２がインストールされた後のシステムの構成設定を比較することによって、変更を監視することができる。さらに、従属性解析エンジン１２２は、レジストリに行われた変更、または、仮想化されたアプリケーション１１２のインストールに関連する追加ファイルおよびフォルダの作成など、システムの様々な資源を監視して従属性１１４を識別することができる。
【００３７】
動作３０４から、ルーチン３００は動作３０６に進み、そこで、仮想化されたアプリケーション１１２が実行される。実行中、従属性解析エンジン１２２は、資源にアクセスするために仮想化されたアプリケーション１１２によって行われるＡＰＩ呼出し、ならびに、仮想化されたアプリケーション１１２の実行の結果として行われる任意の構成変更について、仮想化されたアプリケーション１１２を継続的に監視する。
【００３８】
動作３０６から、ルーチン３００は動作３０８に進み、そこで、ＡＰＩ呼出しインターセプタ２０２が、仮想化されたアプリケーション１１２によって行われるＡＰＩ呼出しをインターセプトする。ＡＰＩ呼出しインターセプタ２０２は、次いで、これらのＡＰＩ呼出しを従属性解析エンジン１２２に提供することができる。動作３０８から、ルーチン３００は、動作３１０に進み、そこで、従属性解析エンジン１２２は、インターセプトされたＡＰＩ呼出しのパラメータを検査して、仮想化されたアプリケーション１１２の従属性１１４を識別する。前述のように、ＡＰＩ呼出しは、ファイル、アプリケーション、または、スピーカもしくはディスプレイなどのハードウェア構成要素など、特定の資源にアクセスするための要求を含み得る。そのようなものとして、従属性解析エンジン１２２は、インターセプトされたＡＰＩ呼出しのフォーマットおよび内容を検査することによって、仮想化されたアプリケーション１１２の実行時従属性を判定する能力を有する。
【００３９】
動作３１０から、ルーチン３００は動作３１２に進み、そこで、従属性解析エンジン１２２が、従属性解析データベース１２４内で従属性１１４を識別する、仮想化されたアプリケーション１１２のインストールおよび実行中に収集された従属性データ１２６を記憶する。一実施例によれば、従属性解析データベース１２４は、サーバ１０４、または、ネットワーク１０６を介してクライアントデバイス１０２もしくはサーバ１０４によってアクセス可能な任意の他の場所に記憶され得る。
【００４０】
動作３１２から、ルーチン３００は動作３１４に進み、そこで、仮想化されたアプリケーション１１２の従属性１１４の各々が仮想化されたアプリケーション１１２のインストールまたは展開中に追加または構成されるかどうかに関して、決定が行われる。これは、たとえば、オペレーティングシステム提供のレジストリを調べることによって達成され得る。あるいは、これは、ＡＰＩ呼出しを従属性にマップするマッピングテーブルを調べることによって達成される。マッピングテーブルは、各従属性がオペレーティングシステムによって提供されるかどうかを示す情報を含み得る。
【００４１】
動作３１４から、従属性がアプリケーションのインストールまたは展開中に追加または構成された場合、ルーチン３００は、動作３１６に進む。動作３１６で、データは、仮想化されたアプリケーション１１２のインストールまたは展開中に追加または構成された従属性１１４が、クライアントデバイス１０２で仮想化されたアプリケーション１１２を無事に展開するために、実行時にクライアントデバイス１０２に存在する必要があることになることを示す従属性解析データベース１２４に記憶される。動作３１４で、従属性１１４が、仮想化されたアプリケーション１１２のインストールまたは展開中に追加または構成されないと判定された場合、ルーチン３００は動作３１８に進み、そこで、ルーチン３００は終了する。同様に、動作３１６から、ルーチン３００はまた、動作３１８に進み、そこでルーチン３００は終了する。
【００４２】
仮想化されたアプリケーション１１２の従属性１１４が識別され、従属性１１４を識別する従属性データ１２６が従属性解析データベース１２４に記憶された後は、仮想化されたアプリケーション１１２は、クライアントデバイス１０２で展開することができる。しかし、仮想化されたアプリケーション１１２をクライアントデバイス１０２上で展開することに先立って、仮想化されたアプリケーション１１２を展開するために必要とされる従属性１１４が、クライアントデバイス１０２によってアクセス可能である必要があり得る。一実施例で、従属性１１４を識別する従属性データ１２６は、クライアントデバイス１０２で記憶され、アプリケーション仮想化クライアント構成要素１１０によって使用されて、仮想化されたアプリケーション１１２の従属性１１４がクライアントデバイス１０２での仮想化されたアプリケーション１１２の展開の実行時に存在することを確保する。本プロセスに関するさらなる詳細が、図４に関して以下で提供される。
【００４３】
図４は、本明細書で提示される一実施形態による、クライアントデバイス１０２上の仮想化されたアプリケーション１１２の従属性を満たすための本明細書で開示される１つの例示的プロセスの態様を示す、フロー図である。具体的には、図４は、アプリケーション１１２の実行時に実行される動作を説明するルーチン４００を示す。具体的には、ルーチン４００は、動作４０２で開始し、そこで、アプリケーション仮想化クライアント構成要素１１０が、仮想化されたアプリケーション１１２をクライアントデバイス１０２上で展開するための要求を受信する。一実施例によれば、クライアントデバイス１０２のユーザは、仮想化されたアプリケーション１１２をクライアントデバイス１０２上で展開するための要求を提出することができる。
【００４４】
動作４０２から、ルーチン４００は動作４０４に進み、そこで、アプリケーション仮想化クライアント構成要素１１０が、従属性解析データベース１２４に問い合わせることによって、仮想化されたアプリケーション１１２の従属性１１４を判定する。アプリケーション仮想化クライアント構成要素１１０はまた、従属性解析データベース１２４に問い合わせて、識別された従属性が動作システム１０８によって提供されるかどうかを判定することができる。そうである場合、従属性は、アプリケーション仮想化クライアント構成要素１１０によって実行時に復元される必要はない。
【００４５】
動作４０４から、ルーチン４００は動作４０６に進み、そこで、アプリケーション仮想化クライアント構成要素１１０は、従属性１１４のすべてが存在するかを判定する。いくつかの実施例によれば、アプリケーション仮想化クライアント構成要素１１０は、学習モード中に従属性解析エンジン１２２によって判定される従属性１１４をクライアントデバイス１０２に存在する従属性と比較することによって、それを行うことができる。アプリケーション仮想化クライアント構成要素１１０が、従属性１１４のすべてが存在すると判定した場合、ルーチン４００は動作４１４に進み、そこで、アプリケーション仮想化クライアント構成要素１１０が、仮想化されたアプリケーション１１２をクライアントデバイス１０２上で展開する。
【００４６】
しかし、動作４０６で、アプリケーション仮想化クライアント構成要素１１０が、従属性１１４のすべてがクライアントデバイス１０２上に存在しないと判定した場合、ルーチン４００は、動作４０６から動作４０８に進み、そこで、アプリケーション仮想化クライアント構成要素１１０は、欠落した従属性を識別する。欠落した従属性は、存在しないまたは適切に構成されない資源であることがある。たとえば、従属性１１４のうちの１つが、クライアントデバイス１０２でファイアウォールを作動させることを含む場合、アプリケーション仮想化クライアント構成要素１１０は、クライアントデバイス１０２を検査して、ファイアウォールが作動されているかを確認することができる。ファイアウォールが作動されていない場合、次いで、アプリケーション仮想化クライアント構成要素１１０は、ファイアウォールを欠落した従属性として識別する。
【００４７】
動作４０８から、ルーチン４００は動作４１０に進み、そこで、アプリケーション仮想化クライアント構成要素１１０は、欠落した従属性が満たされるように、クライアントデバイス１０２を構成する。アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２がサーバ１０４でインストールおよび実行されるときにクライアントデバイス１０２の構成設定がサーバ１０４の構成設定と一致するような方法でクライアントデバイス１０２を構成することによって、それを行うことができる。前述の例を使用し、アプリケーション仮想化クライアント構成要素１１０は、クライアントデバイス１０２のファイアウォール設定を変更することによって、ファイアウォールを自動的に作動させることができる。いくつかの実施形態で、アプリケーション仮想化クライアント構成要素１１０はまた、資源を使用可能にすることができる。この方法で、アプリケーション仮想化クライアント構成要素１１０は、アプリケーションを展開および／または実行するために不可欠な従属性１１４が満たされるように、クライアントデバイス１０２を構成することができる。
【００４８】
動作４１０から、ルーチン４００は動作４１２に進み、そこで、アプリケーション仮想化クライアント構成要素１１０は、欠落した従属性１１４がもうないかを判定する。アプリケーション仮想化クライアント構成要素１１０が、欠落した従属性１１４がまだあると判定した場合、ルーチン４００は動作４０６に戻り、そこで、ルーチン４００は、別の欠落した従属性を識別する。しかし、アプリケーション仮想化クライアント構成要素１１０が、欠落した従属性１１４はもうないと判定した場合、ルーチン４００は動作４１４に進み、そこで、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２を展開する。動作４１４から、ルーチン４００は動作４１６に進み、そこで、ルーチン４００は終了する。アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２を展開するために必要とされるあらゆる従属性を満たすことができないことがあることを理解されたい。たとえば、前述の例で、アプリケーション仮想化クライアント構成要素１１０は、企業ビル内で動作するデバイスにのみ提供される企業ＩＰアドレスの存在などの従属性を満たすことができないことがある。
【００４９】
図５は、セキュリティ境界を提供して外部アプリケーションがアプリケーション１１２に使用可能な資源にアクセスすることを防ぐためのプロセスを示す、概略図である。いくつかの実施例によれば、外部アプリケーション１１８など、クライアントデバイス１０２上にインストールされた非企業アプリケーションが、仮想化されたアプリケーション１１２によって使用される資源へのアクセス権を得ようと試みることがある。これはセキュリティ脅威をもたらすことがあり、したがって、外部アプリケーション１１８が資源と対話することを防ぐための努力が行われ得る。一実施例で、クライアントデバイス１０２は、外部アプリケーション１１８が資源にアクセスすることを防ぐために、外部アプリケーションによって行われるＡＰＩ呼出しを転送するための機能性を提供する。いくつかの実施例で、この転送は、資源の名称を修正することによって生じ得る（本明細書では、「名前空間難号化（ｎａｍｅｓｐａｃｅ  ｍａｎｇｌｉｎｇ）」と称する場合がある）。図５は、この機能性を実行するために本明細書で提供される１つのプロセスを示す。
【００５０】
仮想化されたアプリケーション１１２が、外部の資源にアクセスまたはそれを修正するためにＡＰＩ呼出しを行うとき、経路指定レイヤ５０２は、ＡＰＩ呼出しをインターセプトし、２つの機能を実行する。第１に、経路指定レイヤ５０２は、元の資源５０４の名前を修正させ、それによって、改名された資源５０６を作成する。結果として、アプリケーション仮想化クライアント構成要素１１０の外で実行する外部アプリケーション１１８は、資源の予期される場所の中を見ることができない。この方法で、奇異なアプリケーションは、資源へのアクセス権を得ようとするのを阻まれる。しかし、判定された外部アプリケーション１１８は、まだ、元の資源５０４を開き、アクセスすることができる。任意の判定された外部アプリケーションが資源にアクセスすることを防ぐために、アプリケーション仮想化クライアント構成要素１１０はまた、外部アプリケーション１１８が資源５０４を開くまたはそれにアクセスすることができないように、元の資源５０４のアクセス制御リスト（ＡＣＬ）をカスタマイズされたＡＣＬに修正することもできる。図６は、このプロセスの追加の態様を説明する。
【００５１】
アプリケーション仮想化クライアント構成要素１１０は、資源の複数のコピーを有することができ、異なるプロセスを転送して、資源の異なるバージョンを見ることができることを理解されたい。たとえば、クライアントデバイス１０２は、「ｆｏｏ」の名前を付けられたレジストリ値の２つのコピーを有することができ、一方のコピーは０にセットされ、もう一方は１にセットされる。１つのプロセスが、レジストリ値にアクセスするとき、クライアントデバイス１０２は、０にセットされた資源のコピーにプロセスを透過的に転送する。他のプロセスが、それが同レジストリ値であると考えるものにアクセスするとき、クライアントデバイス１０２は、１にセットされた資源のコピーにこのプロセスを透過的に転送する。両方のプロセスは、同資源にアクセスしようと試みているが、クライアントデバイス１０２は、それらに気付かれることなしに、資源の異なる名前を付けられたインスタンスにそれらを転送している。この方法では、これらの２つのプロセスは異なる入力値を受信しているので、２つのプロセスは２つの別個の動作を実行し得る。結果として、クライアントデバイス１０２は、許可されたアプリケーションに正しい入力値を提供し、一方で、無許可のアプリケーションには誤った入力値を提供することができ、クライアントデバイス１０２にセキュリティを提供することができる。
【００５２】
もう１つの例では、２つのプロセスが同ファイルにアクセスしようと試みるとき、クライアントデバイス１０２は、それらのうちの１つをファイルの有効なコピーに転送することができ、他の１つにファイルが存在しなかったと知らせることができ、あるいは、ファイルが存在しない場所にそれを転送し、オペレーティングシステムが応答できるようにすることができる。結果として、無許可のプロセスは、ファイルへのアクセス権を提供され得ない。
【００５３】
図６は、セキュリティ境界を提供するために本明細書で開示される１つの例示的プロセスの態様を示すフロー図である。具体的には、図６は、図５を参照して前述された方式でセキュリティ境界を提供するための一実施形態で実行される動作を説明するルーチン６００を示す。
【００５４】
ルーチン６００は動作６０２で開始し、そこで、経路指定レイヤ５０２が、資源にアクセスするために仮想化されたアプリケーション１１２によって行われるＡＰＩ呼出しをインターセプトする。前述のように、経路指定レイヤ５０２は、仮想化されたアプリケーション１１２によって行われるＡＰＩ呼出しのみをインターセプトすることができる。動作６０２から、ルーチン６００は動作６０４に進み、そこで、経路指定レイヤ５０２は、仮想化されたアプリケーション１１２によって行われるＡＰＩ呼出しが転送されることになる先の資源のコピーを選択する。資源のコピーは、前に、オペレーティングシステムによって保存しておくことができる。動作６０４から、ルーチン６００は動作６０６に進み、そこで、オペレーティングシステム１０８Ａはさらに、資源がアプリケーション仮想化クライアント構成要素１１０の外側で動作する外部アプリケーションにアクセス可能でないように、資源と関連するＡＣＬを再構成する。動作６０６から、ルーチン６００は動作６０８に進み、そこで、インターセプトされたＡＰＩ呼出しが、改名された資源５０６に経路指定される。
【００５５】
動作６０８から、ルーチン６００は動作６１０に進み、そこで、オペレーティングシステム１０８Ａは、外部アプリケーション１１８から資源へのアクセスを要求するＡＰＩ呼出しを受信する。実施形態によれば、外部アプリケーション１１８はアプリケーション仮想化クライアント構成要素１１０を経由することなしにオペレーティングシステム１０８Ａと直接通信するので、オペレーティングシステム１０８Ａは、外部アプリケーション１１８からＡＰＩ呼出しを受信する。しかし、外部アプリケーションはアプリケーション仮想化クライアント構成要素１１０を介してＡＰＩ呼出しを送信することができることを理解されたい。そのような実施形態で、アプリケーション仮想化クライアント構成要素１１０は、転送のいずれも行わないが、代わりに、オペレーティングシステム１０８Ａが処理するために元のＡＰＩ呼出しをオペレーティングシステム１０８Ａに渡す。
【００５６】
動作６１０から、ルーチン６００は動作６１２に進み、そこで、オペレーティングシステム１０８Ａは、ＡＰＩ呼出しを外部アプリケーション１１８から元の資源５０４に経路指定する。この方法で、外部アプリケーション１１８などの非企業アプリケーションから行われるＡＰＩ呼出しは、資源５０６にアクセスすることはできない。動作６１２から、ルーチン６００は動作６１４に進み、そこで、ルーチン６００は終了する。
【００５７】
図７は、本明細書で提示される様々な実施形態を実装する能力のある計算システムの例示的コンピュータハードウェアおよびソフトウェアアーキテクチャを示すコンピュータアーキテクチャ図である。図７に示すコンピュータアーキテクチャは、従来のデスクトップ、ラップトップコンピュータ、またはサーバコンピュータを図示し、本明細書に記載の様々なソフトウェア構成要素を実行するために使用され得る。
【００５８】
図７に示すコンピュータアーキテクチャは、中央処理装置７０２（「ＣＰＵ」）と、ランダムアクセスメモリ７１４（「ＲＡＭ」）および読取り専用メモリ（「ＲＯＭ」）７１６を含むシステムメモリ７０８と、メモリをＣＰＵ７０２に連結させるシステムバス７０４とを含む。起動中など、コンピュータ７００内の要素の間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム（「ＢＩＯＳ」）は、ＲＯＭ７１６内で記憶される。コンピュータ７００は、以下でさらに詳しく説明される、オペレーティングシステム７１８、アプリケーションプログラム、および他のプログラムモジュールを格納するための大容量記憶デバイス７１０をさらに含む。
【００５９】
大容量記憶デバイス７１０は、バス７０４に接続された大容量記憶コントローラ（図示せず）を介してＣＰＵ７０２に接続される。大容量記憶デバイス７１０および関連コンピュータ可読記憶媒体は、コンピュータ７００のための非揮発性記憶装置を提供する。本明細書に含まれるコンピュータ可読媒体の説明は、ハードディスクまたはＣＤ−ＲＯＭドライブなどの大容量記憶デバイスを示すが、コンピュータ可読記憶媒体は、コンピュータ７００によってアクセスすることができる任意の使用可能なコンピュータ記憶媒体でもよいことが、当業者には理解されよう。
【００６０】
例として、そして限定ではなく、コンピュータ可読記憶媒体は、コンピュータ可読命令、データ構造体、プログラムモジュールまたは他のデータなどの情報の記憶のための任意の方法または技術で実装された、揮発性および非揮発性の、取外し可能なおよび取外し不可能な媒体を含み得る。たとえば、コンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他の固体状態メモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（「ＤＶＤ」）、ＨＤ−ＤＶＤ、ＢＬＵ−ＲＡＹ（登録商標）、もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置デバイス、または、所望の情報を記憶するために使用することができるおよびコンピュータ７００によってアクセスすることができる任意の他の非一時的媒体を含むが、これらに限定されない。
【００６１】
本明細書で開示されるコンピュータ可読媒体はまた、通信媒体を包含することを理解されたい。通信媒体は通常は、コンピュータ可読命令、データ構造体、プログラムモジュール、または、搬送波もしくは他の移送機構などの変調されたデータ信号内の他のデータを実施し、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、特性集合のうちの１つまたは複数を有する、または、信号内の情報を符号化することなどの形で変更した、信号を意味する。例として、そして限定ではなく、通信媒体は、ワイヤードネットワークまたは直接ワイヤード接続などのワイヤード媒体と、音波、ＲＦ、赤外線および他のワイヤレス媒体などのワイヤレス媒体とを含む。前述のいずれかの組合せもまた、コンピュータ可読媒体の範囲内に含まれよう。コンピュータ可読記憶媒体は、通信媒体を包含しない。
【００６２】
様々な実施形態によれば、コンピュータ７００は、ネットワーク７２０などのネットワークを介する遠隔コンピュータへの論理的接続を使用するネットワーク化された環境で動作することができる。コンピュータ７００は、バス７０４に接続されたネットワークインターフェースユニット７０６を介してネットワーク７２０に接続することができる。ネットワークインターフェースユニット７０６はまた、他のタイプのネットワークおよび遠隔コンピュータシステムに接続するためにも使用され得ることを理解されたい。コンピュータ７００はまた、キーボード、マウス、または電子スタイラス（図７に示さず）を含む複数の他のデバイスから入力を受信および処理するための入力／出力コントローラ７１２も含み得る。同様に、入力／出力コントローラは、表示画面、プリンタ、または他のタイプの出力デバイス（やはり図７に示さず）に出力を提供することができる。
【００６３】
簡潔に前述したように、複数のプログラムモジュールおよびデータファイルは、ネットワーク化されたデスクトップ、ラップトップ、またはサーバコンピュータの動作を制御するのに適したオペレーティングシステム７１８を含むコンピュータ７００の大容量記憶デバイス７１０およびＲＡＭ７１４内に記憶され得る。大容量記憶デバイス７１０およびＲＡＭ７１４はまた、１つまたは複数のプログラムモジュールも記憶することができる。具体的には、大容量記憶デバイス７１０およびＲＡＭ７１４は、仮想化されたアプリケーション１１２、アプリケーション仮想化クライアント構成要素１１０、および／または、前述の他のソフトウェア構成要素を記憶することができる。大容量記憶デバイス７１０およびＲＡＭ７１４はまた、従属性１１４など、他のプログラムモジュールおよびデータも記憶することができる。
【００６４】
概して、ソフトウェアアプリケーションまたはモジュールは、ＣＰＵ７０２にロードされ実行されるとき、ＣＰＵ７０２およびコンピュータ７００全体を汎用計算システムから本明細書で提示される機能性を実行するようにカスタマイズされた特定目的計算システムに変形することができる。ＣＰＵ７０２は、任意の数の状態を個別にまたは集合的に仮定することができる任意の数のトランジスタまたは他のディスクリート回路要素から構築され得る。より具体的には、ＣＰＵ７０２は、ソフトウェアまたはモジュール内に含まれる実行可能命令に応答して、１つまたは複数の有限状態機械として動作することができる。これらのコンピュータ実行可能命令は、ＣＰＵ７０２が状態間でどのように遷移するかを指定することによって、ＣＰＵ７０２を変形し、それによって、ＣＰＵ７０２を構成するトランジスタまたは他のディスクリートハードウェア要素を物理的に変形することができる。
【００６５】
大容量記憶デバイス上にソフトウェアまたはモジュールを符号化することはまた、大容量記憶デバイスまたは関連コンピュータ可読記憶媒体の物理構造を変形し得る。物理構造の具体的な変形は、本明細書の異なる実施例において、様々な要因に依存し得る。そのような要因の例は、コンピュータ可読記憶媒体が１次記憶装置または２次記憶装置などとして特徴付けられるかどうかにかかわらず、コンピュータ可読記憶媒体を実装するために使用される技術を含み得るが、これに限定されない。たとえば、コンピュータ可読記憶媒体が半導体ベースのメモリとして実装される場合、ソフトウェアまたはモジュールは、ソフトウェアが半導体メモリの中で符号化されるときに、半導体メモリの物理状態を変形することができる。たとえば、ソフトウェアは、トランジスタ、コンデンサ、または、半導体メモリを構成する他のディスクリート回路要素の状態を変形することができる。
【００６６】
もう１つの例として、コンピュータ可読記憶媒体は、磁気または光技術を使用して、実装することができる。そのような実装例で、ソフトウェアまたはモジュールは、ソフトウェアがそこで符号化されるときに、磁気または光媒体の物理状態を変形することができる。これらの変形は、所与の磁気媒体内の特定の場所の磁気特性を変更することを含み得る。これらの変形はまた、それらの場所の光特性を変更するために、所与の光媒体内の特定の場所の物理的特徴または特性を変更することを含み得る。物理媒体の他の変形は、本論を円滑に進めるためのみに提供される前述の例で、本明細書の範囲および趣旨を逸脱することなしに可能である。
【００６７】
前述に基づいて、アプリケーション従属性が実行時に満たされることを確保するための技術が本明細書で提示されていることを理解されたい。本明細書で提示される対象は、コンピュータ構造的特徴、方法論的行動、およびコンピュータ可読媒体に特有の言語で説明されているが、添付の特許請求の範囲で定義される本発明は、本明細書に記載の特定の特徴、行動、または媒体に必ずしも限定されないことが理解されよう。そうではなくて、これらの特定の特徴、行動および媒体は、本特許請求の範囲を実装する例示的形として開示される。
【００６８】
前述の対象は、例としてのみ提供され、限定として解釈されるべきではない。様々な修正および変更が、図示および記載される例示的実施形態および適用例に従うことなしに、そして、以下の特許請求の範囲に記載の本発明の真の趣旨および範囲を逸脱することなしに、本明細書に記載の対象に行われ得る。
【図１】
2014501410.tif 000003
【図２】
2014501410.tif 000004
【図３】
2014501410.tif 000005
【図４】
2014501410.tif 000006
【図５】
2014501410.tif 000007
【図６】
2014501410.tif 000008
【図７】
2014501410.tif 000009
【国際調査報告】
2014501410.tif 000010
2014501410.tif 000011