JP5628387B2 - アプリケーションをリムーバブル媒体から走らせる方法、システムおよびコンピュータ読み取り可能記憶媒体 - Google Patents

アプリケーションをリムーバブル媒体から走らせる方法、システムおよびコンピュータ読み取り可能記憶媒体 Download PDF

Info

Publication number
JP5628387B2
JP5628387B2 JP2013149349A JP2013149349A JP5628387B2 JP 5628387 B2 JP5628387 B2 JP 5628387B2 JP 2013149349 A JP2013149349 A JP 2013149349A JP 2013149349 A JP2013149349 A JP 2013149349A JP 5628387 B2 JP5628387 B2 JP 5628387B2
Authority
JP
Japan
Prior art keywords
computer
application
silo
directory
registry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013149349A
Other languages
English (en)
Other versions
JP2013232224A (ja
Inventor
クハリディ,ユセフ・エイ
タルーリ,マドゥシュドハン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2013232224A publication Critical patent/JP2013232224A/ja
Application granted granted Critical
Publication of JP5628387B2 publication Critical patent/JP5628387B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44584Portable applications, i.e. making applications self-contained, e.g. U3 standard
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Description

ユーザが彼のコンピュータに新しいソフトウェアを入手する方法の1つは、そのソフトウェアをCD ROM上、またはその他の何らかの形態のリムーバブル媒体上で購入することである。CD ROM(またはその他のリムーバブル媒体)は、通例、税金準備プログラム、ゲーム、または数え切れないその他の可能性の1つというようなアプリケーションを収録している。また、CD ROMは、通例、アプリケーションをユーザのコンピュータ上にインストールするためのソフトウェアも含む。ユーザは、インストール・プログラムを起動するように催促されるか、またはインストール・プログラム自体が自動的に開始する場合もある。次いで、インストーラはプログラムおよびデータ・ファイルをユーザのコンピュータ上にコピーする。また、インストーラは、通例、プログラム・ファイル、フォルダおよびディレクトリ、(レジストリを用いるオペレーティング・システムでは)レジストリ・エントリ、コンフィギュレーション・ファイル・エントリ、環境変数、およびリンクまたはショートカットを作成または修正して、アプリケーションが走ることができるようにする。つまり、通例、ユーザがアプリケーションを走らせることができるようになる前に、少なくとも一部のソフトウェアおよびデータ・ファイルを、ユーザのコンピュータ上にコピーしなければならない。ユーザがそのソフトウェアおよびいずれかのファイル等、作成または使用したソフトウェアを除去したい場合、オペレーティング・システムが提供するソフトウェア・ユーティリティまたはアプリケーションに付属するソフトウェアによって、アプリケーションを頻繁にアンインストールすることができる。アンインストールに伴って問題が頻繁に発生する。場合によっては、削除すべきファイル、フォルダ、ディレクトリ、レジストリ・エントリ、リンク、コンフィギュレーション・ファイル・エントリ等が削除されず、場合によっては、削除すべきでないファイル等が削除される。場合によっては、ユーザのコンピュータ上に残留しているファイル等は、他のプログラムの実行で問題を生ずる状態で残されていることもある。
加えて、多くの場合、ユーザは1台よりも多くのコンピュータを所有し、1台よりも多くのコンピュータ上でソフトウェアを走らせることを望む。例えば、ユーザが3台のコンピュータを所有していると仮定する。アプリケーション・ソフトウェア自体(例えば、CD ROM上に常駐する)が移植可能であっても、彼の3台のコンピュータのいずれかでアプリケーションを走らせるためには、ユーザは彼の3台のマシンの各々で別個にソフトウェアをインストールしなければならない。アプリケーションのインストールにより、インストールするコンピュータの各々において空間を使い果たし、後にソフトウェアをアンインストールしても、マシン上にデータが残る可能性が高い。また、ユーザが他人のコンピュータ上でソフトウェアを走らせたいが個人情報を他人のコンピュータ上に残したくない場合にも、問題が発生する可能性がある。リムーバブル媒体上にあるソフトウェアを扱い、ソフトウェアをインストールおよびアンインストールしなければならない場合の問題は、O(n)の問題である。したがって、このモデルは、今日広く普及しているが、多数の欠点がある。
また、本発明の先行技術文献として、「ポータブルアプリケーション」と題する特開2006−172449号公報がある。
ユーザは、リムーバブル媒体上のソフトウェアを購入または獲得することができ、あるいはインターネットまたはその他のネットワークからソフトウェアをリムーバブル媒体上にダウンロードして、リムーバブル媒体をコンピュータに挿入し、リムーバブル媒体からソフトウェアを走らせることによって、ソフトウェアを用いることができる。ソフトウェアは、何台のコンピュータ上でソフトウェアを走らせるかには関わらず、1回しかコンピュータにインストールしてはならない場合もあり得る。また、ソフトウェアがインストールせずに走ることができるようにパッケージ化されており、使用の前にソフトウェアを全くインストールせず、後にそれをアンインストールする必要性を解消すれば、それが望ましいはずである。
リムーバブル媒体は、読み取り専用または読み取り/書き込み可能とすることができる。リムーバブル媒体が書き込み可能である場合、ソフトウェアを走らせる第1コンピュータは、インストール・ステップを実行し、リムーバブル媒体に対して必要なあらゆるコンフィギュレーション変更を行うことができる。このコンピュータまたは他のコンピュータ上で後にソフトウェアを走らせる際には、インストールを不要とすることができる。リムーバブル媒体が書き込み可能である場合、アプリケーションおよび作成されたまたはそれと関連のあるあらゆるファイルまたは状態も、任意にリムーバブル媒体に保存することができる。本発明がなければ走らせるためにはインストールしなければならないソフトウェアであっても、リムーバブル媒体からインストールして走らせる必要はなく、その市販状態(off-the-shelf state)から変更する必要はない。
リムーバブル媒体が読み取り専用である場合、インストール・ステップを必要としないような方法でソフトウェアをパッケージ化(任意に、後購入)することができる。あるいは、必要なコンフィギュレーション変更のみを行うようにインストール・ステップを短縮し、リムーバブル媒体上では、必要なコンフィギュレーション変更のみがソフトウェアに見えるような方法にする。即ち、インストールは、ソフトウェアをインストールするコンピュータには影響を及ぼさない(即ち、コンピュータ上のコンフィギュレーション設定は、ソフトウェアのインストールの結果、変化しない)。ユーザは、リムーバブル媒体を挿入したコンピュータの状態、または、リムーバブル媒体が挿入されておらずソフトウェアを走らせていない場合は、コンピュータが接続されていた状態を残す選択肢を有する。ソフトウェアをコンピュータ上にインストールすることなくアプリケーションを起動することができる環境を与えるサイロ(silo)のようなサンドボックス(sandbox)を作成することにより、リムーバブル媒体からソフトウェアを走らせる。リムーバブル媒体を取り出すとき、サンドボックスを削除し、アプリケーションのあらゆる残存物およびその状態をコンピュータから除去することができる。
サイロは、システム・ファイル・システムおよびシステム・レジストリの読み取り専用ビューを、リムーバブル媒体上のファイルおよびレジストリへのリード/ライト・アクセスと融合する。その結果、完全なオペレーティング・システムとして機能する隔離環境即ちサイロが得られる。サイロは、オペレーティング・システム・イメージの別個のインスタンスを有さない。
図面において、
図1は、本発明の形態を実施することができる計算環境の一例を示すブロック図である。 図2aは、本発明の実施形態の一部にしたがって、リムーバブル媒体からアプリケーションを走らせるシステムのブロック図である。 図2bは、本発明の実施形態の一部にしたがって、リムーバブル媒体からアプリケーションを走らせるシステムのブロック図である。 図2cは、本発明の実施形態の一部にしたがって、リムーバブル媒体からアプリケーションを走らせるシステムのブロック図である。 図3は、本発明の実施形態の一部にしたがって、リムーバブル媒体からアプリケーションを走らせる方法の流れ図である。
全体像
市販のソフトウェアには、インストール・ソフトウェアが付属するのが通例であり、このインストール・ソフトウェアを走らせなければアプリケーションを起動することはできない。通例、インストール・ソフトウェアは、ソフトウェアが走るコンピュータ上にファイルおよびデータをコピーする。また、インストール・ソフトウェアは、アプリケーションが走ることができるように、コンフィギュレーション設定やレジストリ値を追加または変更する場合もある。本発明の実施形態によれば、市販のソフトウェアをリムーバブル媒体から走らせることができ、ソフトウェアをマシンにインストールせず、市販のソフトウェアの修正も行わない。本発明の実施形態の一部では、アプリケーションを走らせた後におけるコンピュータの状態は、アプリケーションを走らせても不変である。即ち、アプリケーションが走っている間に生ずるいずれの状態変化も完全に一過性であり、コンピュータ上にある永続的(永久的または保存してある)ファイルには何の変化も生じない。本発明の実施形態の一部では、コンピュータ上にはインストールせずにリムーバブル媒体から走らせるアプリケーションの実行中に作成または変化したファイルを、リムーバブル媒体に保存する。本発明の実施形態の一部では、インストールしないアプリケーションの実行中に作成または修正したファイルを、コンピュータのファイル・システムの指定したエリアに保存する。
リムーバブル媒体は、リムーバブル・ディスク、CD ROM、DVD、USBキー、フラッシュ・メモリ・デバイス、フラッシュ・ドライブ、ペン・ドライブ、チップ・スティック、サム・ドライブ、リモート・ファイル・シェア、ネットワーク添付ストレージ、そして未だ知られていないまたは開発されていないようなその他のデバイスも含む。市販のソフトウェアを、インストールせずに走らせることができ、コンピュータ上にアプリケーション関連状態を残さないために、初期化の目的でインストール・ソフトウェアを1回走らせ、インストール・ソフトウェアによって設定される値をリムーバブル媒体上に保存する。このプロセスを、リムーバブル媒体のプロビジョニングと呼ぶ。リムーバブル媒体のプロビジョニングは、マスタを作成するために1回行えばよく、あるいは最初にリムーバブル媒体をいずれかのコンピュータに挿入するかまたは接続するときに行えばよい。あるいは、プロビジョニングは、リムーバブル媒体を最初に特定のコンピュータに挿入したときに行っても良い。アプリケーションを走らせるコンピュータにリムーバブル媒体を挿入すると、アプリケーション・サイロが作成される。アプリケーション・サイロに露出されるファイル・システムは、コンピュータのファイル・システムまたはその部分集合、およびリムーバブル媒体上のファイルの中にあるエントリ双方を含むビューである。アプリケーション・サイロに露出されるレジストリは、コンピュータのレジストリまたはその部分集合の中にあるエントリおよびリムーバブル媒体上のレジストリ値双方を含むビューである。つまり、アプリケーション・サイロは、アプリケーションにとっては正規のシステムのように機能する隔離実行環境として作用する。(例えば、アプリケーションが、WINDOWSオペレーティング・システムがインストールされているマシン上で走ることができるアプリケーションである場合、アプリケーション・サイロは、それがアプリケーションにとっては正規のWINDOWSシステムであるかのように機能する。)。サイロはコンピュータのファイル・システムおよびレジストリへの書き込みを制限するので、サイロ内において走るプロセスは、ファイル・システムおよびレジストリから選択した部分しか修正することができないが、オペレーティング・システムは、ファイル・システムおよびレジストリのサイロ特定ビューを、サイロ内で走るプロセスに供給するので、サイロにおいて走るプロセスは、これらがシステム・ファイル・システムおよびレジストリに対して完全なライト・アクセスを有すると「考える」。サイロは、オペレーティング・システムのそれ自体のインスタンスを有さない。
サイロは、オペレーティング・システム内部の隔離/収蔵(containment)メカニズムであり、コンピュータ上で走るプロセスの隔離に備える。サイロは、一部のファイルの共有を制御することを可能にし、サイロ内で走るプロセスのためにファイル・システムのビューを作成することにより、他のファイルへのアクセスを制限する。ビューは、サイロ内で走るプロセスには、1つのディレクトリのように見える。このディレクトリは、2つの物理的ファイル・システム・ディレクトリ、システム・ファイル・システム、およびリムーバブル媒体上にあるファイル・システム・ファイルの結合体である。即ち、アプリケーションに利用可能なファイルは、アプリケーションが「見る」ファイルによって左右され、サイロ内で走るアプリケーションが「見る」ファイル・システムは、システム・ファイル・システムとリムーバブル媒体上にあるファイル・システム・ファイルとを融合したビューである。
同様に、サイロは、サイロ内で走るプロセスに対するレジストリのビューを作成することによって、レジストリ内におけるエントリの共有、およびこれに対するアクセス制限を制御する。レジストリ・ビューは、サイロ内で走るプロセスには、1つのレジストリのように見える。このレジストリは、2つ以上の物理的レジストリ、システム・レジストリ、およびリムーバブル媒体上のレジストリの結合体である。
一旦アプリケーションをアプリケーション・サイロにおいて始動させたなら、システム・コンフィギュレーションおよび/またはシステム設定に対するあらゆる変更が、リムーバブル媒体上に存在し、通例リムーバブル媒体上のアプリケーションと関連がありこれに属する、これらのファイルの私用コピーに書き込まれる。任意に、システム・ファイル・システムのエリア(例えば、マイ・ドキュメント・ディレクトリ)へのアクセスを選択して、アプリケーションに与えることができる。アプリケーションが存在し、リムーバブル媒体をコンピュータから除去すると、サイロは削除される。システム・コンフィギュレーションおよび/またはシステム設定に対するいずれの変更も、リムーバブル媒体上におけるアプリケーション私用ストアに書き戻すことができ、あるいは破棄してもよい。
本発明の実施形態の一部では、リムーバブル媒体をコンピュータに挿入するとき、マシン上で走るアプリケーションの残りから囲い込んだ(sandboxed)即ち隔離したサイロにおいて、アプリケーションを走らせる。サンドボックスを作成するには、サイロを作成し、リムーバブル媒体上のレジストリ・エレメントをマシン・レジストリのリード・オンリ・ビューと融合し、リムーバブル媒体上のファイルをマシン・ファイル・システムのファイルのリード・オンリ部分集合と融合することによってファイル・システムのビューを作成する。コンピュータのレジストリまたはファイル・システムへの書き込みは禁止するとよい。代わりに、ビュー内に表わされているレジストリのファイルまたはエレメントの1つに対して書き込みを行おうとする場合、リムーバブル媒体上のファイルまたはレジストリ値に対して書き込みを行う。あるいは、コンピュータのスクラッチ・エリア(scratch area)に変更を書き込んでもよい。スクラッチ・エリアは、リムーバブル媒体を取り出すときに、破棄してもよく、通例は破棄する。
リムーバブル媒体上のアプリケーションとシステムとの間の相互作用は、アプリケーションに設けられるファイル・システムおよびレジストリ・ビューからの読み取りと、ファイル・システムから選択したエリア(例えば、マイ・ドキュメント)への書き込みに制限するとよい。アプリケーションは実際のシステム・レジストリには書き込むことができないので、アプリケーションの挙動は制限される。例えば、供給されてリムーバブル媒体上で走らせようとするアプリケーションがACROBATリーダであると仮定する。ACROBATリーダは、通例、INTERNET EXPLORER またはNETSCAPEのようなインターネット・ブラウザに拡張部を供給する。ACROBATをそれ自体のサイロで走らせるので、コンピュータ上に既にインストールされているインターネット・ブラウザからの拡張部としてACROBATをコールすることはない。何故なら、インターネット・ブラウザが見るマシン側のレジストリ・ビューは、ACROBATに供給されるものとは異なるからである。
前述の挙動により、本発明の実施形態は、今日キオスク(kiosk)において呈示されるような環境において用いるのに理想的となり、したがって、前述の実施形態に想定される用途の1つに、キオスク型環境における使用がある。キオスクは、公衆の場所に普通に見られ、コンピュータおよびモニタを公衆の使用のために提供することによって、コンピュータおよびインターネット関連サービスを提供する。リムーバブル媒体が本発明の実施形態によるソフトウェアを含む場合、ユーザは、キオスクのコンピュータ上でソフトウェアを実行することができ、キオスクのコンピュータ上に個人情報またはデータを残すことも、キオスクのオペレーティング・システムのコンフィギュレーションを修正することもない。
キオスクは、今日では、空港、観光スポット(tourist venue)(ホテル、レストラン、または公共交通機関等の情報を提供するため)、展示会、および小売店において普通に用いられている。例えば、一部の店舗内キオスクでは、買い物客がウェブ・サイトにリンクすることができ、顧客は、店舗内には実際には置けない品目をブラウズして、販売員が、製品仕様、保証情報、および価格比較のような、商品に関する情報にアクセスすることを可能にすることができる。別に想定した使用では、リムーバブル媒体をコンピュータに挿入したときに、キオスクに対する新たなログオンと類似した体験をユーザに呈示することができる。結果は、リムーバブル媒体に戻して保存することができる。任意に、ユーザ環境(ユーザの文書および設定等)以外でも、リムーバブル媒体に保存することができる。
本発明の別の実施形態では、アプリケーションは、ユーザ環境の一部のように見え、システムを拡張することができる。例えば、リムーバブル媒体上のACROBATリーダは、インターネット・ブラウザからコールすることが可能になる。これらの実施形態では、サイロを作成し、ビューを融合して供給した後に、アプリケーション特定アクションを走らせて、マシン上に必要なリンクを導入する。リンクは、マシン・レジストリに導入するキー値対の集合である。リムーバブル媒体を取り出すと、リンクは除去される。リンクを維持するコードを、媒体の挿入/取り出し時に走らせる宣言マニフェスト(declarative manifest)または特殊コードに記述することができる。
本発明の別の実施形態では、アプリケーションは、ユーザ環境の一部のように見え、システムを拡張することができるが、前述した1組のアクションの代わりに、インターネット・ブラウザのユーザ・インターフェース(シェル)部分をサイロにおいて再開する。リムーバブル媒体を挿入すると、プログラムのリストの中に新しいプログラムが現れる。新しいプログラムは、既存のプログラムに対する拡張部として作用することができ、シェル等の設定を変更することができるが、リムーバブル媒体を取り出すと、これらの設定は破棄される。
計算環境の一例
図1および以下の論述は、本発明を実施することができる、適した計算環境の端的な全体的説明を行うことを意図している。しかしながら、ハンドヘルド、携帯用、およびその他のあらゆる種類の計算機も、本発明との使用を想定している。以下では汎用コンピュータについて記載するが、これは一例に過ぎず、本発明は、ネットワーク・サーバ相互動作性および相互作用を有する薄いクライアントでも足りる。つまり、本発明は、クライアント・リソースが殆ど関わらないまたは最小であるネットワーク状ホスト・サービス(hosted service)の環境、例えば、クライアント・デバイスが単にブラウザまたはワールド・ワイド・ウェブへのインターフェースとしての役割を果たすに過ぎないネットワーク状環境においても実施することができる。
必須ではないが、本発明は、アプリケーション・プログラミング・インターフェース(API)を通じて実施することができる。APIは、開発者が用いるためにあり、および/またはネットワーク閲覧ソフトウェアに含まれている。ネットワーク閲覧ソフトウェアは、クライアント・ワークステーション、サーバ、またはその他のデバイスのような1つ以上のコンピュータによって実行するプログラム・モジュールのような、コンピュータ実行可能命令に関して記述されるのが一般的である。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含み、特定のタスクを実行するか、または特定の抽象的データ・タイプを実現する。通例、プログラム・モジュールの機能性は、種々の実施形態において、所望通りに組み合わせることや、分散することもできる。更に、本発明は、別のコンピュータ・システム・コンフィギュレーションでも実用可能であることは、当業者には認められよう。本発明と共に用いるのに適していると考えられるその他の周知の計算システム、環境および/またはコンフィギュレーションには、限定ではなく、パーソナル・コンピュータ(PC)、現金自動預け払い機、サーバ・コンピュータ、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ系システム、プログラマブル消費者用電子機器、ネットワークPC、ミニコンピュータ、メインフレーム・コンピュータ等が含まれる。また、本発明は、通信ネットワークまたはその他データ電送媒体を通じてリンクされているリモート処理デバイスがタスクを実行する分散型計算機環境においても実用可能である。分散型計算環境では、プログラム・モジュールは、メモリ記憶装置を含むローカルおよびリモート・コンピュータ記憶媒体双方に配することができる。
つまり、図1は、本発明を実施することができる計算システム環境100の一例を示すが、先に明確にしたように、計算システム環境100は、適した計算環境の一例に過ぎず、本発明の使用または機能性の範囲に関して、限定を示唆する意図は全くない。また、計算機環境100は、動作環境例100に示す構成要素のいずれの1つまたは組み合わせに関しても、何らかの依存性や必須要件を有するという解釈は行わないこととする。
図1を参照すると、本発明を実施するシステム例は、コンピュータ110の形態とした汎用計算機を含む。コンピュータ110の構成要素は、限定ではなく、演算装置120、システム・メモリ130、およびシステム・バス121を含むことができる。システム・バス121は、システム・メモリを含む種々のシステム構成要素を演算装置120に結合する。システム・バス121は、数種類のバス構造のいずれでもよく、メモリ・バスまたはメモリ・コントローラ、周辺バス、および種々のバス構造のいずれかを用いるローカル・バスを含む。限定ではなく一例として、このような構造には、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、改良ISA(EISA)バス、ビデオ電子規格連合(VESA)ローカル・バス、および(Mezzanine バスとしても知られている)周辺素子相互接続(PCI)バスが含まれる。
コンピュータ110は、通例、種々のコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピュータ110がアクセス可能な入手可能な媒体であればいずれでも可能であり、揮発性および不揮発性の双方、リムーバブル、および非リムーバブル媒体を含む。限定ではない一例をあげると、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体および通信媒体から成ると考えられる。コンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、またはその他のデータというような情報の格納のために、あらゆる方法または技術で実施される、揮発性および不揮発性の双方、リムーバブル、および非リムーバブル媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュ・メモリまたはその他のメモリ技術、CD−ROM、ディジタル・バーサタイル・ディスク(DVD)またはその他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたはその他の磁気記憶デバイス、あるいは所望の情報を格納するために用いることができしかもコンピュータ110がアクセス可能なその他のいずれの媒体も含むが、これらに限定されるのではない。通信媒体は、通例、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、またはその他のデータを、搬送波またはその他の移送機構のような変調データ信号において具体化し、あらゆる情報配信媒体を含む。「変調データ信号」という用語は、その特性集合の1つ以上が、情報を信号内にエンコードするようなやり方で、変化している信号を意味する。限定ではなく、一例として、通信媒体は、有線ネットワークまたは直接有線接続というような有線媒体、ならびに音響、無線周波数(RF)、赤外線、およびその他のワイヤレス媒体というようなワイヤレス媒体を含む。前述のいずれの組み合わせも、コンピュータ読み取り可能媒体の範囲に当然含まれるものとする。
システム・メモリ130は、ROM131およびRAM132のような揮発性および/または不揮発性メモリの形態で、コンピュータ記憶媒体を含む。基本入出力システム133(BIOS)は、起動中のように、コンピュータ110内のエレメント間におけるデータ転送を補助する基本的なルーチンを含み、通例ROM131内に格納されている。RAM132は、通例、演算装置120が直ちにアクセス可能であるデータおよび/またはプログラム・モジュール、および/または現在これによって処理されているデータおよび/またはプログラム・モジュールを収容する。一例として、そして限定ではなく、図1は、オペレーティング・システム134、アプリケーション・プログラム135、その他のプログラム・モジュール136、およびプログラム・データ137を示す。
また、コンピュータ110は、その他のリムーバブル/非リムーバブル揮発性/不揮発性コンピュータ記憶媒体も含むことができる。一例に過ぎないが、図1は、非リムーバブル不揮発性磁気媒体からの読み取りおよびこれへの書き込みを行なうハード・ディスク・ドライブ141、リムーバブル不揮発性磁気ディスク152からの読み取りおよびこれへの書き込みを行なう磁気ディスク・ドライブ151、ならびにCD ROMまたはその他の光媒体のようなリムーバブル不揮発性光ディスク156からの読み取りおよびこれへの書き込みを行なう光ディスク・ドライブ155を示す。動作環境の一例において使用可能なその他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体には、限定する訳ではないが、磁気テープ・カセット、フラッシュ・メモリ・カード、ディジタル・バーサタイル・ディスク、ディジタル・ビデオ・テープ、ソリッド・ステートRAM、ソリッド・ステートROM等が含まれる。ハード・ディスク・ドライブ141は、通例、インターフェース140のような非リムーバブル・メモリ・インターフェースを介してシステム・バス121に接続され、磁気ディスク・ドライバ151および光ディスク・ドライブ155は、通例、インターフェース150のようなリムーバブル・メモリ・インターフェースによって、システム・バス121に接続する。
先に論じ図1に示すドライブおよびそれらと連動するコンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、およびコンピュータ110のその他のデータを格納する。図1では、例えば、ハード・ディスク・ドライブ141は、オペレーティング・システム144、アプリケーション・プログラム145、その他のプログラム・モジュール146、およびプログラム・データ147を格納するように示されている。尚、これらの構成要素は、オペレーティング・システム134、アプリケーション・プログラム135、その他のプログラム・モジュール136、およびプログラム・データ137と同じでも異なっていても可能であることを記しておく。オペレーティング・システム144、アプリケーション・プログラム145、その他のプログラム・モジュール146、およびプログラム・データ147は、ここで、少なくともこれらが異なるコピーであることを示すために、異なる番号が与えられている。ユーザは、キーボード162、および一般にマウス、トラックボールまたはタッチ・パッドと呼ばれているポインティング・デバイス161によって、コマンドおよび情報をコンピュータ110に入力することができる。他の入力デバイス(図示せず)には、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナ等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、ユーザ入力インターフェース160を介して、演算装置120に接続されている。ユーザ入力インターフェース160は、システム・バス121に結合されているが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス(USB)のようなその他のインターフェースおよびバス構造によって接続することも可能である。
モニタ191またはその他の形式の表示装置も、ビデオ・インターフェース190のようなインターフェースを介して、システム・バス121に接続されている。Northbridgeのようなグラフィクス・インターフェース182も、システム・バス121に接続することができる。Northbridgeは、CPUまたはホスト処理ユニット120と通信するチップセットであり、加速グラフィクスポート(AGP)の通信責務を引き受ける。1つ以上のグラフィクス処理ユニット(GPU)184がグラフィクス・インターフェース182と通信することができる。これに関して、GPU184は一般にレジスタ・ストレージのようなオンチップ・メモリ・ストレージを含み、GPU184はビデオ・メモリ186と通信する。しかしながら、GPU184は、コプロセッサの一例に過ぎず、したがって、種々の協同処理デバイスをコンピュータ110内に含めることができる。また、モニタ191またはその他の形式のディスプレイ・デバイスも、ビデオ・インターフェース190のようなインターフェースを介して、システム・バス121に接続されている。一方、ビデオ・インターフェース190は、ビデオ・メモリ186と通信することができる。モニタ191に加えて、コンピュータは、スピーカ197およびプリンタ196のような、その他の周辺出力装置も含むことができ、これらは出力周辺インターフェース195を通じて接続することができる。
コンピュータ110は、リモート・コンピュータ180のような1つ以上のリモート・コンピュータへの論理接続を用いて、ネットワーク環境において動作することも可能である。リモート・コンピュータ180は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークPC、ピア・デバイス、またはその他の共通ネットワーク・ノードとすることができ、通例、コンピュータ110に関して先に説明したエレメントの多くまたは全てを含むが、図1にはメモリ記憶装置181のみを示す。図1に示す論理接続は、ローカル・エリア・ネットワーク(LAN)171およびワイド・エリア・ネットワーク(WAN)173を含むが、他のネットワークも含むことができる。このようなネットワーク環境は、事務所、企業規模のコンピュータ・ネットワーク、イントラネットおよびインターネットにおいては、一般的である。
LANネットワーク環境で用いる場合、コンピュータ110は、ネットワーク・インターフェースまたはアダプタ170を介してLAN171に接続する。WANネットワーク環境で用いる場合、コンピュータ110は、通例、モデム172、またはインターネットのようなWAN173を通じて通信を確立するその他の手段を含む。モデム172は、内蔵でも外付けでもよく、ユーザ入力インターフェース160またはその他の適切な機構を介してシステム・バス121に接続することができる。ネットワーク環境では、コンピュータ110に関して図示したプログラム・モジュール、またはその一部は、リモート・メモリ記憶装置に格納することもできる。一例として、そして限定ではなく、図1は、リモート・アプリケーション・プログラム185がメモリ素子181上に常駐するものとして示している。尚、図示のネットワーク接続は一例であり、コンピュータ間で通信リンクを確立する他の手段も使用可能であることは認められよう。
コンピュータ110またはその他のクライアント・デバイスは、コンピュータ・ネットワークの一部として展開できることは、当業者であれば認めることができよう。これに関して、本発明は、いずれの数のメモリまたは記憶ユニット、ならびにいずれの数の記憶ユニットまたはボリュームを跨って実行するいずれの数のアプリケーションおよびプロセスを有する、あらゆるコンピュータ・システムに関する。本発明は、ネットワーク環境において展開され、外部または内部ストレージを有するサーバ・コンピュータおよびクライアント・コンピュータを備えている環境にも適用することができる。また、本発明は、プログラミング言語機能性、解釈、および実行機能を有する、単体の計算機にも適用することができる。
リムーバブル媒体からのアプリケーションの実行
ファイル・システム・ディレクトリのアプリケーション特定ビューは、システム・ファイル・ディレクトリとリムーバブル媒体上のファイル・ディレクトリとを、サイロにおいて走るアプリケーションに露出する1つのアプリケーション特定ディレクトリに融合することによって、サイロが作成する。アプリケーション特定ディレクトリのシステム・ファイル・ディレクトリ部分の全て(または指定部分以外の全て)は、(アプリケーションにとって)読み取り専用とすることができる。リムーバブル媒体のファイル・ディレクトリから来たアプリケーション特定ファイル・ディレクトリの部分は、サイロにおいて走るアプリケーションに対して読み取り専用または書き込み可能に指定することができる。レジストリのアプリケーション特定ビューは、システム・レジストリおよびリムーバブル媒体レジストリを、サイロ内で走るアプリケーションに露出するアプリケーション特定レジストリに融合することによって、サイロが作成する。アプリケーション特定レジストリのシステム・レジストリ部分の全て(または指定部分以外の全て)は、(アプリケーションにとって)読み取り専用とすることができる。リムーバブル媒体のファイル・レジストリから来たアプリケーション特定ファイル・レジストリの部分は、サイロにおいて走るアプリケーションに対して読み取り専用または書き込み可能に指定することができる。
図2aから図2cは、コンピュータ上にインストールしていないアプリケーションを、コンピュータに挿入またはそれ以外の方法で接続したリムーバブル媒体から走らせるシステム200の実施形態を示す。システム200は、図1に関して先に説明したコンピュータ110のような、1台以上のコンピュータに常駐することができる。図2aは、リムーバブル媒体を挿入(またはそれ以外の方法で接続)する前のシステムを表す。図2bは、リムーバブル媒体をマシンに挿入している間のシステムを表し、図2cは、リムーバブル媒体を取り出した後のシステムを表す。図2aにおいて、WINDOWS、Linuxまたはその他のオペレーティング・システムのようなオペレーティング・システムが、オペレーティング・システム(OS)214で表されている。システム・ファイル・システムは、ファイル・システム202によって表されており、データ・ファイルまたはアプリケーション状態(マイ・ドキュメント・ディレクトリ204によって表されており、その中では多数のファイルが文書1204aおよび文書2 204b等で表されている)を含むことができる。ファイル・システム202は、プログラム・ファイル・ディレクトリ206の中に、プログラム1 206aおよびプログラム2 206bのような多数のプログラム・ファイルも含むことができる。レジストリ(特殊構造においてプログラム設定を格納するオペレーティング・システムのための)が、レジストリ208によって表されている。図2aでは、プログラム1 206aに対するプログラム設定はレジストリ・エントリ208aによって表されており、プログラム2 206bに対するプログラム設定はレジストリ・エントリ208bによって表されている等となっている。
リムーバブル媒体は、図2aではUSBキー212によって表されている。本発明の実施形態の一部では、USBキー212は、以下の内1つ以上を含む。マニフェスト212aによって表されている、前述のようなマニフェスト、コンピュータ110上にインストールせずに、USBキー上で走らせようとするアプリケーションが必要とするプログラム・ファイル(例えば、プログラム3 212c)を含む(通例小さいがその必要はない)プログラム・ファイル・ディレクトリ、アプリケーション、およびインストール・プログラムおよび/または後続のアプリケーションの実行によって発生するアプリケーションの状態が必要とするデータ・ファイルを表すデータ・ファイル(文書3 212bを含むマイ・ドキュメント・ディレクトリによって表されている)。USBキー・データ・ファイルおよびプログラム・ファイルを合わせて、USBキーのファイル・システム・ファイル212xを表す。加えて、リムーバブル媒体のレジストリが、プログラム3設定212dによって表されている。プロビジョニングの前では、文書3 212bおよびレジストリ設定212dは最小または空にするとよい。
図2bは、インストールしていないアプリケーションの実行中におけるコンピュータ110を示す。リムーバブル媒体(例えば、USBキー212)のコンピュータ110への挿入または接続時に、走らせようとするアプリケーション(例えば、プログラム3 212c)に対する囲い込み(sandboxed)実行環境を発生する。サイロ216を作成し、融合アプリケーション特定ディレクトリ218および融合アプリケーション特定レジストリ220を作成する。図2bから認められるであろうが、融合ディレクトリ218は、システム・ファイル・システム202およびリムーバブル媒体のファイル・システム・ファイル(文書3 212bおよびプログラム3 212c)双方からのエントリを互いに融合して含んでいる。同様に、融合レジストリ220は、システム・レジストリ208およびリムーバブル媒体レジストリ212d双方からのエントリを互いに融合して含んでいる。本発明の実施形態の一部では、サイロ216(プロセス222によって表す)において走っているアプリケーション(例えば、プログラム3)には1つの物理的ディレクトリのように見えるエンティティは、実際には、リンクによって作成される幻想(図2において破線で表す)であり、物理的には、仮想(メモリ内に格納されている)エンティティまたは物理的(安定記憶媒体上に存続する)エンティティのいずれとしても物理的には存在しない。実施形態の一部では、融合ファイル・システム・ディレクトリ218および融合レジストリ・ビュー220は、仮想ディレクトリである。プロセス222が実行するに連れて、レジストリ・エントリが変化する可能性があり、データ・ファイルが作成または更新される可能性がある。レジストリ・エントリまたは追加のレジストリ・エントリに対して変更を行った場合、あるいはデータ・ファイルに対する変更を行った場合、または追加のデータ・ファイルを作成した場合、これらの変更や追加は、任意に、リムーバブル媒体212に書き戻すことができる(即ち、例えば、USBキー212上の文書3 212bが更新され、あるいは新たなレジストリ・プログラム3の設定212dが更新される)。代わりに、変更は、アプリケーションが実行している間だけ存続してもよく(ビュー218および220において)、リムーバブル媒体を取り出すときに、変更および追加を破棄してもよい。本発明の実施形態の一部では、リムーバブル媒体に書き込むことに加えて、またはその代わりに、変更および追加を、システム・ファイル・システム/レジストリの指定エリアに対して行う。
図2cは、プロセス222が終了した後におけるコンピュータ110を表す。例えば、アプリケーションの実行によって生じた変化をリムーバブル媒体に書き戻す場合を仮定する。プログラム3の設定に対して変更を行ったと仮定する。新たなプログラム3の設定は、リムーバブル媒体上に存続させることができる(図2cにおいて新プログラム3設定212fで表されている)。文書3 212bは、アプリケーションの実行中に更新されたと仮定する。文書に対する変更は、リムーバブル媒体(図2cにおいて、更新文書3 212eとして表されている)上に存続させることができる。尚、行った変更および変更の存続は、サイロ・メカニズムによって行われる、即ち、アプリケーションには修正を加えない(例えば、それがサイロにおいて走っていることを理解するため)ことは認められよう。サイロ216を削除し、アプリケーション関連状態の全てをコンピュータ110から除去することができる。ファイル・システム202およびレジストリ208は、リムーバブル媒体から走らせたアプリケーション(例えば、プログラム3 212c)の実行によっても、変更が生じない。
本発明の別の実施形態では、ファイル・システムまたはレジストリの指定部分は、サイロにおいて走っているアプリケーションに対してリード/ライト・アクセスを可能にすることができる。例えば、アプリケーションに、システム・ファイル・システム202のマイ・ドキュメント・ディレクトリ204へのリード/ライト・アクセスを付与しておいてもよい。この場合、更新文書3 212eをマイ・ドキュメント・ディレクトリ204に書き込むことができる。同様に、新プログラム3設定212fも、図2cのシステム・レジストリ208に書き込むことができる。あるいは、他の選択肢によれば、更新したファイルおよびレジストリ値の全てを破棄してもよい。
図3は、コンピュータ上にアプリケーションをインストールせずに、リムーバブル媒体からアプリケーションを走らせる方法の流れ図である。実施形態の一部では、これを行う際に、前述のようなサイロ・メカニズムを用いる。ここで用いる場合、リムーバブル媒体とは、リムーバブル・ディスク、CD ROM、DVD、USBキー、フラッシュ・メモリ・デバイス、フラッシュ・ドライブ、ペン・ドライブ、チップ・スティック、サム・ドライブ、および未だ知られていないまたは開発されていないその他のこのような媒体を含む。ステップ302において、リムーバブル媒体をプロビジョニングする。リムーバブル媒体をプロビジョニングするとは、必要なエレメント全てをリムーバブル媒体上にパッケージ化して、リムーバブル媒体をコンピュータに挿入したときに、コンピュータ上にインストールすることなくアプリケーションを走らせることができるようにする(前述のように)ことを意味する。実施形態の一部では、ステップ302は、リムーバブル媒体をコンピュータに挿入する毎ではなく、リムーバブル媒体のマスタ・コピーを作成するために1回だけ走らせればよいようにしていることを想定している。あるいは、リムーバブル媒体を以前にコンピュータに挿入したことがあっても、プロビジョニングの一部は、リムーバブル媒体をそのコンピュータに挿入する毎に実行してもよい。更に別の実施形態では、プロビジョニングの一部は、リムーバブル媒体をコンピュータに(そのコンピュータにとって)最初に挿入するときにはいつでも実行することもできる。
プロビジョニングでは、コンピュータ上にインストールすることなくアプリケーションを走らせることを可能にするために必要な、追加のエレメントを作成しなければならない場合もある。市販のソフトウェアを、インストールせずに、そしてアプリケーション関連状態をコンピュータ上に残すことなく走らせることを可能にするためには、インストール・ソフトウェアを初期化の目的で1回走らせるとよく、インストール・ソフトウェアによって設定される値を、リムーバブル媒体上に保存するとよい。例えば、コンピュータ上で走らせるためにはインストールを必要とするアプリケーションを収容しているリムーバブル媒体は、今日では周知のように、アプリケーションを実行するために必要なプログラム・ファイル、アプリケーションをコンピュータ上にインストールするプログラム・ファイル、データ・ファイル、リンク、ショートカット等を含むのが通例である。対照的に、本発明の実施形態によれば、必要な設定および値を入手するためには、インストール・ソフトウェアを1回走らせればよい。これらの値は、リムーバブル媒体上に保存されている。インストール・ソフトウェア自体は、リムーバブル媒体上になくてもよい。加えて、コードをリムーバブル媒体上で供給してもよく、リムーバブル媒体からアプリケーションを最初に走らせるとき、またはリムーバブル媒体をコンピュータに挿入するときにはいつでも、走らせるようにしてもよい。このコードは、変数および値の初期化を実行することができる。これは、今日ではインストール・ソフトウェアによって実行されている。また、このコードは、アプリケーションが、それが走るコンピュータのハードウェアおよびソフトウェア特性に合わせて調節することを可能にすることもできる。加えて、リムーバブル媒体にマニフェストを備えてもよい。マニフェストは、レジストリの部分集合(即ち、アプリケーションが用いるまたはこれと関連のあるレジストリの一部)、およびファイル・システムの部分集合(即ち、アプリケーションが用いるまたはこれと関連のあるレジストリの一部)を記述することができる。マニフェストは、サイロにおいて走るプロセスに与えるアクセス属性を記述することもできる。
本発明の実施形態の一部では、一旦「マスタ」リムーバブル媒体を作成したなら、プロビジョニングしたリムーバブル媒体のコピーを更に生成する場合にのみコピーすればよい。したがって、プロビジョニングに伴う処理、あるいはプロビジョニングに伴う処理の一部を繰り返す必要はない。
304において、プロビジョニングしたリムーバブル媒体を、図1に関して先に説明したようなコンピュータに挿入する。アプリケーションを走らせようとするコンピュータに、プロビジョニングしたリムーバブル媒体を挿入する際、ユーザにはサンドボックスの内側で走らせる選択肢が与えられる。この選択肢を選択すると、マシン上へのインストールを行わずにアプリケーションを走らせる環境が作成される。この環境は、アプリケーションがマシン上にインストールされたかのように、アプリケーションには見えるような幻想を作り出す。即ち、ファイル、レジストリ・エントリ、変数値等、インストールされたアプリケーションが見ることを予期する全てが、インストールされていないアプリケーションに露出されるので、アプリケーションがマシン上にインストールされているかのように、アプリケーションには見える。本発明の実施形態の一部では、この幻想を作り出すには、サイロを作成し、このサイロがマシンの状態を、インストール・プログラムをプロビジョニング・ステップ(インストールされていないアプリケーションをリムーバブル媒体から最初に走らせたときに行われる)の間に走らせたときにアプリケーションが書いた全ての状態、またはインストールされていないアプリケーションを最後に走らせたときにそれによって作り出された状態と融合する。(以下で更に詳しく説明するが、アプリケーションを走らせるとき(即ち、その後の実行中)に生ずる全ての状態は、リムーバブル媒体上またはコンピュータのファイル・システムの指定エリアに戻され格納される。)アプリケーション・サイロに露出されるファイル・システムは、コンピュータのファイル・システムにおけるエントリとリムーバブル媒体上のファイルとの双方を含む融合ビューである。アプリケーション・サイロに露出されるレジストリは、コンピュータのレジストリにおけるエントリと、リムーバブル媒体上のレジストリ値との双方を含むビューである。つまり、アプリケーション・サイロは、隔離実行環境のように作用し、アプリケーションに対してそれ自体のオペレーティング・システムを有するがそれ自体のオペレーティング・システムのコピーを含まない完全なコンピュータ・システムのように機能する。(例えば、アプリケーションが、WINDOWSオペレーティング・システムがインストールされているマシン上で走ることができるアプリケーションである場合、アプリケーション・サイロは、そのアプリケーションにとって正規のWINDOWSシステムであるかのように機能するが、それ自体のWINDOWS OSイメージを有していない。)
サンドボックスの作成中に、ユーザは、サンドボックスの隔離固有性を指定する選択肢を有することができる。あるいは、サンドボックスの隔離固有性は、マニフェストのなか、またはリムーバブル媒体上に含まれる別個のサンドボックス定義ファイルの中に含まれるサンドボックス定義によって決定してもよい。想定される隔離固有性は、以下を含む。
システム・ファイルは全て読み取り専用である。
一部のシステム・ファイルは書き込み可能である。
一部のシステム・ファイルが書き込み可能である場合、システム書き込み可能ファイルまたはディレクトリの名称
レジストリ・エントリは読み取り専用である。
指定のレジストリ・エントリは書き込み可能である。
インストールされていないアプリケーションが作成または修正したファイルは、アプリケーション終了時に削除する。
インストールされていないアプリケーションが作成または修正したファイルは、リムーバブル媒体に保存する。
アプリケーションが書き込むファイル・システムの一部分を転送する(redirected)(例えば、リムーバブル媒体が読み取り可能である場合)。
ユーザ・データの一部は、リード専用アクセスに対してのみ隠し、露出されたリード/ライト・アクセスに対しては露出させることができる(例えば、あるゲームに対するサイロがユーザの私用データを見ることを防止することができ、あるいは税金用ソフトウェアに対するサイロは、ユーザの経理データ・ファイルに書き込むことを許すことができる)。サンドボックスの定義は、サイロが、仮想融合ファイル・システムおよびレジストリ・ビューを作成するために用いられ、これはサイロにおいて走るアプリケーションに露出される。
308において、本発明の実施形態の一部では、メニューを呈示して、以下の選択肢の内1つ以上を与える。コンピュータ上にインストールされていないアプリケーションをサンドボックスにおいて走らせる準備をする、コンピュータ上にインストールされていないアプリケーションをサンドボックス内部で実行する、またはコンピュータ上にインストールされているアプリケーションをリムーバブル媒体上で走らせる。第1の選択肢を選択するのは、リムーバブル媒体上にある新しいアプリケーションをサンドボックスにおいて最初に走らせようとするときである。第2の選択肢は、アプリケーションをその後に走らせるときに選択することができる。最後の選択肢では、マシン上に既にインストールされているアプリケーションを従来の(既知の)方法でユーザが走らせることができるが、状態、ファイル、レジストリ値等を、システム状態、システム・ファイル等の代わりに、リムーバブル媒体に書き戻すことができる。サンドボックスにおけるアプリケーションの実行中、状態、ファイル、レジストリ・エントリ等は、リムーバブル媒体上で更新する。310において、実行が完了した後、サンドボックスを削除する。サンドボックスの削除により、サイロや、アプリケーションの実行によって作成されたいずれの状態も削除される。312において、リムーバブル媒体を取り出す。
ここに記載した種々の技法は、ハードウェアまたはソフトウェア、あるいは、該当するのであれば、双方の組み合わせと関連付けて実施することができる。つまり、本発明の実施形態の方法および装置、あるいはそのある形態または部分は、フロッピ・ディスケット、CD−ROM、ハード・ドライブ、あるいはその他のあらゆる機械読み取り可能記憶媒体のような、有形媒体内に具体化したプログラム・コード(即ち、命令)の形態をなすことができ、プログラム・コードをコンピュータのような機械にロードしこれによって実行すると、機械は、本発明を実用化する装置となる。プログラマブル・コンピュータ上におけるプログラム・コードの実行の場合、計算機は、一般に、プロセッサ、当該プロセッサによる読み取り可能な記憶媒体(揮発性および不揮発性メモリ、および/または記憶エレメントを含む)、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスを含む。例えば、データ処理API等の使用によって、本発明のドメイン特定プログラミング・モデルの作成および/または実施を利用することができる1つ以上のプログラムは、好ましくは、上位手続き型またはオブジェクト指向プログラミング言語で実施し、コンピュータ・システムと通信する。しかしながら、プログラムは、望ましければ、アセンブリまたは機械語で実施することもできる。いずれの場合でも、言語は、コンパイル型またはインタプリタ型言語とすることができ、あるいはハードウェア実現例と組み合わせることもできる。
以上、種々の図の好適な実施形態と関連付けて、本発明について説明したが、本発明と同じ機能を実行するために、それから逸脱することなく、他の同様の実施形態を用いることや、記載した実施形態に対して変更や追加を行うことができることは言うまでもない。したがって、本発明は、いずれの1つの実施形態にも限定されることはなく、逆に、添付した特許請求の範囲の広さおよび範囲で解釈して然るべきである。

Claims (8)

  1. コンピュータでアプリケーションを、該アプリケーションのファイルを格納したリムーバブル媒体から走らせるシステムであって、前記コンピュータは、システム・ファイル・システムとシステム・レジストリとを有し、前記リムーバブル媒体には、リムーバブル媒体ファイル・システムとリムーバブル媒体レジストリとが格納され、前記システムが、
    プロセッサと、
    オペレーティング・システムと、
    を含み、
    前記オペレーティング・システムは前記プロセッサに、
    前記リムーバブル媒体の接続に応答してサイロを前記コンピュータにおいて作成することにより前記コンピュータに前記アプリケーションをインストールすることなく前記コンピュータ上で前記アプリケーションを実行できるようにさせ、前記サイロは、融合ディレクトリと融合レジストリとを含み、前記融合ディレクトリは、前記システム・ファイル・システムのエントリと前記リムーバブル媒体ファイル・システムのエントリとを含み、前記融合レジストリは、前記システム・レジストリのエントリと前記リムーバブル媒体レジストリのエントリとを含み前記サイロは、前記システム・ファイル・システムのディレクトリ前記リムーバブル媒体ファイル・システムのディレクトリを融合した融合ビューを提供して、前記システム・ファイル・システムの前記ディレクトリへのリード専用のアクセスと前記リムーバブル媒体ファイル・システムの前記ディレクトリへのリード/ライト・アクセスとを可能にし、
    前記サイロにおいて走る前記アプリケーションに対して、前記融合ビューを呈示させ、前記融合ビューへの書込動作が、前記コンピュータではなく前記リムーバブル媒体に対し実行させ、
    前記アプリケーションが終了するとき、前記コンピュータにおける前記サイロを削除させる、
    システム。
  2. 無修正の市販のアプリケーションをコンピュータで、前記アプリケーションのファイルを格納したリムーバブル媒体から走らせる、コンピュータにより実行される方法であって、前記コンピュータは、システム・ファイル・システムとシステム・レジストリとを有し、前記リムーバブル媒体には、リムーバブル媒体ファイル・システムとリムーバブル媒体レジストリとが格納され、前記方法が、
    前記コンピュータが、前記コンピュータへの前記リムーバブル媒体の挿入に応答して前記コンピュータにおいてサイロを作成することにより、前記アプリケーションを前記コンピュータにインストールすることなく前記アプリケーションを前記コンピュータで実行できるようにするステップであって、前記サイロは、融合ディレクトリと融合レジストリとを含み、前記融合ディレクトリは、前記システム・ファイル・システムのエントリと前記リムーバブル媒体ファイル・システムのエントリとを含み、前記融合レジストリは、前記システム・レジストリのエントリと前記リムーバブル媒体の前記リムーバブル媒体レジストリのエントリとを含み前記サイロは、前記システム・ファイル・システムのディレクトリ前記リムーバブル媒体ファイル・システムのディレクトリを融合した融合ビューを提供して、前記システム・ファイル・システムの前記ディレクトリへのリード専用のアクセスと前記リムーバブル媒体ファイル・システムの前記ディレクトリへのリード/ライト・アクセスとを可能にする、ステップと、
    前記コンピュータが、前記サイロを介して、該サイロにおいて走る前記アプリケーションに対して、前記融合ビューを呈示するステップと、
    前記コンピュータが、前記融合ビューへの書込動作を、前記コンピュータではなく前記リムーバブル媒体に対し実行するステップと、
    前記コンピュータが、前記アプリケーションが終了するとき、前記サイロを削除するステップと、
    を含む方法。
  3. 請求項2記載の方法において、前記システム・ファイル・システムのディレクトリの一部は、前記サイロにおいて走る前記アプリケーションに対して読み取り/書き込み可能に指定することができる、方法。
  4. 請求項2記載の方法において、前記コンピュータは、プログラム設定の変更を、前記リムーバブル媒体レジストリの指定エリアに存続させる、方法。
  5. 請求項2記載の方法において、前記システム・ファイル・システムの前記ディレクトリに対する前記アプリケーションに利用可能なアクセスの度合いは、ユーザが指定可能である、方法。
  6. 無修正の市販のアプリケーションをコンピュータで、前記アプリケーションのファイルを格納したリムーバブル媒体から走らせるためのコンピュータ読み取り可能記憶媒体であって、前記コンピュータは、システム・ファイル・システムとシステム・システム・コンフィギュレーション設定とを有し、前記リムーバブル媒体には、リムーバブル媒体ファイル・システムとリムーバブル媒体システム・コンフィギュレーション設定とが格納され、前記コンピュータ読み取り可能記憶媒体が命令を格納しており、該命令が、前記コンピュータで実行されると、前記コンピュータに、
    前記コンピュータへの前記リムーバブル媒体の挿入に応答して前記コンピュータにおいてサイロを作成することにより、前記アプリケーションを前記コンピュータにインストールすることなく前記アプリケーションを前記コンピュータで実行できるようにするステップであって、前記サイロは、融合ディレクトリと融合システム・コンフィギュレーション設定とを含み、前記融合ディレクトリは、前記システム・ファイル・システムのエントリと前記リムーバブル媒体ファイル・システムのエントリとを含み、前記融合システム・コンフィギュレーション設定は、前記システム・システム・コンフィギュレーション設定のエントリと前記リムーバブル媒体システム・コンフィギュレーション設定のエントリとを含み前記サイロは、前記システム・ファイル・システムのディレクトリ前記前記リムーバブル媒体ファイル・システムのディレクトリを融合した融合ビューを提供して、前記システム・ファイル・システムの前記ディレクトリへのリード専用のアクセスと前記リムーバブル媒体ファイル・システムの前記ディレクトリへのリード/ライト・アクセスとを可能にする、ステップと、
    前記サイロを介して、該サイロにおいて走る前記アプリケーションに対して、前記融合ビューを呈示するステップと、
    前記融合ビューへの書込動作を、前記コンピュータではなく前記リムーバブル媒体に対し実行するステップと、
    前記アプリケーションが終了するとき、前記サイロを削除するステップと、
    を実行させる、コンピュータ読み取り可能記憶媒体。
  7. 請求項6記載のコンピュータ読み取り可能記憶媒体であって、前記システム・ファイル・システムの前記ディレクトリの一部は、前記サイロにおいて走る前記アプリケーションに対して読み取り/書き込み可能に指定することができる、コンピュータ読み取り可能記憶媒体。
  8. 請求項6記載のコンピュータ読み取り可能記憶媒体であって、前記命令は前記コンピュータに、プログラム設定の変更を、前記リムーバブル媒体システム・コンフィギュレーション設定の指定エリアに存続させるステップを実行させる、コンピュータ読み取り可能記憶媒体。
JP2013149349A 2006-06-30 2013-07-18 アプリケーションをリムーバブル媒体から走らせる方法、システムおよびコンピュータ読み取り可能記憶媒体 Expired - Fee Related JP5628387B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/479,456 US20080005472A1 (en) 2006-06-30 2006-06-30 Running applications from removable media
US11/479,456 2006-06-30

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2009518202A Division JP2009543200A (ja) 2006-06-30 2007-06-25 リムーバブル媒体からのアプリケーション実行

Publications (2)

Publication Number Publication Date
JP2013232224A JP2013232224A (ja) 2013-11-14
JP5628387B2 true JP5628387B2 (ja) 2014-11-19

Family

ID=38878222

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2009518202A Withdrawn JP2009543200A (ja) 2006-06-30 2007-06-25 リムーバブル媒体からのアプリケーション実行
JP2013149349A Expired - Fee Related JP5628387B2 (ja) 2006-06-30 2013-07-18 アプリケーションをリムーバブル媒体から走らせる方法、システムおよびコンピュータ読み取り可能記憶媒体

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2009518202A Withdrawn JP2009543200A (ja) 2006-06-30 2007-06-25 リムーバブル媒体からのアプリケーション実行

Country Status (9)

Country Link
US (1) US20080005472A1 (ja)
EP (1) EP2035956A4 (ja)
JP (2) JP2009543200A (ja)
KR (1) KR20090034834A (ja)
CN (1) CN101479721A (ja)
BR (1) BRPI0713789A8 (ja)
MX (1) MX2008016353A (ja)
RU (1) RU2446452C2 (ja)
WO (1) WO2008005219A2 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8099734B2 (en) * 2007-09-06 2012-01-17 Kabushiki Kaisha Toshiba Portable system and method for soft reset of computer devices
JP2009266117A (ja) * 2008-04-28 2009-11-12 Hitachi Software Eng Co Ltd Usbメモリ装置、及び、それを用いたプラグインアプリケーションシステム
US8448255B2 (en) * 2008-07-14 2013-05-21 Apple Inc. Secure file processing
US20100192224A1 (en) * 2009-01-26 2010-07-29 International Business Machines Corporation Sandbox web navigation
US9588803B2 (en) 2009-05-11 2017-03-07 Microsoft Technology Licensing, Llc Executing native-code applications in a browser
US9052919B2 (en) * 2010-01-15 2015-06-09 Apple Inc. Specialized network fileserver
CN102222007A (zh) * 2010-04-14 2011-10-19 宏碁股份有限公司 应用软件的安装方法
US8756617B1 (en) 2010-05-18 2014-06-17 Google Inc. Schema validation for secure development of browser extensions
US8943550B2 (en) 2010-05-28 2015-01-27 Apple Inc. File system access for one or more sandboxed applications
US8473961B2 (en) 2011-01-14 2013-06-25 Apple Inc. Methods to generate security profile for restricting resources used by a program based on entitlements of the program
US9323921B2 (en) * 2010-07-13 2016-04-26 Microsoft Technology Licensing, Llc Ultra-low cost sandboxing for application appliances
JP5335737B2 (ja) * 2010-07-23 2013-11-06 レノボ・シンガポール・プライベート・リミテッド 動作環境の変更が可能なコンピュータ
US8959451B2 (en) * 2010-09-24 2015-02-17 Blackberry Limited Launching an application based on data classification
US8903705B2 (en) 2010-12-17 2014-12-02 Microsoft Corporation Application compatibility shims for minimal client computers
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US9389933B2 (en) 2011-12-12 2016-07-12 Microsoft Technology Licensing, Llc Facilitating system service request interactions for hardware-protected applications
US9413538B2 (en) 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
CN102567078B (zh) * 2011-12-28 2014-12-24 华为数字技术(成都)有限公司 一种注册表虚拟化方法及装置
CN102646042B (zh) * 2012-02-28 2014-12-03 华为终端有限公司 一种应用程序数据存储的方法及终端设备
CN102890705A (zh) * 2012-08-24 2013-01-23 东莞宇龙通信科技有限公司 一种存储介质的管理方法、系统及移动终端
US10855771B1 (en) 2013-04-29 2020-12-01 Kolkin Corp. Systems and methods for ad hoc data sharing
US9811364B2 (en) * 2013-06-13 2017-11-07 Microsoft Technology Licensing, Llc Thread operation across virtualization contexts
US9307317B2 (en) 2014-08-29 2016-04-05 Coban Technologies, Inc. Wireless programmable microphone apparatus and system for integrated surveillance system devices
US9225527B1 (en) 2014-08-29 2015-12-29 Coban Technologies, Inc. Hidden plug-in storage drive for data integrity
WO2016046621A2 (en) 2014-09-24 2016-03-31 Ascendo Medienagentur Ag Method of preparing a beverage and beverage preparation unit
US9575740B2 (en) * 2015-01-21 2017-02-21 Samsung Electronics Co., Ltd. Apparatus and method for running multiple instances of a same application in mobile devices
US10165171B2 (en) 2016-01-22 2018-12-25 Coban Technologies, Inc. Systems, apparatuses, and methods for controlling audiovisual apparatuses
US10152858B2 (en) 2016-05-09 2018-12-11 Coban Technologies, Inc. Systems, apparatuses and methods for triggering actions based on data capture and characterization
US10370102B2 (en) 2016-05-09 2019-08-06 Coban Technologies, Inc. Systems, apparatuses and methods for unmanned aerial vehicle
US10789840B2 (en) 2016-05-09 2020-09-29 Coban Technologies, Inc. Systems, apparatuses and methods for detecting driving behavior and triggering actions based on detected driving behavior
US11561927B1 (en) * 2017-06-26 2023-01-24 Amazon Technologies, Inc. Migrating data objects from a distributed data store to a different data store using portable storage devices

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822784A (en) * 1993-03-19 1998-10-13 Intel Corporation Mechanism supporting execute in place read only memory applications located on removable computer cards
US5732266A (en) * 1994-09-02 1998-03-24 Compaq Computer Corporation Storage medium storing application programs and application initialization files and automatic launching of computer applications stored on the storage medium
US5822763A (en) * 1996-04-19 1998-10-13 Ibm Corporation Cache coherence protocol for reducing the effects of false sharing in non-bus-based shared-memory multiprocessors
WO1998024025A1 (en) * 1996-11-27 1998-06-04 1Vision Software, L.L.C. File directory and file navigation system
US6119212A (en) * 1997-04-23 2000-09-12 Advanced Micro Devices, Inc. Root size decrease on a UNIX based computer system
US6117186A (en) * 1998-01-15 2000-09-12 Dvp Media Pty Ltd. System and method for easy loading of CD-ROM computer software without installation process
US6272333B1 (en) * 1998-06-12 2001-08-07 Motorola, Inc. Method and apparatus in a wireless communication system for controlling a delivery of data
US6347331B1 (en) * 1999-04-26 2002-02-12 International Business Machines Corporation Method and apparatus to update a windows registry from a hetrogeneous server
US6529992B1 (en) * 1999-07-26 2003-03-04 Iomega Corporation Self-contained application disk for automatically launching application software or starting devices and peripherals
KR20050013671A (ko) * 1999-10-18 2005-02-04 인텔 코오퍼레이션 착탈가능한 대용량 저장 매체로부터 컨텐츠의 안전한 자동재생을 위한 방법 및 장치
JP2002041247A (ja) * 2000-07-28 2002-02-08 Nec Corp コンピュータシステムおよびusbメモリ装置
US6842770B1 (en) * 2000-08-18 2005-01-11 Apple Computer, Inc. Method and system for seamlessly accessing remotely stored files
US6681324B1 (en) * 2000-09-07 2004-01-20 Cisco Technology, Inc. Application appliance enabling operating system and applications to run from a CDROM by determining local configuration and license status
WO2002063503A2 (en) * 2000-11-24 2002-08-15 Howtek, Inc. System and method for storing and retrieving medical images and records
RU2202122C2 (ru) * 2001-01-03 2003-04-10 Щеглов Андрей Юрьевич Система контроля доступа к запускаемым процессам (программам)
KR20030003611A (ko) * 2001-07-03 2003-01-10 (주)싸이버뱅크 대용량 메모리를 가지는 휴대형 단말 장치 및 그 동작 방법
JP4222590B2 (ja) * 2001-07-18 2009-02-12 株式会社東芝 サーバ・システム、クライアント・システム、ソフトウェアストリーミング方法及びプログラム
JP2003122581A (ja) * 2001-10-17 2003-04-25 Casio Comput Co Ltd 情報処理装置、アプリケーションプログラム起動方法及びシステムプログラム
US20030163610A1 (en) * 2002-02-25 2003-08-28 Stevens Curtis E. Computer systems, software and methods for emulating a non-volatile removable media device using material on a mass storage device
US7246352B2 (en) * 2002-07-24 2007-07-17 International Business Machines Corporation System for generating a virtual map to a plurality of files necessary for installing software from multiple networked locations
US20050240756A1 (en) * 2003-01-12 2005-10-27 Yaron Mayer System and method for improving the efficiency, comfort, and/or reliability in Operating Systems, such as for example Windows.
US20050071378A1 (en) * 2003-09-30 2005-03-31 Smith Alan G. Method of storing applications on removable storage
US7676800B2 (en) * 2004-02-20 2010-03-09 Intel Corporation Method and apparatus for reducing the storage overhead of portable executable (PE) images
US7908653B2 (en) * 2004-06-29 2011-03-15 Intel Corporation Method of improving computer security through sandboxing
CA2581311C (en) * 2004-09-30 2015-03-24 Citrix Systems, Inc. Method and apparatus for moving processes between isolation environments
KR100654675B1 (ko) * 2004-12-04 2006-12-08 소프트온넷(주) 호스트 컴퓨터상에서 응용프로그램 수행을 위한 휴대용디지털 저장장치 시스템 및 방법
US7712086B2 (en) * 2004-12-15 2010-05-04 Microsoft Corporation Portable applications
US7640415B2 (en) * 2005-03-25 2009-12-29 Hitachi, Ltd. Storage system having a first computer, a second computer connected to the first computer via a network, and a storage device system that is accessed by the second computer
US8442996B2 (en) * 2005-04-12 2013-05-14 Enrico Maim Methods for granting access to resources modifiable by users in a computer environment, and resources structured therefore
US8117608B1 (en) * 2005-09-03 2012-02-14 Ringcube Technologies, Inc. System and method of providing mobility to personal computers
US7782564B2 (en) * 2006-08-03 2010-08-24 International Business Machines Corporation Methods for enabling functionality in multi-modal data storage systems
SG141267A1 (en) * 2006-09-12 2008-04-28 Flapp Technologies Pte Ltd I A method for executing applications from a portable storage device
KR101489301B1 (ko) * 2008-03-20 2015-02-06 삼성전자주식회사 가상환경 시스템 및 그의 구동방법
US8312547B1 (en) * 2008-03-31 2012-11-13 Symantec Corporation Anti-malware scanning in a portable application virtualized environment
US8296264B1 (en) * 2008-04-01 2012-10-23 Acronis International Gmbh Method and system for file-level continuous data protection
US8341130B2 (en) * 2009-08-12 2012-12-25 International Business Machines Corporation Scalable file management for a shared file system

Also Published As

Publication number Publication date
EP2035956A4 (en) 2009-11-04
BRPI0713789A2 (pt) 2012-10-30
WO2008005219A3 (en) 2008-02-21
RU2446452C2 (ru) 2012-03-27
KR20090034834A (ko) 2009-04-08
US20080005472A1 (en) 2008-01-03
BRPI0713789A8 (pt) 2017-01-17
RU2008152429A (ru) 2010-07-10
EP2035956A2 (en) 2009-03-18
JP2013232224A (ja) 2013-11-14
MX2008016353A (es) 2009-01-16
CN101479721A (zh) 2009-07-08
JP2009543200A (ja) 2009-12-03
WO2008005219A2 (en) 2008-01-10

Similar Documents

Publication Publication Date Title
JP5628387B2 (ja) アプリケーションをリムーバブル媒体から走らせる方法、システムおよびコンピュータ読み取り可能記憶媒体
US7975236B1 (en) Seamless integration of non-native application into host operating system
US6564318B1 (en) Method and apparatus for execution of an application during computer pre-boot operation and post-boot under normal OS control
US6078951A (en) Method and apparatus for automating a software delivery system by locating, downloading, installing, and upgrading of viewer software
US7788701B1 (en) Content transfer restriction system for personal internet communicator
JP5301764B2 (ja) ポータブルアプリケーション
US7478335B2 (en) Smart graphical components
WO2016155388A1 (zh) 应用安装、运行方法及装置
US8745601B1 (en) Methods and systems for using data structures for operating systems
US7117448B2 (en) System and method for determining desktop functionality based on workstation and user roles
CN112256286B (zh) 一种应用运行的方法、装置及计算机存储介质
JP2000112718A (ja) アクティブデスクトップ用の工場インスト―ルデスクトップコンポ―ネント
JP2003099268A (ja) 選択された機能を有するオペレーティングシステムを作成し使用する方法及びシステム
US7203905B2 (en) System and method for platform independent desktop lockdown
US7310775B2 (en) System and method for restoring desktop components using distributed desktop packages
US9038071B2 (en) Operating system context isolation of application execution
US9069777B2 (en) Persistent folder associations for personal internet communicator
WO2004055669A2 (en) System and method for restoring desktop components using distributed desktop packages
WO2022228236A1 (zh) 控制安卓app的方法、装置及终端设备
US10521592B2 (en) Application translocation
von Oven et al. Horizon Enterprise Edition
Karp Windows 7 Annoyances: Tips, Secrets, and Solutions
McFedries The Unauthorized Guide to Windows 98
Guide DataView Getting Started Guide
AHMAD LINE OF MICROSOFT WINDOWS OPERATING SYSTEMS

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140502

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140902

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141001

R150 Certificate of patent or registration of utility model

Ref document number: 5628387

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees