"仮想化のためのwebサーバーアプリケーションを準備するためのコンピューターにより実現される方法であって、仮想化すべきwebサーバーアプリケーションの監視を開始する指示を受取るステップであり、前記アプリケーションは特定のwebアプリケーションを指定するパラメーターを有するwebサーバーのネーティブの仮想化されていないプロセスを使用して呼び出される、前記ステップと、前記webアプリケーションのインストールを開始するステップと、前記webアプリケーションのインストールの間に前記webアプリケーションを呼び出すパラメーターを含む環境設定データを捕捉するステップと、前記webアプリケーションのインストールの監視を終了するステップと、前記webアプリケーションを後に配置する間に使用するために前記捕捉した環境設定データを格納するステップと、前記格納された環境設定データを含めて前記webアプリケーションを、配置するためのパッケージにするステップとを備え、上記のステップは少なくとも一つのプロセッサーにより実行される、ことを特徴とする方法。前記監視の開始の指示を受取るステップは、管理者がアプリケーション監視ツールを開始させたことを検出することを含むことを特徴とする請求項1に記載の方法。前記監視は、インストールの後に取られた終了スナップショットと比較するために前記webアプリケーションのインストールの前にテストサーバーの状態を格納する開始スナップショットを取り、インストールの間に前記webアプリケーションによって行われた環境設定の変更を検出することを含むことを特徴とする請求項1に記載の方法。前記インストールを開始するステップは、新しいプロセスの作成を検出し、コア仮想化システムをプロセスに入れることを含むことを特徴とする請求項1に記載の方法。前記環境設定データを捕捉するステップは、webアプリケーションに関連したアプリケーションプール名を検出することを含むことを特徴とする請求項1に記載の方法。前記環境設定データを捕捉するステップは、インストールの間にwebアプリケーションによって変更された1つ以上のファイル、レジストリ値、又はアプリケーション特有の環境設定を検出することを含むことを特徴とする請求項1に記載の方法。前記監視を終了するステップは、インストールの前に取られた開始スナップショットと比較するためにwebアプリケーションと関連したデータの終了スナップショットを取ることを含むことを特徴とする請求項1に記載の方法。前記捕捉した環境設定データを格納するステップは、XMLファイルを作成し、後に取り出すために環境設定データをXMLファイルに存続させることを含むことを特徴とする請求項1に記載の方法。前記webアプリケーションをパッケージ化するステップは、前記webアプリケーションに関連した1つ以上のファイル及び環境設定データを含むアーカイブファイルを作成することを含むことを特徴とする請求項1に記載の方法。サーバーアプリケーションを仮想化するコンピューターシステムであって、ソフトウエア命令を実行するように構成されたプロセッサー及びメモリーと、仮想化のために準備されつつあるアプリケーションを監視してアプリケーションに関連した環境設定データを検出するように構成された監視コンポーネントと、仮想化のために準備されつつあるアプリケーションに関連した環境設定データを格納するためのパッケージを生成するように構成されたパッケージ作成コンポーネントと、仮想化のために準備されつつあるアプリケーションの監視と、仮想化されたアプリケーションを1つ以上のターゲットコンピューターシステムへの配置との間にアプリケーションパッケージを格納するように構成されたアプリケーションパッケージストアと、ターゲットコンピューターシステムが仮想化されたアプリケーションを呼び出すことができるようにアプリケーションパッケージをターゲットコンピューターシステムに配置するように構成されたアプリケーション配置コンポーネント140と、仮想化されたアプリケーションに関連した環境設定データを検出し、ターゲットコンピューターシステム上で動作するように構成された他の仮想アプリケーション又は非仮想アプリケーションとの競合を回避するように環境設定データを変更するように構成されたコンフリクト管理コンポーネント150と、仮想化されたアプリケーションとターゲットコンピューターシステムのホストオペレーティングシステムとの間に一段の間接参照を提供するように構成されたアプリケーション実行環境160とを備えたことを特徴とするコンピューターシステム。前記監視コンポーネントは、アプリケーションプログラミングインターフェースAPIをフックして、変更が要求されたのに応じてアプリケーションによって環境設定に加えられた変更を検出するように更に構成されていることを特徴とする請求項10に記載のシステム。前記アプリケーション配置コンポーネントは、アプリケーションをwebアプリケーション管理コンポーネントに登録することを含む、ターゲットコンピューターシステム上でのアプリケーション特有の環境設定を実行するように更に構成されていることを特徴とする請求項10に記載のシステム。前記コンフリクト管理コンポーネントは、その中で実行するための名前付きアプリケーションプールを指定するwebサーバーアプリケーションのために名称の競合を検出し、他のアプリケーションと競合しないように名称を変更するように更に構成されていることを特徴とする請求項10に記載のシステム。前記競合管理コンポーネントは、コンポーネントのデフォルトの動作を上書きする情報を管理者から受け取り、特定のアプリケーションプール名を指定してwebアプリケーションのために名称の競合を避けるように更に構成されていることを特徴とする請求項10に記載のシステム。前記アプリケーション実行環境は、ターゲットコンピューターシステム上のワーカープロセス内でのアプリケーションの開始を検出することを特徴とする請求項10に記載のシステム。webアプリケーション等のサーバーアプリケーションを容易に配置できるようにし、アプリケーション及びその状態をシステムから分離できるようにし、アプリケーションが容易に他のサーバーに移動できるようにするアプリケーション仮想化システムが本明細書に記述されている。アプリケーション仮想化システムはwebサーバーアプリケーションプール名等の競合を隔離し、競合した情報を提供する複数のアプリケーションが独立に動作し、衝突を回避する方法を提供している。通常アプリケーションを仮想化することは、通常、メタデータ抽出、メタデータの格納及び再構成、及び実行時の要求の管理の3つのステップが関係している。メタデータ抽出はアプリケーションが何時仮想化の準備ができたかを知り、コンフィグレーション情報を抽出するためにアプリケーションを監視するプロセスである。環境設定情報はアプリケーションがそれ自身をオペレーティングシステム又は他のアプリケーションに結びつけるどの様な方法を含むことも可能である。アプリケーション仮想化システムは、アプリケーション準備セッションの報知を受けとり、アプリケーションがクライアント上で動作するために使用する環境設定情報を収集するためにセッションを監視する。例えば、システムはアプリケーションのインストール前後の環境設定情報のスナップショットを取得し、それらの差をアプリケーションメタデータとして格納するようにしても良い。アプリケーション仮想化システムは収集された情報を仮想化されるべきアプリケーションが配置されるまで格納する。管理者が後でアプリケーションを配置するとき、システムは格納された情報を取りだし、その情報とクライアントからの情報を使用してメタデータを再構成してアプリケーションを仮想化する。例えば、マイクロソフトIIS商標に対して、システムはIISがアプリケーションを割り当てるアプリケーションプール名を獲得し、アプリケーションプール名をアプリケーションについてのメタデータとして格納し、配置のときに使用し、場合によって変更するようにしても良い。後にwebアプリケーションを配置するときに、システムは格納されたメタデータを参照してwebアプリケーションを仮想環境に関係した正しいアプリケーションプール内に収める。このようにしてアプリケーション仮想化システムは同一の物理コンピューターハードウエア及びオペレーティングシステム上で複数のサーバーアプリケーションが仮想化されて並行して動作することを可能にしている。NTサービスNTservices、COMアプリケーション、WMIプロバイダ、シェアポイントSharePointアプリケーション、及びweb例えば、IISアプリケーション等のように多くの異なるタイプのサーバーアプリケーションが存在している。そのそれぞれが仮想化のために独自の取り組みを行っている。特にWebアプリケーションは明細書で述べたような幾つかの具体的な取り組みを行っている。第1の取り組みはwebサーバーが、webアプリケーションがいつ開始するかを制御し、webアプリケーションを動作させるために作成されたプロセスがネーティブ本来の環境で実行可能にインストールされることである。NTサービスに対しては、そのファイルパスに基いてサービスが仮想化されるべきか否かを容易に判断することができる。もしファイルパスが仮想パッケージA内に有れば、仮想化レイヤーはそのパッケージのための仮想環境内でNTサービスを開始することができる。もしパスが仮想パッケージB内に有れば、仮想化レイヤーはその仮想環境内にでNTサービスを開始することができる、等である。もしパスがどの仮想パッケージにも当て嵌まらない場合には、サービスは仮想化されない。マイクロソフトTMIISなどの典型的なwebサーバーについては、実行可能なパスは全てのwebサイト又はサーバーによってホストされるwebアプリケーションに対して同一であり、具体的にはIISのためのw3wpexe等のワーカープロセスへのパスである。しかしながらワーカープロセスへのパラメーターはアプリケーションプール名を含んでいる、等のように異なっていても良い。アプリケーション仮想化システムは仮想化すべきwebアプリケーションを検出し、どのようにかかるアプリケーションが仮想化されるかを変更するためにこの情報を使用するように仮想化レイヤーを変更する。例えば、システムはアプリケーションプール名が重複せず、アプリケーションプール名と仮想パッケージとの間のマップが維持されることを保証する。ワーカープロセスが作成されたとき、システムはマップ内のアプリケーションプール名を参照してワーカープロセスが仮想化されるべきであるか否かを決定する。他の取組みは、どの様にしてwebアプリケーションとは異なりそれに関連したアプリケーションプールを持たないwebサーバー仮想ディレクトリを仮想化するかということに関している。システムは仮想ディレクトリをwebアプリケーションに変換し、アプリケーションプールをwebアプリケーションに関連づけることでこの取組みを解決している。他の取組みはwebアプリケーションを配置するときにどのようにして環境設定の競合を防止するかということに関している。Web環境設定はIISと他のwebサーバーにおいて異なるレベルで適用することができる。環境設定は、サーバー、webサイト、webアプリケーション及び階層内でwebサイトから下の仮想ディレクトリに適用することができる。Webアプリケーションインストーラはwebサーバーをどのレベルで構成することも自由である。もしアプリケーション仮想化システムがこの環境設定をそのままで捕捉し、同一レベルに配置すると、システムは競合を生じ、ローカルにインストールされた仮想webアプリケーション又は他の仮想webアプリケーションを壊す可能性がある。この問題に対する解決策は我々が問題にしているwebアプリケーションの上で行われた環境設定の変更を捕捉し、それらを配置中のwebアプリケーションレベルに適用してシステム上の他のwebアプリケーションに影響を与えないようにすることである。これらの詳細及び他の詳細は本明細書で更に記述する。アプリケーション仮想化サブシステムの主な役割は監視、視覚化、登録、及び実行時仮想化である。これらの各々は明細書において別々に記述されている。監視は、コンピューターシステムに加えられた変更を検出するためにインストールプロセスをワッチすることに関している。幾つかの実施形態において、シーケンサーSequencerと呼ばれるアプリケーションがアプリケーション仮想化の監視段階を担当する。幾つかのサブシステムがインストールを監視するためにアプリケーションプログラミングインターフェースAPIsをフックし、他のサブシステムがインストール前後のコンピューターシステムの状態のスナップショットを比較して変化を検出するようにしても良い。前者の例は仮想サービスサブシステムがクリエートサービスAPICreateServiceAPIをフックして、いつインストーラによって新しいオペレーティングシステムサービスが追加されたかを検出することである。一方、前の例において記述されたIISサブシステムがインストール前後のIIS環境設定を比較することによって、それが使用する情報を収集することが可能である。例えば、マイクロソフトツールのMSDeployMSDeployはユーザーが特定のwebサーバーに結合したWhat-ifデプロイメントwhat-ifdeploymentsを動作させることを可能にしている。スナップショットを比較し、拡張可能なマークアップ言語ファイル例えば、sav_providers.xml等のマシーンから独立したメタデータ片を生成するために同一のツールをアプリケーション仮想化システムと共に使用することができる。監視の終了時にシステムはグローバルレベルで設定された全てのwebサーバー環境設定を削除し、環境設定を個々のwebアプリケーションに適用してデプロイメント配置中の競合の防止に寄与する。加えて、もし監視の間に最上レベルweb仮想ディレクトリが生成されていたならば、システムはそれらをアプリケーションプールに関連したwebアプリケーションに変換し、配置時にその仮想ディレクトリが仮想化されることを可能にしている。視覚化は、管理者にアプリケーションによって行われた変更の視覚的表示を仮想化するためのアプリケーションを準備することを示すことに関している。シーケンサーが監視中に検出した変化を一連のタブで表示する。アプリケーション仮想化システムは特定のアプリケーションタイプを仮想化するためのサブシステムを呼び出しても良く、各サブシステムが視覚化のためのそのサブシステムにとって適当なユーザーインターフェースを提供しても良い。これによってシーケンサーが視覚化段階の間に各サブシステムの明確な知識を有している必要が無くなる。サブシステムの視覚化インターフェースはアプリケーション仮想化システムの視覚化アプリケーションによってそれらのために作成されたウインドウ内にそれらの結果を表示することを担当する。登録は、仮想アプリケーションを動作させるターゲットコンピューターシステムを準備することに関している。仮想アプリケーションはクライアント上にはインストールされないけれども、幾つかの情報がシームレスなユーザーエクスペリエンスを提供例えば、アプリケーションがスタートメニュー内に現れるように、又はwebアプリケーションがwebサーバーメタベース内で利用できるようにするためにクライアントに公開される。アプリケーション仮想化システムは、監視の間にサブシステムによって収集された情報をクライアント上の適当な設定位置に公開する。例えば、仮想webアプリケーションはそれらのアプリケーション環境設定及びアプリケーションプール情報をwebサーバーに登録させる。加えて、登録プロセスの一部はアプリケーションプール名を特定の仮想アプリケーションに関係付けることに関している。webアプリケーションがクライアント上にインストールされたとき、クライアントは新しいwebサーバーワーカープロセスを生成する要求を傍受し、もしワーカープロセスのアプリケーションプール名が仮想アプリケーションのためのものと一致していれば、ワーカープロセスが適当な仮想環境内に作成される。登録に密接に関係したサブシステムの他の責任は環境設定である。登録は一度実行される。しかしながら、環境設定はシステムがそのコンポーネントを登録した後に何回も行われる可能性がある。登録の一例は、本明細書に記述されたwebサイト、アプリケーション、及びアプリケーションプールを生成することである。環境設定項目の一例はデータベース接続ストリングである。この値は、アプリケーションのためのバックエンドデータベースが移動したときにはアプリケーションが登録された後に変更することが必要となる可能性がある。適用可能なサブシステムは、例えばサブシステムの特定の知識の適用を必要とする例えば、特定のAPIを呼び出すことによって設定される必要が有る環境設定等のサブシステム特有の環境設定値を適用することを担当する。実行時仮想化は、仮想化されたアプリケーションの実行時に機能をフックし、アプリケーションがクライアント上にローカルにインストールされたかのようにそのリソースにアクセスすることが可能になるように機能の動作を変更することを指している。実行時仮想化はまた、或るシステムプロセス即ち、仮想アプリケーションのパッケージの一部ではないプロセスが仮想化されるべきであるか否かの判断を行うことを指している。例えば、IISサブシステムはコマンドライン上に渡されたアプリケーションプール名に基づいてIISワーカープロセス例えば、w3wpexeが仮想化されるべきであるか否かを決定する。図1は一実施形態におけるアプリケーション仮想化システムのコンポーネントを示すブロック図である。システム100は監視コンポーネント110、パッケージ作成コンポーネント120、アプリケーションパッケージストア130、アプリケーション配置コンポーネント140、コンフリクト管理コンポーネント150、及びアプリケーション実行環境160を含んでいる。これらのコンポーネントの各々については本明細書に更に詳細に説明されている。監視コンポーネント110は、仮想化のために準備されつつあるアプリケーションを監視してアプリケーションに関係した環境設定データを検出する。監視コンポーネント110は、サブシステムが現在のアプリケーションを操作することに興味があるか否かについて登録されたサブシステム全体を通して各サブシステムに質問することを繰り返すようにしても良い。コンポーネント110はアプリケーションプロセスに興味を示した1つ以上のサブシステムを呼び出し、サブシステムがアプリケーションによって行われたサブシステム特有の環境設定変化を監視することを可能にする。監視コンポーネント110はまたアプリケーションによって行われた環境設定の変更を検出するために監視の前後のアプリケーションのスナップショットを取得するスナップショットサービスを提供するようにしても良い。パッケージ作成コンポーネント120は、仮想化のために準備されつつあるアプリケーションに関係した環境設定データを格納するためのパッケージを作成する。パッケージは、圧縮、認証、暗号化、又はパッケージを小さくするか又はパッケージの作者のセキュリティ又は確実性を提供するなどの他の処理が含まれる種々のコンテナファイルフォーマットを含んでも良い。例えば、パッケージはZIP、CAB、又は多くのファイルと設定を単一のファイルに格納するのに適したアーカイブファイルフォーマットとすることができる。パッケージ作成コンポーネント120は新しいアプリケーションが仮想化のために準備されているときにパッケージを作成し、一般的な環境設定情報とカスタム仮想化サブシステムによって検出されるもの等のアプリケーション特有の環境設定情報を格納しても良い。アプリケーションパッケージストア130は、仮想化のために準備されつつあるアプリケーションの監視と仮想化されたアプリケーションの1つ以上の目標コンピューターシステムへの配置との間にアプリケーションパッケージを格納する。アプリケーションパッケージストア130はファイルシステム、ネットワークベースストレージ、クラウドベースストレージサービス、データベース等の種々の記憶媒体を含むことができる。アプリケーション配置コンポーネント140は、目標とするコンピューターシステムターゲットコンピューターシステムが仮想化されたアプリケーションを呼び出すことができるように、アプリケーションパッケージを目標とするコンピューターシステムに配置する。コンポーネント140が目標とするシステム上で、ファイルタイプ関連付けの追加、アプリケーションパッケージへのリンクの追加、オペレーティングシステムサービス環境設定の実行、及びwebサーバー環境設定情報の追加などのアプリケーション特有の環境設定を実行するようにしても良い。アプリケーション配置コンポーネント140がアプリケーションパッケージに関連したサブシステムを呼び出してサブシステム特有の登録タスクを実行し、仮想化されたアプリケーションが目標とするコンピューターシステム上で動作するための準備をするようにしても良い。コンフリクト管理コンポーネント150は、仮想化されたアプリケーションに関連した環境設定データを検出し、目標とするコンピューターシステム上で動作するように構成された他の仮想アプリケーションまたは非仮想アプリケーションとの競合を避けるように環境設定データを変更する。例えばコンポーネント150が、その中で実行する名前付きアプリケーションプールを指定しているwebサーバーアプリケーションについて、名前の競合を検出する。コンポーネント150はまた、競合に対処する動作を決定する管理者からの情報も受け取るようにしても良い。例えば、管理者は、webアプリケーションの名前に競合が生じた際に標準の動作を無効にしてwebアプリケーションに対して特定の名前を指定するようにしても良い。アプリケーション実行環境160は、仮想化されたアプリケーションと目標とするコンピューターシステムのホストオペレーティングシステムの間に1段の間接参照を提供する。ラッパーwrapperは非常に薄く、アプリケーションがホストオペレーティングシステム上で動作するように設計されているときのようにアプリケーションが殆どネーティブ状態で動作することが可能である。その代わりに、又はそれに加えて、ラッパーはAPIを提供し、他のオペレーティングシステム又はオペレーティングシステムの他のバージョンのために設計されたアプリケーションに予期されるような他の制約を満足するようにしてもよい。このようにしてアプリケーション実行環境160が仮想アプリケーションに、そのためにアプリケーションがホストオペレーティングシステムの利用可能なリソースを使用するように設計された環境を提供する。アプリケーション実行環境160はまた実行時にサブシステム特有の仮想化されたアプリケーションの操作を提供するための適当なサブシステム又は複数のサブシステムを呼び出す。アプリケーション仮想化システムが実装されるコンピューティング装置は、中央処理装置、メモリー、入力装置例えば、キーボード及びポインティング装置、出力装置例えば、表示装置、及び記憶装置例えばディスクドライブ又は他の不揮発性記憶媒体を含んでも良い。メモリー及び記憶装置はシステムを実現又は可能化するコンピュータにより実行可能な命令例えば、ソフトウエアでエンコードされていても良いコンピュータにより読取り可能な記録媒体である。更に、データ構造及びメッセージ構造は通信リンク上の信号等のデータ伝送媒体を介して格納又は伝送することができる。インターネット、ローカルエリアネットワーク、広域ネットワーク、ポイント間ダイヤルアップ接続、携帯電話ネットワーク等の種々の通信リンクが使用可能である。システムの実施形態はパーソナルコンピューター、サーバーコンピューター、ハンドヘルド又はラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースシステム、プログラム可能な個人用電化製品、デジタルカメラ、ネットワークPC,ミニコンピューター、メインフレームコンピューター、上記のシステム又は装置の何れかを含む分散コンピューティング環境、等を含む種々の動作環境で実現することが可能である。コンピューターシステムは携帯電話、パーソナルデジタルアシスタント、スマートフォン、パーソナルコンピューター、プログラム可能な個人用電化製品、デジタルカメラ、等であっても良い。システムはプログラムモジュール等の、一以上のコンピューター又は他の装置によって実行されるコンピューターにより実行可能な命令の一般的な文脈で記述することができる。通常プログラムモジュールは特定のタスクを実行するか特定の抽象的なデータタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含む。通常、プログラムモジュールの機能は種々の実施形態において必要に応じて組み合わされるか又は分散されていても良い。図2は一実施形態におけるアプリケーション仮想化システムの仮想化のためのサーバーアプリケーションを準備する処理を示すフロー図である。処理はブロック210において開始し、システムは仮想化されるべきサーバーアプリケーションの監視を開始する指示を受け取る。例えば、管理者はwebアプリケーションをテストサーバーにインストールする前に本明細書に記述されたシーケンサーを開始するようにしても良い。システムはインストール中にサーバーアプリケーションによって行われた環境設定の変化を検出するためにインストール後に取られた終了スナップショットと比較するためのサーバーアプリケーションのインストールの前のテストサーバーの状態を格納するための開始スナップショットを取るようにしても良い。続くブロック220において、システムがサーバーアプリケーションのインストールを開始する。管理者がセットアッププログラムを動作させ、システムが新しいプロセスの作成を検出し、コア仮想化システムをプロセスに注入するようにしても良い。例えば、もし管理者が監視を作動させ、サーバーアプリケーションを開始すると、次にシステムがサーバーアプリケーションに関連したワーカープロセスの開始を検出し、コア仮想化エンジンをスタートさせ、コア仮想化システムをワークプロセスに注入し、それによって例えばシステムがプロセスのAPIコール及び他の動作を監視できるようにしても良い。続くブロック230において、システムがサーバーアプリケーションのインストールの間の環境設定データを捕捉する。例えば、サーバーアプリケーションはweb又は他のアプリケーションに関連したアプリケーション名を提供し、その名称及び他の情報でwebサーバーメタベースを構成する、等を行っても良い。サブシステムがプロセスによって変更されたファイル及びレジストリーキー、及びマイクロソフトアクティブディレクトリーACTIVEDIRECTORY又はIISメタベースの変更、等の他の環境設定の変更を検出するようにしても良い。続くブロック240において、システムはサーバーアプリケーションのインストールの監視を終了する。例えば、管理者が本明細書に記述されたシーケンサーにインストールが終了したことを報知するか、又はシステムが自動的にインストールが終了したことを検出するようにしても良い。システムはサーバーアプリケーション及び関連したデータの終了スナップショットを取って、前に取った開始スナップショットと比較するようにしても良い。続くブロック250において、システムは続いて行われるサーバーアプリケーションの配置の間に使用するために捕捉した環境設定データを格納する。例えば、システムがXMLファイル又は他のデータストアを作成し、後で取り出すために環境設定データをデータストアで維持するようにしても良い。続くブロック260において、システムはサーバーアプリケーションを配置するために、格納された環境設定データを含めてパッケージにする。例えば、システムはアプリケーションのアーカイブファイル又は管理者がXCOPY又は他のファイル複写ツール等のツールを用いて容易に他のサーバーに配置できる他のコンパクトな表現を作成しても良い。ブロック260の後にこれらのステップは終了する。図3は一実施形態におけるアプリケーション仮想化システムのサーバーアプリケーションを配置し仮想化する処理を示すフロー図である。処理はブロック310において開始し、システムはサーバーアプリケーションを目標とするコンピューターに配置するための環境設定データを含むアプリケーションパッケージを受け取る。例えば、アプリケーションパッケージは本明細書に記述されたようなアプリケーションの監視の間に検出された環境設定データのXML又は他のデータストアを含むファイルのディレクトリ又はアーカイブファイルを含んでいても良い。続くブロック320において、システムは受け取ったアプリケーションパッケージ内の、目標とするコンピューター上で動作する他のアプリケーションと競合する可能性のある環境設定データを検出する。例えば、もしサーバーアプリケーションがwebアプリケーションであれば、システムが環境設定データによって指定されたアプリケーションプール名が目標とするコンピューター上の他のwebアプリケーションと競合するか又は競合する可能性があるか否かを検出するようにしても良い。続くブロック330において、システムはサーバーアプリケーションが目標とするコンピューター上で目標とするコンピューター上の他のアプリケーションとの競合せずに動作することを可能にするアプリケーションインストールパラメーターを設定する。例えば、システムが前のステップにおいて競合する名称を検出した場合、システムは競合を避けるために修正した名称を有するインストールパラメーターを設定しても良い。幾つかの実施形態において、システムは同一の名称を有する他のアプリケーションプールとの競合を避けためにアプリケーションプール名にグローバル一意識別子GUIDを付加する。システムはまた、管理者又は他のソースからアプリケーションの環境設定のために使用する代替インストールパラメーターを指定する指定変更情報を受け取るようにしても良い。続くブロック340において、システムは設定されたアプリケーションインストールパラメーターでサーバーアプリケーションを動作させるために目標とするコンピューターシステムを環境設定する。例えば、システムはアプリケーションを環境設定するために環境設定データを環境設定データベース、1つ以上のファイル、webサーバーメタベース等に書き込んでも良い。アプリケーションを環境設定することはアプリケーションが目標とするコンピューター上で動作するように準備することである。例えば、webアプリケーションについては、環境設定はwebアプリケーションのための仮想ディレクトリ、ポート、及びファイル位置をwebサーバーアプリケーションマネージャー例えば、IISマネージャーに提供することを含んでも良い。続くブロック350において、システムは環境設定されたサーバーアプリケーションを開始するための要求を指示するアプリケーション実行指示を受け取る。例えば、その指示はネットワーク例えば、サーバーによってホストされるwebページへのアクセスによる又は他のソースを介して受け取った要求から到来するものであっても良い。幾つかの実施形態において、システムはサーバーアプリケーションを開始するコールを傍受するためにサーバーアプリケーション管理コンポーネントにコンポーネントを注入する。例えば、webサーバーはサーバー上でホストされる各webサイトを操作するためのワーカープロセスを開始する管理アプリケーションを含んでいることが多い。システムはシステムによって管理された仮想環境が管理アプリケーションの本来の動作の代わりになるようにワーカープロセスを呼び出すコールを傍受するようにしても良い。続くブロック360において、システムは受け取ったアプリケーション実行指示に関連したアプリケーションパッケージをロードし、仮想環境中でアプリケーションを実行する。システムがアプリケーション仮想化システムに関連したモジュール又は他の実行可能なコードをロードして、そのためにアプリケーションが設計された環境を模した仮想環境をアプリケーションに提供するためにコールのリダイレクト、APIフック、及び他の仮想化の動作を可能にするようにしても良い。システムはまたファイルアクセス要求、レジストリアクセス要求、webサーバー特有の要求、等のアプリケーションが作成する可能性のある種々のタイプの要求を処理する1つ以上の仮想化サブシステムを呼び出すようにしても良い。アプリケーションが実行されるにつれて、仮想化サブシステムによって配置されたフックや他の間接指定処理によって、仮想化によって提供された独立性を容認するリダイレクト又は他の処理を必要とするアプリケーションの要求をシステムが処理することが可能になる。ブロック360の後に、これらのステップは終了する。図4は一実施形態におけるアプリケーション仮想化システムの動作環境及び実装コンポーネントを示すブロック図である。幾つかの実施形態において、アプリケーション仮想化システムはアプリケーションを仮想するためにオペレーティングシステムドライバー430及び幾つかのユーザーモードコンポーネントを使用する。仮想化ドライバー430例えば、sftplay.sysがatオペレーティングシステムのカーネルレベルで仮想環境を管理する。ドライバーのプロセスマネージャーコンポーネントが仮想環境マッピングへのプロセスIDを維持している。プロセスが作成されるにつれて、プロセスマネージャーコンポーネントが親プロセスの仮想環境に自動的に子プロセスを追加する。プロセスマネージャーコンポーネントはまた、仮想プロセスの作成と終了及び仮想環境内で動作するプロセスが無くなった時点についてユーザーモード仮想化ライブラリー420に報知する。ドライバー430の役割の1つはレジストリとファイルシステムの仮想化を実行することである。レジストリ及びファイルマッピング情報は仮想環境が仮想化ライブラリー420を使用して最初に作成されたときにドライバー430にアップロードされる。ドライバー430はこの情報をレジストリ及びファイルシステムAPIの動作を仮想アプリケーション440にとってはアプリケーションが目標とするコンピューターシステムにローカルにインストールされたかのように見えるように変更するのに使用する。ユーザーモード仮想化ライブラリー420例えば、osguard.libは仮想環境及びプロセスを管理するAPIを含み、ユーザーモードと仮想化ドライバー430の間のインターフェースである。仮想化ライブラリー420はまた、種々のアプリケーションサブシステムにわたって使用される仮想ファイルシステム及び仮想レジストリを含む仮想サブシステムを有しており、内蔵している。仮想化ライブラリー420は実行時と同様に仮想アプリケーションをパッケージにするときに使用される。シーケンサー410はインストールプロセスを監視することによって仮想アプリケーションをパッケージ化するために管理者によって使用されるアプリケーションであり、リスナー図示せずは実行時に仮想アプリケーションを管理するオペレーティングシステムサービスである。仮想化実行時モジュール例えば、sftldr.dllは子プロセスを作成するときに仮想化ライブラリー420又はそれ自身によって各仮想プロセスに注入されたライブラリーである。迂回ライブラリーが仮想アプリケーション440プロセス内のファンクションをフックするために用いられる。レジストリ及びファイルシステムの仮想化のために幾つかのコールは仮想化ドライバー430にリダイレクトされ、その他のものはそれぞれのサブシステムの仮想化を実行するために仮想化ライブラリー420内にRPCコールを行う。その初期化の間、仮想化ライブラリー420はレジストリ内にリストされたサブシステムモジュールの各々を動的にロードし、それらのファクトリーインターフェースにポインタを格納する。シーケンサー410またはリスナーが仮想環境を作成するために仮想環境マネージャーを使用している場合ば、ファクトリーが各サブシステムの実体を作成するために使用される。サブシステムの実体は仮想環境オブジェクト内に格納されており、シーケンサー又はリスナーによって取り込むことが可能である。多くのサブシステムが仮想ファイルシステムへのアクセス及びそれらの仮想化を実行するレジストリを必要とする。例えば、仮想COM及び仮想サービスサブシステムの両方がそれぞれ仮想COMオブジェクトを作成し、仮想サービスを開始するために仮想レジストリーキーへのアクセスを必要とする。従って、幾つかの実施形態においては、仮想レジストリ及びファイルシステムサブシステムは汎用化されず、寧ろ主要なコンポーネントである。サブシステムはそれらの監視及び実行時インターフェースを介してそれらに渡された仮想環境オブジェクトを通してこれらのコアサブシステムにアクセスすることが可能である。監視インターフェースが、検出したサブシステムの変更をマニフェスト450ファイル内に格納する。このマニフェスト450はこの情報を表示し編集することを可能にする視覚化インターフェース、コンポーネントを登録するのにこの情報を使用する登録インターフェースを含む他のインターフェースに渡される。幾つかの実施形態において、アプリケーション仮想化システムが管理者が仮想化されたwebアプリケーションのためにアプリケーションプール名を指定変更することを可能にする。例えば、管理者が同一プール内で二つのwebアプリケーションが動作するように環境設定することを欲するかも知れない。この場合には、webアプリケーションが或る名称を使用するように設計されている場合があり、管理者はそのアプリケーションプール名を使用するためにsav_provider.xml又は他のロケーションをアプリケーションメタデータを格納する為に変更し、それによってwebアプリケーションが正しく機能し続けるようにすることができる。幾つかの実施形態において、アプリケーション仮想化システムは単一の仮想環境内で複数のサーバーアプリケーションを動作させる。多くの場合、本明細書に記述されたアプリケーション毎に別々の仮想環境が望ましいけれども、システムは単一の環境内でアプリケーションを仮想化することもできる。例えば、管理者が目標とするコンピューターシステムのリソースを維持することを望むかもしれず、関連したアプリケーションが、複数の仮想環境の分離によっては許されない方法で互いに通信することを望むかも知れない。以上の内容から、アプリケーション仮想化システムの特定の実施形態が説明のために本明細書に記述されてきたけれども、本発明の趣旨及び範囲から逸脱することなく種々の変更が可能であることが理解される筈である。従って、発明は添付された請求項による以外には限定されない。"