(57)【要約】【課題】市販のソフトウェアを修正することなく、マシン上にこのソフトウェアをインストールせずに、リムーバブル媒体から市販のソフトウェアを走らせることを可能にする。【解決手段】コンピュータ上にインストールしていないアプリケーションの実行中に作成または修正したファイルおよびアプリケーション関連状態は、リムーバブル媒体に保存することができ、あるいはシステム・ファイル・システムおよびシステム・レジストリ（存在する場合）の指定エリアに保存することができる。【選択図】図２
2009543200.tif 000002
【特許請求の範囲】
【請求項１】
リムーバブル媒体からコンピュータ上でアプリケーションを走らせるシステムであって、
リムーバブル媒体ファイル・システムとレジストリ（２１２ｄ）とを備えている複数のファイル（２１２ｘ）を格納するリムーバブル媒体（２１２）の接続に応答してサイロ（２１６）を作成するオペレーティング・システムを備えており、前記サイロ（２１６）は、当該サイロ（２２２）において走る前記アプリケーションに対して、システム・ファイル・ディレクトリ（２０２）と前記リムーバブル媒体ファイル・システム（２１２ｘ）の融合ビューを呈示する、システム。
【請求項２】
請求項１記載のシステムにおいて、前記サイロは、前記コンピュータの前記オペレーティング・システムを共有する、システム。
【請求項３】
請求項１記載のシステムにおいて、前記サイロは、当該サイロにおいて走る前記アプリケーションに対して、システム・レジストリと前記リムーバブル媒体レジストリとの融合ビューを呈示する、システム。
【請求項４】
請求項１記載のシステムにおいて、前記システム・ファイル・システムまたはレジストリは、前記サイロにおいて走る前記アプリケーションに対するリード専用アクセスである、システム。
【請求項５】
請求項１記載のシステムにおいて、前記リムーバブル媒体ファイル・システムまたはレジストリは、前記サイロにおいて走る前記アプリケーションに対するリード／ライト・アクセスである、システム。
【請求項６】
請求項１記載のシステムにおいて、前記サイロにおける前記アプリケーションの実行中、アプリケーション関連状態の変化を、前記リムーバブル媒体に存続させる、システム。
【請求項７】
アプリケーションをコンピュータ上にインストールすることなく、リムーバブル媒体から前記アプリケーションをコンピュータ上で走らせる方法であって、
前記コンピュータへの前記リムーバブル媒体の挿入（３０４）に応答して、前記コンピュータ上にサイロを作成する（３０６）ステップであって、前記サイロは、当該サイロにおいて走る無修正の市販アプリケーションに対して、システム・ファイル・ディレクトリとリムーバブル媒体ファイル・システム・ディレクトリの融合ビューを呈示する（３０６）、ステップと、
前記無修正の市販アプリケーションを前記コンピュータ上にコピーすることなく、前記リムーバブル媒体から前記無修正の市販アプリケーションを実行するステップであって、前記無修正の市販アプリケーションが前記サイロ内部において実行する（３０８）ステップと、
を備えている、方法。
【請求項８】
請求項７記載の方法において、前記システム・ファイル・ディレクトリの一部は、前記サイロにおいて走る前記アプリケーションに対して読み取り／書き込み可能に指定することができる、方法。
【請求項９】
請求項７記載の方法において、前記サイロは、前記サイロにおいて走る前記無修正の市販アプリケーションに対して、システム・レジストリとリムーバブル媒体レジストリとの融合ビューを呈示する、方法。
【請求項１０】
請求項７記載の方法において、前記サイロにおける前記アプリケーションの実行中、アプリケーション関連状態の変化を、前記リムーバブル媒体に存続させる、方法。
【請求項１１】
請求項７記載の方法において、プログラム設定の変更を、前記リムーバブル媒体内にある前記レジストリの指定エリアに存続させる、方法。
【請求項１２】
請求項７記載の方法において、前記無修正の市販アプリケーションを、前記リムーバブル媒体上に、レジストリおよびファイル・システム・ディレクトリの部分集合と初期化コードと共にパッケージ化し、前記初期化コードは、前記市販アプリケーションのコンピュータ上へのインストールの間に通常行われる初期化行為を実行する、方法。
【請求項１３】
請求項７記載の方法において、前記アプリケーションが終了するとき、前記サイロを削除する、方法。
【請求項１４】
請求項７記載の方法において、前記システム・ファイル・ディレクトリに対する前記アプリケーションに利用可能なアクセスの度合いは、ユーザが指定可能である、方法。
【請求項１５】
プログラム・コードが格納されているリムーバブル・コンピュータ読み取り可能媒体であって、計算環境によって実行すると、前記計算環境に、
サイロを備えた隔離実行環境を作成させ（３０６）、前記サイロは、当該サイロにおいて走る無修正の市販アプリケーションに対して、システム・ファイル・ディレクトリと前記コンピュータ読み取り可能媒体上のファイル・ディレクトリとの融合ビューを呈示し（３０６）、前記コンピュータ読み取り可能媒体上のファイル・ディレクトリが、前記サイロにおいて実行する前記無修正の市販アプリケーションを含むプログラム・ファイルと、前記サイロにおいて実行する前記アプリケーションと関連のあるデータ・ファイルとを備えており、
ユーザ入力に応答して、前記アプリケーションを前記サイロにおいて実行させ（３０８）、前記アプリケーションは、前記システム・ファイル・ディレクトリに対するリード専用アクセスと、前記コンピュータ読み取り可能媒体上のファイル・ディレクトリに対するリード／ライト・アクセスとを有する、
リムーバブル・コンピュータ読み取り可能媒体。
【請求項１６】
請求項１５記載のコンピュータ読み取り可能媒体であって、更に、プログラム・コードが格納されており、前記計算環境によって実行すると、前記計算環境に、
前記サイロにおいて実行する前記無修正の市販アプリケーションに、システム・レジストリと前記コンピュータ読み取り可能媒体上のレジストリとの融合ビューを呈示させる、コンピュータ読み取り可能媒体。
【請求項１７】
請求項１６記載のコンピュータ読み取り可能媒体であって、更に、プログラム・コードが格納されており、前記計算環境によって実行すると、前記計算環境に、
前記サイロにおける前記アプリケーションの実行中、アプリケーション関連状態の変更を前記リムーバブル媒体に存続させる、コンピュータ読み取り可能媒体。
【請求項１８】
請求項１６記載のコンピュータ読み取り可能媒体であって、更に、プログラム・コードが格納されており、前記計算環境によって実行すると、前記計算環境に、
前記サイロにおける前記アプリケーションに対するプログラム設定の変更を、前記リムーバブル媒体に存続させる、コンピュータ読み取り可能媒体。
【請求項１９】
請求項１６記載のコンピュータ読み取り可能媒体であって、更に、プログラム・コードが格納されており、前記計算環境によって実行すると、前記計算環境に、
前記アプリケーションが終了するときに、前記サイロを削除させる、コンピュータ読み取り可能媒体。
【請求項２０】
請求項１６記載のコンピュータ読み取り可能媒体であって、更に、プログラム・コードが格納されており、前記計算環境によって実行すると、前記計算環境に、
前記アプリケーションの終了時に、アプリケーション関連状態と、システム・コンフィギュレーションおよび設定に対するアプリケーション関連変更を破棄させる、コンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
ユーザが彼のコンピュータに新しいソフトウェアを入手する方法の１つは、そのソフトウェアをＣＤ  ＲＯＭ上、またはその他の何らかの形態のリムーバブル媒体上で購入することである。ＣＤ  ＲＯＭ（またはその他のリムーバブル媒体）は、通例、税金準備プログラム、ゲーム、または数え切れないその他の可能性の１つというようなアプリケーションを収録している。また、ＣＤ  ＲＯＭは、通例、アプリケーションをユーザのコンピュータ上にインストールするためのソフトウェアも含む。ユーザは、インストール・プログラムを起動するように催促されるか、またはインストール・プログラム自体が自動的に開始する場合もある。次いで、インストーラはプログラムおよびデータ・ファイルをユーザのコンピュータ上にコピーする。また、インストーラは、通例、プログラム・ファイル、フォルダおよびディレクトリ、（レジストリを用いるオペレーティング・システムでは）レジストリ・エントリ、コンフィギュレーション・ファイル・エントリ、環境変数、およびリンクまたはショートカットを作成または修正して、アプリケーションが走ることができるようにする。つまり、通例、ユーザがアプリケーションを走らせることができるようになる前に、少なくとも一部のソフトウェアおよびデータ・ファイルを、ユーザのコンピュータ上にコピーしなければならない。ユーザがそのソフトウェアおよびいずれかのファイル等、作成または使用したソフトウェアを除去したい場合、オペレーティング・システムが提供するソフトウェア・ユーティリティまたはアプリケーションに付属するソフトウェアによって、アプリケーションを頻繁にアンインストールすることができる。アンインストールに伴って問題が頻繁に発生する。場合によっては、削除すべきファイル、フォルダ、ディレクトリ、レジストリ・エントリ、リンク、コンフィギュレーション・ファイル・エントリ等が削除されず、場合によっては、削除すべきでないファイル等が削除される。場合によっては、ユーザのコンピュータ上に残留しているファイル等は、他のプログラムの実行で問題を生ずる状態で残されていることもある。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
加えて、多くの場合、ユーザは１台よりも多くのコンピュータを所有し、１台よりも多くのコンピュータ上でソフトウェアを走らせることを望む。例えば、ユーザが３台のコンピュータを所有していると仮定する。アプリケーション・ソフトウェア自体（例えば、ＣＤ  ＲＯＭ上に常駐する）が移植可能であっても、彼の３台のコンピュータのいずれかでアプリケーションを走らせるためには、ユーザは彼の３台のマシンの各々で別個にソフトウェアをインストールしなければならない。アプリケーションのインストールにより、インストールするコンピュータの各々において空間を使い果たし、後にソフトウェアをアンインストールしても、マシン上にデータが残る可能性が高い。また、ユーザが他人のコンピュータ上でソフトウェアを走らせたいが個人情報を他人のコンピュータ上に残したくない場合にも、問題が発生する可能性がある。リムーバブル媒体上にあるソフトウェアを扱い、ソフトウェアをインストールおよびアンインストールしなければならない場合の問題は、Ｏ（ｎ）の問題である。したがって、このモデルは、今日広く普及しているが、多数の欠点がある。
【課題を解決するための手段】
【０００３】
ユーザは、リムーバブル媒体上のソフトウェアを購入または獲得することができ、あるいはインターネットまたはその他のネットワークからソフトウェアをリムーバブル媒体上にダウンロードして、リムーバブル媒体をコンピュータに挿入し、リムーバブル媒体からソフトウェアを走らせることによって、ソフトウェアを用いることができる。ソフトウェアは、何台のコンピュータ上でソフトウェアを走らせるかには関わらず、１回しかコンピュータにインストールしてはならない場合もあり得る。また、ソフトウェアがインストールせずに走ることができるようにパッケージ化されており、使用の前にソフトウェアを全くインストールせず、後にそれをアンインストールする必要性を解消すれば、それが望ましいはずである。
【０００４】
リムーバブル媒体は、読み取り専用または読み取り／書き込み可能とすることができる。リムーバブル媒体が書き込み可能である場合、ソフトウェアを走らせる第１コンピュータは、インストール・ステップを実行し、リムーバブル媒体に対して必要なあらゆるコンフィギュレーション変更を行うことができる。このコンピュータまたは他のコンピュータ上で後にソフトウェアを走らせる際には、インストールを不要とすることができる。リムーバブル媒体が書き込み可能である場合、アプリケーションおよび作成されたまたはそれと関連のあるあらゆるファイルまたは状態も、任意にリムーバブル媒体に保存することができる。本発明がなければ走らせるためにはインストールしなければならないソフトウェアであっても、リムーバブル媒体からインストールして走らせる必要はなく、その市販状態(off-the-shelf state)から変更する必要はない。
【０００５】
リムーバブル媒体が読み取り専用である場合、インストール・ステップを必要としないような方法でソフトウェアをパッケージ化（任意に、後購入）することができる。あるいは、必要なコンフィギュレーション変更のみを行うようにインストール・ステップを短縮し、リムーバブル媒体上では、必要なコンフィギュレーション変更のみがソフトウェアに見えるような方法にする。即ち、インストールは、ソフトウェアをインストールするコンピュータには影響を及ぼさない（即ち、コンピュータ上のコンフィギュレーション設定は、ソフトウェアのインストールの結果、変化しない）。ユーザは、リムーバブル媒体を挿入したコンピュータの状態、または、リムーバブル媒体が挿入されておらずソフトウェアを走らせていない場合は、コンピュータが接続されていた状態を残す選択肢を有する。ソフトウェアをコンピュータ上にインストールすることなくアプリケーションを起動することができる環境を与えるサイロ(silo)のようなサンドボックス(sandbox)を作成することにより、リムーバブル媒体からソフトウェアを走らせる。リムーバブル媒体を取り出すとき、サンドボックスを削除し、アプリケーションのあらゆる残存物およびその状態をコンピュータから除去することができる。
【０００６】
サイロは、システム・ファイル・システムおよびシステム・レジストリの読み取り専用ビューを、リムーバブル媒体上のファイルおよびレジストリへのリード／ライト・アクセスと融合する。その結果、完全なオペレーティング・システムとして機能する隔離環境即ちサイロが得られる。サイロは、オペレーティング・システム・イメージの別個のインスタンスを有さない。
【図面の簡単な説明】
【０００７】
図面において、
【図１】図１は、本発明の形態を実施することができる計算環境の一例を示すブロック図である。
【図２ａ】図２ａは、本発明の実施形態の一部にしたがって、リムーバブル媒体からアプリケーションを走らせるシステムのブロック図である。
【図２ｂ】図２ｂは、本発明の実施形態の一部にしたがって、リムーバブル媒体からアプリケーションを走らせるシステムのブロック図である。
【図２ｃ】図２ｃは、本発明の実施形態の一部にしたがって、リムーバブル媒体からアプリケーションを走らせるシステムのブロック図である。
【図３】図３は、本発明の実施形態の一部にしたがって、リムーバブル媒体からアプリケーションを走らせる方法の流れ図である。
【発明を実施するための形態】
【０００８】
全体像
【０００９】
市販のソフトウェアには、インストール・ソフトウェアが付属するのが通例であり、このインストール・ソフトウェアを走らせなければアプリケーションを起動することはできない。通例、インストール・ソフトウェアは、ソフトウェアが走るコンピュータ上にファイルおよびデータをコピーする。また、インストール・ソフトウェアは、アプリケーションが走ることができるように、コンフィギュレーション設定やレジストリ値を追加または変更する場合もある。本発明の実施形態によれば、市販のソフトウェアをリムーバブル媒体から走らせることができ、ソフトウェアをマシンにインストールせず、市販のソフトウェアの修正も行わない。本発明の実施形態の一部では、アプリケーションを走らせた後におけるコンピュータの状態は、アプリケーションを走らせても不変である。即ち、アプリケーションが走っている間に生ずるいずれの状態変化も完全に一過性であり、コンピュータ上にある永続的（永久的または保存してある）ファイルには何の変化も生じない。本発明の実施形態の一部では、コンピュータ上にはインストールせずにリムーバブル媒体から走らせるアプリケーションの実行中に作成または変化したファイルを、リムーバブル媒体に保存する。本発明の実施形態の一部では、インストールしないアプリケーションの実行中に作成または修正したファイルを、コンピュータのファイル・システムの指定したエリアに保存する。
【００１０】
リムーバブル媒体は、リムーバブル・ディスク、ＣＤ  ＲＯＭ、ＤＶＤ、ＵＳＢキー、フラッシュ・メモリ・デバイス、フラッシュ・ドライブ、ペン・ドライブ、チップ・スティック、サム・ドライブ、リモート・ファイル・シェア、ネットワーク添付ストレージ、そして未だ知られていないまたは開発されていないようなその他のデバイスも含む。市販のソフトウェアを、インストールせずに走らせることができ、コンピュータ上にアプリケーション関連状態を残さないために、初期化の目的でインストール・ソフトウェアを１回走らせ、インストール・ソフトウェアによって設定される値をリムーバブル媒体上に保存する。このプロセスを、リムーバブル媒体のプロビジョニングと呼ぶ。リムーバブル媒体のプロビジョニングは、マスタを作成するために１回行えばよく、あるいは最初にリムーバブル媒体をいずれかのコンピュータに挿入するかまたは接続するときに行えばよい。あるいは、プロビジョニングは、リムーバブル媒体を最初に特定のコンピュータに挿入したときに行っても良い。アプリケーションを走らせるコンピュータにリムーバブル媒体を挿入すると、アプリケーション・サイロが作成される。アプリケーション・サイロに露出されるファイル・システムは、コンピュータのファイル・システムまたはその部分集合、およびリムーバブル媒体上のファイルの中にあるエントリ双方を含むビューである。アプリケーション・サイロに露出されるレジストリは、コンピュータのレジストリまたはその部分集合の中にあるエントリおよびリムーバブル媒体上のレジストリ値双方を含むビューである。つまり、アプリケーション・サイロは、アプリケーションにとっては正規のシステムのように機能する隔離実行環境として作用する。（例えば、アプリケーションが、WINDOWS（登録商標）オペレーティング・システムがインストールされているマシン上で走ることができるアプリケーションである場合、アプリケーション・サイロは、それがアプリケーションにとっては正規のWINDOWS（登録商標）システムであるかのように機能する。）。サイロはコンピュータのファイル・システムおよびレジストリへの書き込みを制限するので、サイロ内において走るプロセスは、ファイル・システムおよびレジストリから選択した部分しか修正することができないが、オペレーティング・システムは、ファイル・システムおよびレジストリのサイロ特定ビューを、サイロ内で走るプロセスに供給するので、サイロにおいて走るプロセスは、これらがシステム・ファイル・システムおよびレジストリに対して完全なライト・アクセスを有すると「考える」。サイロは、オペレーティング・システムのそれ自体のインスタンスを有さない。
【００１１】
サイロは、オペレーティング・システム内部の隔離／収蔵(containment)メカニズムであり、コンピュータ上で走るプロセスの隔離に備える。サイロは、一部のファイルの共有を制御することを可能にし、サイロ内で走るプロセスのためにファイル・システムのビューを作成することにより、他のファイルへのアクセスを制限する。ビューは、サイロ内で走るプロセスには、１つのディレクトリのように見える。このディレクトリは、２つの物理的ファイル・システム・ディレクトリ、システム・ファイル・システム、およびリムーバブル媒体上にあるファイル・システム・ファイルの結合体である。即ち、アプリケーションに利用可能なファイルは、アプリケーションが「見る」ファイルによって左右され、サイロ内で走るアプリケーションが「見る」ファイル・システムは、システム・ファイル・システムとリムーバブル媒体上にあるファイル・システム・ファイルとを融合したビューである。
【００１２】
同様に、サイロは、サイロ内で走るプロセスに対するレジストリのビューを作成することによって、レジストリ内におけるエントリの共有、およびこれに対するアクセス制限を制御する。レジストリ・ビューは、サイロ内で走るプロセスには、１つのレジストリのように見える。このレジストリは、２つ以上の物理的レジストリ、システム・レジストリ、およびリムーバブル媒体上のレジストリの結合体である。
【００１３】
一旦アプリケーションをアプリケーション・サイロにおいて始動させたなら、システム・コンフィギュレーションおよび／またはシステム設定に対するあらゆる変更が、リムーバブル媒体上に存在し、通例リムーバブル媒体上のアプリケーションと関連がありこれに属する、これらのファイルの私用コピーに書き込まれる。任意に、システム・ファイル・システムのエリア（例えば、マイ・ドキュメント・ディレクトリ）へのアクセスを選択して、アプリケーションに与えることができる。アプリケーションが存在し、リムーバブル媒体をコンピュータから除去すると、サイロは削除される。システム・コンフィギュレーションおよび／またはシステム設定に対するいずれの変更も、リムーバブル媒体上におけるアプリケーション私用ストアに書き戻すことができ、あるいは破棄してもよい。
【００１４】
本発明の実施形態の一部では、リムーバブル媒体をコンピュータに挿入するとき、マシン上で走るアプリケーションの残りから囲い込んだ(sandboxed)即ち隔離したサイロにおいて、アプリケーションを走らせる。サンドボックスを作成するには、サイロを作成し、リムーバブル媒体上のレジストリ・エレメントをマシン・レジストリのリード・オンリ・ビューと融合し、リムーバブル媒体上のファイルをマシン・ファイル・システムのファイルのリード・オンリ部分集合と融合することによってファイル・システムのビューを作成する。コンピュータのレジストリまたはファイル・システムへの書き込みは禁止するとよい。代わりに、ビュー内に表わされているレジストリのファイルまたはエレメントの１つに対して書き込みを行おうとする場合、リムーバブル媒体上のファイルまたはレジストリ値に対して書き込みを行う。あるいは、コンピュータのスクラッチ・エリア(scratch area)に変更を書き込んでもよい。スクラッチ・エリアは、リムーバブル媒体を取り出すときに、破棄してもよく、通例は破棄する。
【００１５】
リムーバブル媒体上のアプリケーションとシステムとの間の相互作用は、アプリケーションに設けられるファイル・システムおよびレジストリ・ビューからの読み取りと、ファイル・システムから選択したエリア（例えば、マイ・ドキュメント）への書き込みに制限するとよい。アプリケーションは実際のシステム・レジストリには書き込むことができないので、アプリケーションの挙動は制限される。例えば、供給されてリムーバブル媒体上で走らせようとするアプリケーションがACROBATリーダであると仮定する。ACROBATリーダは、通例、INTERNET EXPLORER またはNETSCAPEのようなインターネット・ブラウザに拡張部を供給する。ACROBATをそれ自体のサイロで走らせるので、コンピュータ上に既にインストールされているインターネット・ブラウザからの拡張部としてACROBATをコールすることはない。何故なら、インターネット・ブラウザが見るマシン側のレジストリ・ビューは、ACROBATに供給されるものとは異なるからである。
【００１６】
前述の挙動により、本発明の実施形態は、今日キオスク(kiosk)において呈示されるような環境において用いるのに理想的となり、したがって、前述の実施形態に想定される用途の１つに、キオスク型環境における使用がある。キオスクは、公衆の場所に普通に見られ、コンピュータおよびモニタを公衆の使用のために提供することによって、コンピュータおよびインターネット関連サービスを提供する。リムーバブル媒体が本発明の実施形態によるソフトウェアを含む場合、ユーザは、キオスクのコンピュータ上でソフトウェアを実行することができ、キオスクのコンピュータ上に個人情報またはデータを残すことも、キオスクのオペレーティング・システムのコンフィギュレーションを修正することもない。
【００１７】
キオスクは、今日では、空港、観光スポット(tourist venue)（ホテル、レストラン、または公共交通機関等の情報を提供するため）、展示会、および小売店において普通に用いられている。例えば、一部の店舗内キオスクでは、買い物客がウェブ・サイトにリンクすることができ、顧客は、店舗内には実際には置けない品目をブラウズして、販売員が、製品仕様、保証情報、および価格比較のような、商品に関する情報にアクセスすることを可能にすることができる。別に想定した使用では、リムーバブル媒体をコンピュータに挿入したときに、キオスクに対する新たなログオンと類似した体験をユーザに呈示することができる。結果は、リムーバブル媒体に戻して保存することができる。任意に、ユーザ環境（ユーザの文書および設定等）以外でも、リムーバブル媒体に保存することができる。
【００１８】
本発明の別の実施形態では、アプリケーションは、ユーザ環境の一部のように見え、システムを拡張することができる。例えば、リムーバブル媒体上のACROBATリーダは、インターネット・ブラウザからコールすることが可能になる。これらの実施形態では、サイロを作成し、ビューを融合して供給した後に、アプリケーション特定アクションを走らせて、マシン上に必要なリンクを導入する。リンクは、マシン・レジストリに導入するキー値対の集合である。リムーバブル媒体を取り出すと、リンクは除去される。リンクを維持するコードを、媒体の挿入／取り出し時に走らせる宣言マニフェスト(declarative manifest)または特殊コードに記述することができる。
【００１９】
本発明の別の実施形態では、アプリケーションは、ユーザ環境の一部のように見え、システムを拡張することができるが、前述した１組のアクションの代わりに、インターネット・ブラウザのユーザ・インターフェース（シェル）部分をサイロにおいて再開する。リムーバブル媒体を挿入すると、プログラムのリストの中に新しいプログラムが現れる。新しいプログラムは、既存のプログラムに対する拡張部として作用することができ、シェル等の設定を変更することができるが、リムーバブル媒体を取り出すと、これらの設定は破棄される。
計算環境の一例
【００２０】
図１および以下の論述は、本発明を実施することができる、適した計算環境の端的な全体的説明を行うことを意図している。しかしながら、ハンドヘルド、携帯用、およびその他のあらゆる種類の計算機も、本発明との使用を想定している。以下では汎用コンピュータについて記載するが、これは一例に過ぎず、本発明は、ネットワーク・サーバ相互動作性および相互作用を有する薄いクライアントでも足りる。つまり、本発明は、クライアント・リソースが殆ど関わらないまたは最小であるネットワーク状ホスト・サービス(hosted service)の環境、例えば、クライアント・デバイスが単にブラウザまたはワールド・ワイド・ウェブへのインターフェースとしての役割を果たすに過ぎないネットワーク状環境においても実施することができる。
【００２１】
必須ではないが、本発明は、アプリケーション・プログラミング・インターフェース（ＡＰＩ）を通じて実施することができる。ＡＰＩは、開発者が用いるためにあり、および／またはネットワーク閲覧ソフトウェアに含まれている。ネットワーク閲覧ソフトウェアは、クライアント・ワークステーション、サーバ、またはその他のデバイスのような１つ以上のコンピュータによって実行するプログラム・モジュールのような、コンピュータ実行可能命令に関して記述されるのが一般的である。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含み、特定のタスクを実行するか、または特定の抽象的データ・タイプを実現する。通例、プログラム・モジュールの機能性は、種々の実施形態において、所望通りに組み合わせることや、分散することもできる。更に、本発明は、別のコンピュータ・システム・コンフィギュレーションでも実用可能であることは、当業者には認められよう。本発明と共に用いるのに適していると考えられるその他の周知の計算システム、環境および／またはコンフィギュレーションには、限定ではなく、パーソナル・コンピュータ（ＰＣ）、現金自動預け払い機、サーバ・コンピュータ、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ系システム、プログラマブル消費者用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ等が含まれる。また、本発明は、通信ネットワークまたはその他データ電送媒体を通じてリンクされているリモート処理デバイスがタスクを実行する分散型計算機環境においても実用可能である。分散型計算環境では、プログラム・モジュールは、メモリ記憶装置を含むローカルおよびリモート・コンピュータ記憶媒体双方に配することができる。
【００２２】
つまり、図１は、本発明を実施することができる計算システム環境１００の一例を示すが、先に明確にしたように、計算システム環境１００は、適した計算環境の一例に過ぎず、本発明の使用または機能性の範囲に関して、限定を示唆する意図は全くない。また、計算機環境１００は、動作環境例１００に示す構成要素のいずれの１つまたは組み合わせに関しても、何らかの依存性や必須要件を有するという解釈は行わないこととする。
【００２３】
図１を参照すると、本発明を実施するシステム例は、コンピュータ１１０の形態とした汎用計算機を含む。コンピュータ１１０の構成要素は、限定ではなく、演算装置１２０、システム・メモリ１３０、およびシステム・バス１２１を含むことができる。システム・バス１２１は、システム・メモリを含む種々のシステム構成要素を演算装置１２０に結合する。システム・バス１２１は、数種類のバス構造のいずれでもよく、メモリ・バスまたはメモリ・コントローラ、周辺バス、および種々のバス構造のいずれかを用いるローカル・バスを含む。限定ではなく一例として、このような構造には、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、改良ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子規格連合（ＶＥＳＡ）ローカル・バス、および（Mezzanine バスとしても知られている）周辺素子相互接続（ＰＣＩ）バスが含まれる。
【００２４】
コンピュータ１１０は、通例、種々のコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピュータ１１０がアクセス可能な入手可能な媒体であればいずれでも可能であり、揮発性および不揮発性の双方、リムーバブル、および非リムーバブル媒体を含む。限定ではない一例をあげると、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体および通信媒体から成ると考えられる。コンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、またはその他のデータというような情報の格納のために、あらゆる方法または技術で実施される、揮発性および不揮発性の双方、リムーバブル、および非リムーバブル媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリまたはその他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・ディスク（ＤＶＤ）またはその他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたはその他の磁気記憶デバイス、あるいは所望の情報を格納するために用いることができしかもコンピュータ１１０がアクセス可能なその他のいずれの媒体も含むが、これらに限定されるのではない。通信媒体は、通例、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、またはその他のデータを、搬送波またはその他の移送機構のような変調データ信号において具体化し、あらゆる情報配信媒体を含む。「変調データ信号」という用語は、その特性集合の１つ以上が、情報を信号内にエンコードするようなやり方で、変化している信号を意味する。限定ではなく、一例として、通信媒体は、有線ネットワークまたは直接有線接続というような有線媒体、ならびに音響、無線周波数（ＲＦ）、赤外線、およびその他のワイヤレス媒体というようなワイヤレス媒体を含む。前述のいずれの組み合わせも、コンピュータ読み取り可能媒体の範囲に当然含まれるものとする。
【００２５】
システム・メモリ１３０は、ＲＯＭ１３１およびＲＡＭ１３２のような揮発性および／または不揮発性メモリの形態で、コンピュータ記憶媒体を含む。基本入出力システム１３３（ＢＩＯＳ）は、起動中のように、コンピュータ１１０内のエレメント間におけるデータ転送を補助する基本的なルーチンを含み、通例ＲＯＭ１３１内に格納されている。ＲＡＭ１３２は、通例、演算装置１２０が直ちにアクセス可能であるデータおよび／またはプログラム・モジュール、および／または現在これによって処理されているデータおよび／またはプログラム・モジュールを収容する。一例として、そして限定ではなく、図１は、オペレーティング・システム１３４、アプリケーション・プログラム１３５、その他のプログラム・モジュール１３６、およびプログラム・データ１３７を示す。
【００２６】
また、コンピュータ１１０は、その他のリムーバブル／非リムーバブル揮発性／不揮発性コンピュータ記憶媒体も含むことができる。一例に過ぎないが、図１は、非リムーバブル不揮発性磁気媒体からの読み取りおよびこれへの書き込みを行なうハード・ディスク・ドライブ１４１、リムーバブル不揮発性磁気ディスク１５２からの読み取りおよびこれへの書き込みを行なう磁気ディスク・ドライブ１５１、ならびにＣＤ  ＲＯＭまたはその他の光媒体のようなリムーバブル不揮発性光ディスク１５６からの読み取りおよびこれへの書き込みを行なう光ディスク・ドライブ１５５を示す。動作環境の一例において使用可能なその他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ記憶媒体には、限定する訳ではないが、磁気テープ・カセット、フラッシュ・メモリ・カード、ディジタル・バーサタイル・ディスク、ディジタル・ビデオ・テープ、ソリッド・ステートＲＡＭ、ソリッド・ステートＲＯＭ等が含まれる。ハード・ディスク・ドライブ１４１は、通例、インターフェース１４０のような非リムーバブル・メモリ・インターフェースを介してシステム・バス１２１に接続され、磁気ディスク・ドライバ１５１および光ディスク・ドライブ１５５は、通例、インターフェース１５０のようなリムーバブル・メモリ・インターフェースによって、システム・バス１２１に接続する。
【００２７】
先に論じ図１に示すドライブおよびそれらと連動するコンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、およびコンピュータ１１０のその他のデータを格納する。図１では、例えば、ハード・ディスク・ドライブ１４１は、オペレーティング・システム１４４、アプリケーション・プログラム１４５、その他のプログラム・モジュール１４６、およびプログラム・データ１４７を格納するように示されている。尚、これらの構成要素は、オペレーティング・システム１３４、アプリケーション・プログラム１３５、その他のプログラム・モジュール１３６、およびプログラム・データ１３７と同じでも異なっていても可能であることを記しておく。オペレーティング・システム１４４、アプリケーション・プログラム１４５、その他のプログラム・モジュール１４６、およびプログラム・データ１４７は、ここで、少なくともこれらが異なるコピーであることを示すために、異なる番号が与えられている。ユーザは、キーボード１６２、および一般にマウス、トラックボールまたはタッチ・パッドと呼ばれているポインティング・デバイス１６１によって、コマンドおよび情報をコンピュータ１１０に入力することができる。他の入力デバイス（図示せず）には、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナ等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、ユーザ入力インターフェース１６０を介して、演算装置１２０に接続されている。ユーザ入力インターフェース１６０は、システム・バス１２１に結合されているが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス（ＵＳＢ）のようなその他のインターフェースおよびバス構造によって接続することも可能である。
【００２８】
モニタ１９１またはその他の形式の表示装置も、ビデオ・インターフェース１９０のようなインターフェースを介して、システム・バス１２１に接続されている。Northbridgeのようなグラフィクス・インターフェース１８２も、システム・バス１２１に接続することができる。Northbridgeは、ＣＰＵまたはホスト処理ユニット１２０と通信するチップセットであり、加速グラフィクスポート（ＡＧＰ）の通信責務を引き受ける。１つ以上のグラフィクス処理ユニット（ＧＰＵ）１８４がグラフィクス・インターフェース１８２と通信することができる。これに関して、ＧＰＵ１８４は一般にレジスタ・ストレージのようなオンチップ・メモリ・ストレージを含み、ＧＰＵ１８４はビデオ・メモリ１８６と通信する。しかしながら、ＧＰＵ１８４は、コプロセッサの一例に過ぎず、したがって、種々の協同処理デバイスをコンピュータ１１０内に含めることができる。また、モニタ１９１またはその他の形式のディスプレイ・デバイスも、ビデオ・インターフェース１９０のようなインターフェースを介して、システム・バス１２１に接続されている。一方、ビデオ・インターフェース１９０は、ビデオ・メモリ１８６と通信することができる。モニタ１９１に加えて、コンピュータは、スピーカ１９７およびプリンタ１９６のような、その他の周辺出力装置も含むことができ、これらは出力周辺インターフェース１９５を通じて接続することができる。
【００２９】
コンピュータ１１０は、リモート・コンピュータ１８０のような１つ以上のリモート・コンピュータへの論理接続を用いて、ネットワーク環境において動作することも可能である。リモート・コンピュータ１８０は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア・デバイス、またはその他の共通ネットワーク・ノードとすることができ、通例、コンピュータ１１０に関して先に説明したエレメントの多くまたは全てを含むが、図１にはメモリ記憶装置１８１のみを示す。図１に示す論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）１７１およびワイド・エリア・ネットワーク（ＷＡＮ）１７３を含むが、他のネットワークも含むことができる。このようなネットワーク環境は、事務所、企業規模のコンピュータ・ネットワーク、イントラネットおよびインターネットにおいては、一般的である。
【００３０】
ＬＡＮネットワーク環境で用いる場合、コンピュータ１１０は、ネットワーク・インターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続する。ＷＡＮネットワーク環境で用いる場合、コンピュータ１１０は、通例、モデム１７２、またはインターネットのようなＷＡＮ１７３を通じて通信を確立するその他の手段を含む。モデム１７２は、内蔵でも外付けでもよく、ユーザ入力インターフェース１６０またはその他の適切な機構を介してシステム・バス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０に関して図示したプログラム・モジュール、またはその一部は、リモート・メモリ記憶装置に格納することもできる。一例として、そして限定ではなく、図１は、リモート・アプリケーション・プログラム１８５がメモリ素子１８１上に常駐するものとして示している。尚、図示のネットワーク接続は一例であり、コンピュータ間で通信リンクを確立する他の手段も使用可能であることは認められよう。
【００３１】
コンピュータ１１０またはその他のクライアント・デバイスは、コンピュータ・ネットワークの一部として展開できることは、当業者であれば認めることができよう。これに関して、本発明は、いずれの数のメモリまたは記憶ユニット、ならびにいずれの数の記憶ユニットまたはボリュームを跨って実行するいずれの数のアプリケーションおよびプロセスを有する、あらゆるコンピュータ・システムに関する。本発明は、ネットワーク環境において展開され、外部または内部ストレージを有するサーバ・コンピュータおよびクライアント・コンピュータを備えている環境にも適用することができる。また、本発明は、プログラミング言語機能性、解釈、および実行機能を有する、単体の計算機にも適用することができる。
リムーバブル媒体からのアプリケーションの実行
【００３２】
ファイル・システム・ディレクトリのアプリケーション特定ビューは、システム・ファイル・ディレクトリとリムーバブル媒体上のファイル・ディレクトリとを、サイロにおいて走るアプリケーションに露出する１つのアプリケーション特定ディレクトリに融合することによって、サイロが作成する。アプリケーション特定ディレクトリのシステム・ファイル・ディレクトリ部分の全て（または指定部分以外の全て）は、（アプリケーションにとって）読み取り専用とすることができる。リムーバブル媒体のファイル・ディレクトリから来たアプリケーション特定ファイル・ディレクトリの部分は、サイロにおいて走るアプリケーションに対して読み取り専用または書き込み可能に指定することができる。レジストリのアプリケーション特定ビューは、システム・レジストリおよびリムーバブル媒体レジストリを、サイロ内で走るアプリケーションに露出するアプリケーション特定レジストリに融合することによって、サイロが作成する。アプリケーション特定レジストリのシステム・レジストリ部分の全て（または指定部分以外の全て）は、（アプリケーションにとって）読み取り専用とすることができる。リムーバブル媒体のファイル・レジストリから来たアプリケーション特定ファイル・レジストリの部分は、サイロにおいて走るアプリケーションに対して読み取り専用または書き込み可能に指定することができる。
【００３３】
図２ａから図２ｃは、コンピュータ上にインストールしていないアプリケーションを、コンピュータに挿入またはそれ以外の方法で接続したリムーバブル媒体から走らせるシステム２００の実施形態を示す。システム２００は、図１に関して先に説明したコンピュータ１１０のような、１台以上のコンピュータに常駐することができる。図２ａは、リムーバブル媒体を挿入（またはそれ以外の方法で接続）する前のシステムを表す。図２ｂは、リムーバブル媒体をマシンに挿入している間のシステムを表し、図２ｃは、リムーバブル媒体を取り出した後のシステムを表す。図２ａにおいて、WINDOWS（登録商標）、Linuxまたはその他のオペレーティング・システムのようなオペレーティング・システムが、オペレーティング・システム（ＯＳ）２１４で表されている。システム・ファイル・システムは、ファイル・システム２０２によって表されており、データ・ファイルまたはアプリケーション状態（マイ・ドキュメント・ディレクトリ２０４によって表されており、その中では多数のファイルが文書１２０４ａおよび文書２  ２０４ｂ等で表されている）を含むことができる。ファイル・システム２０２は、プログラム・ファイル・ディレクトリ２０６の中に、プログラム１  ２０６ａおよびプログラム２  ２０６ｂのような多数のプログラム・ファイルも含むことができる。レジストリ（特殊構造においてプログラム設定を格納するオペレーティング・システムのための）が、レジストリ２０８によって表されている。図２ａでは、プログラム１  ２０６ａに対するプログラム設定はレジストリ・エントリ２０８ａによって表されており、プログラム２  ２０６ｂに対するプログラム設定はレジストリ・エントリ２０８ｂによって表されている等となっている。
【００３４】
リムーバブル媒体は、図２ａではＵＳＢキー２１２によって表されている。本発明の実施形態の一部では、ＵＳＢキー２１２は、以下の内１つ以上を含む。マニフェスト２１２ａによって表されている、前述のようなマニフェスト、コンピュータ１１０上にインストールせずに、ＵＳＢキー上で走らせようとするアプリケーションが必要とするプログラム・ファイル（例えば、プログラム３  ２１２ｃ）を含む（通例小さいがその必要はない）プログラム・ファイル・ディレクトリ、アプリケーション、およびインストール・プログラムおよび／または後続のアプリケーションの実行によって発生するアプリケーションの状態が必要とするデータ・ファイルを表すデータ・ファイル（文書３  ２１２ｂを含むマイ・ドキュメント・ディレクトリによって表されている）。ＵＳＢキー・データ・ファイルおよびプログラム・ファイルを合わせて、ＵＳＢキーのファイル・システム・ファイル２１２ｘを表す。加えて、リムーバブル媒体のレジストリが、プログラム３設定２１２ｄによって表されている。プロビジョニングの前では、文書３  ２１２ｂおよびレジストリ設定２１２ｄは最小または空にするとよい。
【００３５】
図２ｂは、インストールしていないアプリケーションの実行中におけるコンピュータ１１０を示す。リムーバブル媒体（例えば、ＵＳＢキー２１２）のコンピュータ１１０への挿入または接続時に、走らせようとするアプリケーション（例えば、プログラム３  ２１２ｃ）に対する囲い込み(sandboxed)実行環境を発生する。サイロ２１６を作成し、融合アプリケーション特定ディレクトリ２１８および融合アプリケーション特定レジストリ２２０を作成する。図２ｂから認められるであろうが、融合ディレクトリ２１８は、システム・ファイル・システム２０２およびリムーバブル媒体のファイル・システム・ファイル（文書３  ２１２ｂおよびプログラム３  ２１２ｃ）双方からのエントリを互いに融合して含んでいる。同様に、融合レジストリ２２０は、システム・レジストリ２０８およびリムーバブル媒体レジストリ２１２ｄ双方からのエントリを互いに融合して含んでいる。本発明の実施形態の一部では、サイロ２１６（プロセス２２２によって表す）において走っているアプリケーション（例えば、プログラム３）には１つの物理的ディレクトリのように見えるエンティティは、実際には、リンクによって作成される幻想（図２において破線で表す）であり、物理的には、仮想（メモリ内に格納されている）エンティティまたは物理的（安定記憶媒体上に存続する）エンティティのいずれとしても物理的には存在しない。実施形態の一部では、融合ファイル・システム・ディレクトリ２１８および融合レジストリ・ビュー２２０は、仮想ディレクトリである。プロセス２２２が実行するに連れて、レジストリ・エントリが変化する可能性があり、データ・ファイルが作成または更新される可能性がある。レジストリ・エントリまたは追加のレジストリ・エントリに対して変更を行った場合、あるいはデータ・ファイルに対する変更を行った場合、または追加のデータ・ファイルを作成した場合、これらの変更や追加は、任意に、リムーバブル媒体２１２に書き戻すことができる（即ち、例えば、ＵＳＢキー２１２上の文書３  ２１２ｂが更新され、あるいは新たなレジストリ・プログラム３の設定２１２ｄが更新される）。代わりに、変更は、アプリケーションが実行している間だけ存続してもよく（ビュー２１８および２２０において）、リムーバブル媒体を取り出すときに、変更および追加を破棄してもよい。本発明の実施形態の一部では、リムーバブル媒体に書き込むことに加えて、またはその代わりに、変更および追加を、システム・ファイル・システム／レジストリの指定エリアに対して行う。
【００３６】
図２ｃは、プロセス２２２が終了した後におけるコンピュータ１１０を表す。例えば、アプリケーションの実行によって生じた変化をリムーバブル媒体に書き戻す場合を仮定する。プログラム３の設定に対して変更を行ったと仮定する。新たなプログラム３の設定は、リムーバブル媒体上に存続させることができる（図２ｃにおいて新プログラム３設定２１２ｆで表されている）。文書３  ２１２ｂは、アプリケーションの実行中に更新されたと仮定する。文書に対する変更は、リムーバブル媒体（図２ｃにおいて、更新文書３  ２１２ｅとして表されている）上に存続させることができる。尚、行った変更および変更の存続は、サイロ・メカニズムによって行われる、即ち、アプリケーションには修正を加えない（例えば、それがサイロにおいて走っていることを理解するため）ことは認められよう。サイロ２１６を削除し、アプリケーション関連状態の全てをコンピュータ１１０から除去することができる。ファイル・システム２０２およびレジストリ２０８は、リムーバブル媒体から走らせたアプリケーション（例えば、プログラム３  ２１２ｃ）の実行によっても、変更が生じない。
【００３７】
本発明の別の実施形態では、ファイル・システムまたはレジストリの指定部分は、サイロにおいて走っているアプリケーションに対してリード／ライト・アクセスを可能にすることができる。例えば、アプリケーションに、システム・ファイル・システム２０２のマイ・ドキュメント・ディレクトリ２０４へのリード／ライト・アクセスを付与しておいてもよい。この場合、更新文書３  ２１２ｅをマイ・ドキュメント・ディレクトリ２０４に書き込むことができる。同様に、新プログラム３設定２１２ｆも、図２ｃのシステム・レジストリ２０８に書き込むことができる。あるいは、他の選択肢によれば、更新したファイルおよびレジストリ値の全てを破棄してもよい。
【００３８】
図３は、コンピュータ上にアプリケーションをインストールせずに、リムーバブル媒体からアプリケーションを走らせる方法の流れ図である。実施形態の一部では、これを行う際に、前述のようなサイロ・メカニズムを用いる。ここで用いる場合、リムーバブル媒体とは、リムーバブル・ディスク、ＣＤ  ＲＯＭ、ＤＶＤ、ＵＳＢキー、フラッシュ・メモリ・デバイス、フラッシュ・ドライブ、ペン・ドライブ、チップ・スティック、サム・ドライブ、および未だ知られていないまたは開発されていないその他のこのような媒体を含む。ステップ３０２において、リムーバブル媒体をプロビジョニングする。リムーバブル媒体をプロビジョニングするとは、必要なエレメント全てをリムーバブル媒体上にパッケージ化して、リムーバブル媒体をコンピュータに挿入したときに、コンピュータ上にインストールすることなくアプリケーションを走らせることができるようにする（前述のように）ことを意味する。実施形態の一部では、ステップ３０２は、リムーバブル媒体をコンピュータに挿入する毎ではなく、リムーバブル媒体のマスタ・コピーを作成するために１回だけ走らせればよいようにしていることを想定している。あるいは、リムーバブル媒体を以前にコンピュータに挿入したことがあっても、プロビジョニングの一部は、リムーバブル媒体をそのコンピュータに挿入する毎に実行してもよい。更に別の実施形態では、プロビジョニングの一部は、リムーバブル媒体をコンピュータに（そのコンピュータにとって）最初に挿入するときにはいつでも実行することもできる。
【００３９】
プロビジョニングでは、コンピュータ上にインストールすることなくアプリケーションを走らせることを可能にするために必要な、追加のエレメントを作成しなければならない場合もある。市販のソフトウェアを、インストールせずに、そしてアプリケーション関連状態をコンピュータ上に残すことなく走らせることを可能にするためには、インストール・ソフトウェアを初期化の目的で１回走らせるとよく、インストール・ソフトウェアによって設定される値を、リムーバブル媒体上に保存するとよい。例えば、コンピュータ上で走らせるためにはインストールを必要とするアプリケーションを収容しているリムーバブル媒体は、今日では周知のように、アプリケーションを実行するために必要なプログラム・ファイル、アプリケーションをコンピュータ上にインストールするプログラム・ファイル、データ・ファイル、リンク、ショートカット等を含むのが通例である。対照的に、本発明の実施形態によれば、必要な設定および値を入手するためには、インストール・ソフトウェアを１回走らせればよい。これらの値は、リムーバブル媒体上に保存されている。インストール・ソフトウェア自体は、リムーバブル媒体上になくてもよい。加えて、コードをリムーバブル媒体上で供給してもよく、リムーバブル媒体からアプリケーションを最初に走らせるとき、またはリムーバブル媒体をコンピュータに挿入するときにはいつでも、走らせるようにしてもよい。このコードは、変数および値の初期化を実行することができる。これは、今日ではインストール・ソフトウェアによって実行されている。また、このコードは、アプリケーションが、それが走るコンピュータのハードウェアおよびソフトウェア特性に合わせて調節することを可能にすることもできる。加えて、リムーバブル媒体にマニフェストを備えてもよい。マニフェストは、レジストリの部分集合（即ち、アプリケーションが用いるまたはこれと関連のあるレジストリの一部）、およびファイル・システムの部分集合（即ち、アプリケーションが用いるまたはこれと関連のあるレジストリの一部）を記述することができる。マニフェストは、サイロにおいて走るプロセスに与えるアクセス属性を記述することもできる。
【００４０】
本発明の実施形態の一部では、一旦「マスタ」リムーバブル媒体を作成したなら、プロビジョニングしたリムーバブル媒体のコピーを更に生成する場合にのみコピーすればよい。したがって、プロビジョニングに伴う処理、あるいはプロビジョニングに伴う処理の一部を繰り返す必要はない。
【００４１】
３０４において、プロビジョニングしたリムーバブル媒体を、図１に関して先に説明したようなコンピュータに挿入する。アプリケーションを走らせようとするコンピュータに、プロビジョニングしたリムーバブル媒体を挿入する際、ユーザにはサンドボックスの内側で走らせる選択肢が与えられる。この選択肢を選択すると、マシン上へのインストールを行わずにアプリケーションを走らせる環境が作成される。この環境は、アプリケーションがマシン上にインストールされたかのように、アプリケーションには見えるような幻想を作り出す。即ち、ファイル、レジストリ・エントリ、変数値等、インストールされたアプリケーションが見ることを予期する全てが、インストールされていないアプリケーションに露出されるので、アプリケーションがマシン上にインストールされているかのように、アプリケーションには見える。本発明の実施形態の一部では、この幻想を作り出すには、サイロを作成し、このサイロがマシンの状態を、インストール・プログラムをプロビジョニング・ステップ（インストールされていないアプリケーションをリムーバブル媒体から最初に走らせたときに行われる）の間に走らせたときにアプリケーションが書いた全ての状態、またはインストールされていないアプリケーションを最後に走らせたときにそれによって作り出された状態と融合する。（以下で更に詳しく説明するが、アプリケーションを走らせるとき（即ち、その後の実行中）に生ずる全ての状態は、リムーバブル媒体上またはコンピュータのファイル・システムの指定エリアに戻され格納される。）アプリケーション・サイロに露出されるファイル・システムは、コンピュータのファイル・システムにおけるエントリとリムーバブル媒体上のファイルとの双方を含む融合ビューである。アプリケーション・サイロに露出されるレジストリは、コンピュータのレジストリにおけるエントリと、リムーバブル媒体上のレジストリ値との双方を含むビューである。つまり、アプリケーション・サイロは、隔離実行環境のように作用し、アプリケーションに対してそれ自体のオペレーティング・システムを有するがそれ自体のオペレーティング・システムのコピーを含まない完全なコンピュータ・システムのように機能する。（例えば、アプリケーションが、WINDOWS（登録商標）オペレーティング・システムがインストールされているマシン上で走ることができるアプリケーションである場合、アプリケーション・サイロは、そのアプリケーションにとって正規のWINDOWS（登録商標）システムであるかのように機能するが、それ自体のWINDOWS（登録商標） OSイメージを有していない。）
【００４２】
サンドボックスの作成中に、ユーザは、サンドボックスの隔離固有性を指定する選択肢を有することができる。あるいは、サンドボックスの隔離固有性は、マニフェストのなか、またはリムーバブル媒体上に含まれる別個のサンドボックス定義ファイルの中に含まれるサンドボックス定義によって決定してもよい。想定される隔離固有性は、以下を含む。
システム・ファイルは全て読み取り専用である。
一部のシステム・ファイルは書き込み可能である。
一部のシステム・ファイルが書き込み可能である場合、システム書き込み可能ファイルまたはディレクトリの名称
レジストリ・エントリは読み取り専用である。
指定のレジストリ・エントリは書き込み可能である。
インストールされていないアプリケーションが作成または修正したファイルは、アプリケーション終了時に削除する。
インストールされていないアプリケーションが作成または修正したファイルは、リムーバブル媒体に保存する。
アプリケーションが書き込むファイル・システムの一部分を転送する(redirected)（例えば、リムーバブル媒体が読み取り可能である場合）。
ユーザ・データの一部は、リード専用アクセスに対してのみ隠し、露出されたリード／ライト・アクセスに対しては露出させることができる（例えば、あるゲームに対するサイロがユーザの私用データを見ることを防止することができ、あるいは税金用ソフトウェアに対するサイロは、ユーザの経理データ・ファイルに書き込むことを許すことができる）。サンドボックスの定義は、サイロが、仮想融合ファイル・システムおよびレジストリ・ビューを作成するために用いられ、これはサイロにおいて走るアプリケーションに露出される。
【００４３】
３０８において、本発明の実施形態の一部では、メニューを呈示して、以下の選択肢の内１つ以上を与える。コンピュータ上にインストールされていないアプリケーションをサンドボックスにおいて走らせる準備をする、コンピュータ上にインストールされていないアプリケーションをサンドボックス内部で実行する、またはコンピュータ上にインストールされているアプリケーションをリムーバブル媒体上で走らせる。第１の選択肢を選択するのは、リムーバブル媒体上にある新しいアプリケーションをサンドボックスにおいて最初に走らせようとするときである。第２の選択肢は、アプリケーションをその後に走らせるときに選択することができる。最後の選択肢では、マシン上に既にインストールされているアプリケーションを従来の（既知の）方法でユーザが走らせることができるが、状態、ファイル、レジストリ値等を、システム状態、システム・ファイル等の代わりに、リムーバブル媒体に書き戻すことができる。サンドボックスにおけるアプリケーションの実行中、状態、ファイル、レジストリ・エントリ等は、リムーバブル媒体上で更新する。３１０において、実行が完了した後、サンドボックスを削除する。サンドボックスの削除により、サイロや、アプリケーションの実行によって作成されたいずれの状態も削除される。３１２において、リムーバブル媒体を取り出す。
【００４４】
ここに記載した種々の技法は、ハードウェアまたはソフトウェア、あるいは、該当するのであれば、双方の組み合わせと関連付けて実施することができる。つまり、本発明の実施形態の方法および装置、あるいはそのある形態または部分は、フロッピ・ディスケット、ＣＤ−ＲＯＭ、ハード・ドライブ、あるいはその他のあらゆる機械読み取り可能記憶媒体のような、有形媒体内に具体化したプログラム・コード（即ち、命令）の形態をなすことができ、プログラム・コードをコンピュータのような機械にロードしこれによって実行すると、機械は、本発明を実用化する装置となる。プログラマブル・コンピュータ上におけるプログラム・コードの実行の場合、計算機は、一般に、プロセッサ、当該プロセッサによる読み取り可能な記憶媒体（揮発性および不揮発性メモリ、および／または記憶エレメントを含む）、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスを含む。例えば、データ処理ＡＰＩ等の使用によって、本発明のドメイン特定プログラミング・モデルの作成および／または実施を利用することができる１つ以上のプログラムは、好ましくは、上位手続き型またはオブジェクト指向プログラミング言語で実施し、コンピュータ・システムと通信する。しかしながら、プログラムは、望ましければ、アセンブリまたは機械語で実施することもできる。いずれの場合でも、言語は、コンパイル型またはインタプリタ型言語とすることができ、あるいはハードウェア実現例と組み合わせることもできる。
【００４５】
以上、種々の図の好適な実施形態と関連付けて、本発明について説明したが、本発明と同じ機能を実行するために、それから逸脱することなく、他の同様の実施形態を用いることや、記載した実施形態に対して変更や追加を行うことができることは言うまでもない。したがって、本発明は、いずれの１つの実施形態にも限定されることはなく、逆に、添付した特許請求の範囲の広さおよび範囲で解釈して然るべきである。
【図１】
2009543200.tif 000003
【図２ａ】
2009543200.tif 000004
【図２ｂ】
2009543200.tif 000005
【図２ｃ】
2009543200.tif 000006
【図３】
2009543200.tif 000007
【国際調査報告】
2009543200.tif 000008
2009543200.tif 000009