(57)【要約】【課題】ユーザがコンピュータからコンピュータへと移動するために、およびユーザの望むプログラムと、オプションとしてユーザの望むデータとを容易に使用するために改善された方法を提供する。【解決手段】ポータブルストレージデバイスは、インターフェイスおよび１つまたは複数のフラッシュメモリを含む。１つまたは複数のフラッシュメモリは、ホストコンピュータによって実行することができる１つまたは複数の実行可能ファイルを格納し、１つまたは複数の実行可能ファイルが環境設定にアクセスするための命令を含む場合でさえ、ホストコンピュータ上のいかなる環境設定を変更することもなく、デバイスがこのホストコンピュータに結合される。加えて、アプリケーションは、アクティベーションプロセス中にポータブルストレージデバイスにバインドされる。【選択図】図２
2006172449.tif 000002
【特許請求の範囲】
【請求項１】
インターフェイスと、
ホストコンピュータによって実行することができる１つまたは複数の実行可能ファイルを格納する１つまたは複数のストレージ要素と
を備え、および前記１つまたは複数の実行可能ファイルが環境設定にアクセスするための命令を含む場合でさえ、前記ホストコンピュータ上の環境設定を変更することなく、前記ホストコンピュータに結合されることを特徴とするポータブルストレージデバイス。
【請求項２】
前記ホストコンピュータ上の環境設定は、前記ホストコンピュータのシステムレジストリにおける情報を有することを特徴とする請求項１に記載のポータブルストレージデバイス。
【請求項３】
前記ホストコンピュータ上の環境設定は、前記ホストコンピュータのローカルプロファイルにおける情報を有することを特徴とする請求項１に記載のポータブルストレージデバイス。
【請求項４】
前記ホストコンピュータ上の環境設定にアクセスするための命令は、環境設定を書き込むための命令を含むことを特徴とする請求項１に記載のポータブルストレージデバイス。
【請求項５】
前記１つまたは複数の実行可能ファイルは、前記ホストコンピュータ上の環境設定にアクセスするための命令を有し、ならびに前記ホストコンピュータ上の環境設定にアクセスするための要求を受信するためのインターミディアリを有し、および前記要求に応答して、前記ホストコンピュータ上の前記環境設定ではなく前記１つまたは複数のストレージ要素における設定にアクセスすることを特徴とする請求項１に記載のポータブルストレージデバイス。
【請求項６】
前記１つまたは複数の実行可能ファイルの命令を実行するためのプロセッサを含まないことを特徴とする請求項１に記載のポータブルストレージデバイス。
【請求項７】
前記１つまたは複数のストレージ要素は、前記１つまたは複数の実行可能ファイルを実行することにより実稼動することができるアプリケーションを識別するユーザインターフェイスを提示するために、前記ホストコンピュータによってアクセスされる自動実行モジュールを格納することを特徴とする請求項１に記載のポータブルストレージデバイス。
【請求項８】
前記自動実行モジュールは、前記ユーザインターフェイスの一部として、前記アプリケーションの１つに関連付けられたアイコンを、前記１つのアプリケーションに関連付けられた型のデータファイルについて提示し、および前記１つまたは複数のストレージ要素は、前記データファイルを格納することを特徴とする請求項７に記載のポータブルストレージデバイス。
【請求項９】
前記自動実行モジュールは、前記１つのアプリケーションに関連付けられたファイルがユーザによって選択されると、前記アプリケーションの１つを自動的に実行することを特徴とする請求項７に記載のポータブルストレージデバイス。
【請求項１０】
前記１つまたは複数のストレージ要素は、複数のデータファイルを格納し、前記複数のデータファイルのいくつかは、前記１つまたは複数の実行可能ファイルに関連付けられ、および前記複数のデータファイルのいくつかは、前記１つまたは複数の実行可能ファイルのいずれにも関連付けられないことを特徴とする請求項１に記載のポータブルストレージデバイス。
【請求項１１】
前記１つまたは複数の実行可能ファイルは、前記ポータブルストレージデバイスにバインドされるアプリケーションを実稼動するために実行されることを特徴とする請求項１に記載のポータブルストレージデバイス。
【請求項１２】
前記１つまたは複数のストレージ要素は、１つまたは複数のフラッシュメモリを含むことを特徴とする請求項１に記載のポータブルストレージデバイス。
【請求項１３】
ユニバーサルシリアルバス（ＵＳＢ）フラッシュメモリデバイスを含むことを特徴とする請求項１２に記載のポータブルストレージデバイス。
【請求項１４】
アプリケーションを実稼動するために実行される１つまたは複数の実行可能ファイルを格納するポータブルストレージデバイスに前記アプリケーションをバインドするステップを備えたことを特徴とする方法。
【請求項１５】
前記ポータブルストレージデバイスは、ユニバーサルシリアルバス（ＵＳＢ）デバイスを含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記ポータブルストレージデバイスは、フラッシュメモリデバイスを含むことを特徴とする請求項１４に記載の方法。
【請求項１７】
前記バインドするステップは、前記アプリケーションをアクティベートするステップの一部として実行されることを特徴とする請求項１４に記載の方法。
【請求項１８】
前記ポータブルストレージデバイス上で、前記アプリケーションがアクティベートされているという表示を保存するステップをさらに備えたことを特徴とする請求項１４に記載の方法。
【請求項１９】
前記アプリケーションが前記ポータブルストレージデバイスにバインドされるという記録を保持するステップをさらに備えたことを特徴とする請求項１４に記載の方法。
【請求項２０】
コンピュータに結合されたポータブルストレージデバイス上に格納されたポータブルアプリケーションを識別するステップと、
前記コンピュータ上の環境設定を変更することなく、前記ポータブルアプリケーションを実行するステップと
を備えたコンピュータにおいて実装される方法。
【請求項２１】
前記ポータブルストレージデバイス上に格納された複数のポータブルアプリケーションを識別するユーザインターフェイスを提示するステップと、
前記ポータブルアプリケーションが環境設定にアクセスするための１つまたは複数の要求を含む場合でさえ、前記コンピュータ上の環境設定を変更することなく実行される前記複数のポータブルアプリケーションのうちの１つのユーザ選択を受信するステップと
をさらに備えたことを特徴とする請求項２０に記載の方法。
【請求項２２】
前記コンピュータ上の前記環境設定は、前記コンピュータのシステムレジストリにおける情報を有することを特徴とする請求項２０に記載の方法。
【請求項２３】
前記ポータブルアプリケーションを実行するステップは、追加のドライバが前記コンピュータ上にインストールされることを必要とせずに、前記ポータブルアプリケーションを実行するステップを含むことを特徴とする請求項２０に記載の方法。
【請求項２４】
コンピュータに結合されたポータブルストレージデバイス上に、ポータブルアプリケーションをインストールするための要求を受信するステップと、
前記ポータブルストレージデバイスに、前記ポータブルアプリケーションについての１つまたは複数の実行可能ファイルを書き込むステップと、
前記ポータブルストレージデバイス上のプライベートストアに、前記ポータブルアプリケーションに関する情報を書き込むステップと
を備えたコンピュータにおいて実装される方法。
【請求項２５】
前記情報を書き込むステップは、前記情報を前記コンピュータ上のシステム情報ストアに書き込むことなく、前記ポータブルストレージデバイス上のプライベートストアに、前記ポータブルアプリケーションに関する情報を書き込むステップを含むことを特徴とする請求項２４に記載の方法。
【請求項２６】
前記ポータブルストレージデバイス上に自動実行モジュールを構成することにより、前記ポータブルストレージデバイス上の前記ポータブルアプリケーションの存在を識別するステップをさらに備えたことを特徴とする請求項２４に記載の方法。
【請求項２７】
前記プライベートストアに情報を書き込むこと前に、前記ポータブルストレージデバイス上に前記プライベートストアを作成するステップをさらに備えたことを特徴とする請求項２４に記載の方法。
【請求項２８】
前記プライベートストアは、あらかじめ情報によりポピュレートされており、および前記ポータブルストレージデバイスにコピーされていることを特徴とする請求項２４に記載の方法。
【請求項２９】
前記プライベートストアは、プライベートレジストリを含むことを特徴とする請求項２４に記載の方法。
【請求項３０】
コンピュータの１つまたは複数のプロセッサにより実行されると、
永続的なファイルを前記コンピュータ上に格納しないステップと、
ストレージデバイス上の環境設定および前記コンピュータ上の環境設定にアクセスするステップと
を前記１つまたは複数のプロセッサに実行させる複数の命令を格納している１つまたは複数のコンピュータ読取可能な媒体。
【請求項３１】
前記ストレージデバイス上の環境設定および前記コンピュータ上の環境設定にアクセスするステップは、前記ストレージデバイスおよび前記コンピュータから環境設定を読み取るが、環境設定を前記ストレージデバイスのみに書き込むことを特徴とする請求項３０に記載の１つまたは複数のコンピュータ読取可能な媒体。
【請求項３２】
ポータブルストレージデバイスの一部であることを特徴とする請求項３０に記載の１つまたは複数のコンピュータ読取可能な媒体。
【請求項３３】
前記複数の命令は、前記複数の命令の実行を終了する前に、前記複数の命令により前記コンピュータ上に格納されたあらゆる一時的なファイルを削除させるステップを前記１つまたは複数のプロセッサに実行させることを特徴とする請求項３０に記載の１つまたは複数のコンピュータ読取可能な媒体。
【請求項３４】
前記複数の命令は、ポータブルアプリケーションがアクティベートされている場合にのみ実行される前記ポータブルアプリケーションの一部であることを特徴とする請求項３０に記載の１つまたは複数のコンピュータ読取可能な媒体。
【請求項３５】
前記複数の命令は、ポータブルアプリケーションがアクティベートされていない場合に、縮小された機能により実行される前記ポータブルアプリケーションの一部であることを特徴とする請求項３０に記載の１つまたは複数のコンピュータ読取可能な媒体。
【請求項３６】
前記ポータブルアプリケーションは、ポータブルストレージデバイスにバインドされることを特徴とする請求項３４に記載の１つまたは複数のコンピュータ読取可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、メモリデバイスおよびアプリケーションに関し、より詳細には、ポータブルアプリケーションに関する。
【背景技術】
【０００２】
コンピュータは、我々の生活で一般的になりつつあり、我々の家庭および職場において、図書館、空港、喫茶店などの増大する様々な公共の場においても同様に、見られるようになっている。人々がよりコンピュータに依存するようになってきているので、自分がいる可能性があるどんなところでもコンピュータを使用したいという人々の希望もまた増大している。例えば、ユーザが自宅またはオフィスから離れて旅行中である場合に、ユーザは、ユーザが自宅またはオフィスからアクセスすることに慣れているプログラムおよび／またはデータにアクセスすることを望むことが多い。しかし、これは、問題である。なぜならば、ユーザが、ユーザの望むプログラムが自宅またはオフィスから離れたコンピュータ上で使用可能であることを依拠することはできず、ましてや、ユーザの望むデータが自宅またはオフィスから離れたコンピュータ上で使用可能であることを依拠することができないからである。
【０００３】
これらの問題を解決するために使用することができる１つの解決法は、ユーザがポータブルコンピュータを購入し、旅行に持って行くことである。しかし、ポータブルコンピュータは、旅行に持って行くにはかさばって重くなり、購入するには高価である可能性があり、ユーザが盗難の対象になる可能性があるという、追加の問題を有する。
【０００４】
これらの問題を解決するために使用することができる別の解決法は、ユーザがユーザのハードドライブを旅行する場合に持って行くことである。このような解決法もまた問題である可能性がある。なぜならば、ユーザのコンピュータを開けてハードドライブを切り離すために、ハードドライブを別のコンピュータにインストールするためも同様に、著しい量の労力が必要となり、ユーザのコンピュータがハードドライブのない状態、したがって通常は使用できない状態のままとなり、ハードドライブが他のコンピュータ上で動作するために大幅な再構成が必要となる可能性があるので互換性の問題が生じ、ユーザがコンピュータを公共の場で開けてみだりに変更することが許可されない場合があるので法的な問題を生じる可能性があるからである。
【０００５】
これらの問題の少なくとも一部を解決するために使用することができる別の解決法は、データをユニバーサルシリアルバス（ＵＳＢ）フラッシュメモリデバイスに格納することである。これらのＵＳＢフラッシュメモリデバイスは、ますます一般的になりつつあり、コンピュータ上のＵＳＢポートにプラグインする。このようなＵＳＢデバイスにより、ユーザはデータをあるコンピュータからＵＳＢデバイスに転送し、ＵＳＢデバイスを別のコンピュータにプラグインし、ＵＳＢデバイス上のデータにアクセスすることが可能となる。しかし、このようなＵＳＢデバイスは、問題の一部のみを解決する。なぜならば、これらのＵＳＢデバイスは、一般にデータを格納するためにのみ使用されるからである。ユーザが使用中であるコンピュータが適切なプログラムを有していない場合、データは通常、ユーザにとって有用な形式においてアクセス可能ではない。
【０００６】
これらの問題の少なくとも一部を解決するために使用することができる別の解決法は、ユーザがディスク（通常はＣＤまたはＤＶＤ）上のプログラムを持って旅行することであり、ユーザが使用中であるコンピュータ上でプログラムが使用可能ではない場合、ユーザは、プログラムをそのコンピュータ上にインストールすることができる。しかし、この解決法は、問題の一部のみを解決する。なぜならば、通常、このようなディスクは、ユーザのデータを格納していないからである。さらに、この解決策は、追加の問題を有する。なぜならば、ディスクがやや壊れやすく、旅行中に破損される可能性があり、プログラムをコンピュータ上にインストールするプロセスは時間がかかる（およびプログラムが、コンピュータ上で実行中の他のプログラムと互換性がない場合、さらに時間がかかる）可能性があり、ユーザがプログラムをインストールするためにコンピュータ上で十分な使用特権を有していない場合があり、複数のコンピュータ上へのこのようなインストレーションはしばしば、プログラムのためのライセンス契約に違反するようになり、および通常、コンピュータの所有者は（特に公共の場所において）、人々が自分のプログラムをコンピュータ上にインストールすることを望まないようになるからである。この解決法によるさらに別の問題は、ユーザがコンピュータ上でプログラムをアンインストールする場合に、様々な使用されない登録情報、データなどが後に残されることが多いことである。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、このような問題に鑑みてなされたもので、その目的とするところは、ユーザがコンピュータからコンピュータへと移動するために、およびユーザの望むプログラムと、オプションとしてユーザの望むデータとを容易に使用するために改善された方法を提供することにある。
【課題を解決するための手段】
【０００８】
本明細書においてポータブルアプリケーションを説明する。
【０００９】
ある態様にかかるポータブルストレージデバイスは、インターフェイスおよび１つまたは複数のストレージ要素を含む。１つまたは複数のストレージ要素は、ホストコンピュータによって実行することができる１つまたは複数の実行可能ファイルを格納し、１つまたは複数の実行可能ファイルが環境設定にアクセスするための命令を含む場合でさえ、ホストコンピュータ上のあらゆる環境設定を変更することもなく、デバイスがこのホストコンピュータに結合される。
【００１０】
他の態様にかかるアプリケーションは、アプリケーションを実行するために実行されるべき１つまたは複数の実行可能ファイルを格納するポータブルストレージデバイスにバインドされる。
【００１１】
他の態様にかかる要求を受信することにより、ポータブルアプリケーションを、コンピュータに結合されたポータブルストレージデバイス上にインストールする。ポータブルアプリケーションに対する１つまたは複数の実行可能ファイルは、ポータブルストレージデバイスに書き込まれ、およびポータブルアプリケーションに関する情報は、ポータブルストレージデバイス上のプライベートストアに書き込まれる。
【００１２】
同一の符号を本明細書において使用することにより、類似のコンポーネントおよび／または特徴を参照する。
【発明を実施するための最良の形態】
【００１３】
本明細書においてポータブルアプリケーションを説明する。１つまたは複数のアプリケーションプログラムを、ポータブルストレージデバイス上にインストールする。ポータブルストレージデバイスがコンピュータにプラグインされるか、そうでない場合は結合されると、デバイス上にインストールされたポータブルアプリケーションは、ユーザがデバイス上に格納している可能性があるいかなるデータとも共に、自動的に検出かつユーザに使用可能となる。ポータブルアプリケーションは、コンピュータ上のいかなる環境設定をも変更せず、およびデータファイルは、ポータブルストレージデバイス上に残る。したがって、ユーザは、ユーザが望むアプリケーションおよびデータへのアクセスを有するが、ユーザがコンピュータの使用を終了した後に、いかなる変更された環境設定またはデータファイルを後に残さない。
【００１４】
図１は、ポータブルアプリケーションを使用することができる一実施形態の環境を例示するブロック図である。環境１００は、ポータブルストレージデバイス１０２およびホストコンピュータ１０４を含む。ポータブルストレージデバイス１０２を、ホストコンピュータ１０４に対して、複数の他のコンピュータ（図１に図示せず）に対しても同様に、結合かつ容易に取り外すことができる。ポータブルストレージデバイス１０２は、ホストコンピュータ１０４と、様々なプロトコルのいずれかを使用して通信することができる。例えば、ＵＳＢバージョン１．０またはバージョン２．０などのユニバーサルシリアルバス（ＵＳＢ）接続を使用して、ＩＥＥＥ１３９４ａまたは１３９４ｂなどのＩＥＥＥ１３９４接続（Ｆｉｒｅｗｉｒｅとも呼ばれる）を使用して、またはＰＣＭＣＩＡ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ）接続を使用して、デバイス１０２は、コンピュータ１０４に結合することができる。あるいはまた、デバイス１０２は、コンピュータ１０４に、様々な他の公的またはメーカー独自の接続プロトコルのいずれを使用して結合することもできる。
【００１５】
通常、デバイス１０２をコンピュータ１０４に結合するために使用される接続プロトコルは、「プラグアンドプレイ」接続プロトコルである。プラグアンドプレイ接続プロトコルは、ホストコンピュータに、自動的にそれ自体を検出かつ構成して、接続された周辺デバイスにアクセスすることを可能にするプロトコルである。周辺デバイスがコンピュータ１０４にプラグインされると、コンピュータ１０４は、コンピュータ１０４上で実行するプログラムが周辺デバイスにアクセスできるようにするために、コンピュータ１０４上で実行中である必要があるいかなるデバイスドライバまたは他のモジュールを自動的に識別かつインストールすることができる。
【００１６】
ポータブルストレージデバイス１０２は、インターフェイス１０６および１つまたは複数のストレージ要素１０８を含むが、コンピュータ１０４は、プロセッサ１２０、システムメモリ１２２（例えば、ランダムアクセスメモリ（ＲＡＭ））、およびインターフェイス１２４を含む。インターフェイス１０６および１２４は、デバイス１０２およびコンピュータ１０４に、接続プロトコルによって互いの間に信号を転送することを可能にする。これらの信号は、データ信号および／またはコマンド信号である可能性がある。
【００１７】
ストレージ要素１０８は、１つまたは複数のフラッシュメモリ、１つまたは複数の磁気ハードディスクドライブ（例えば、マイクロドライブ）、１つまたは複数の光ディスクドライブなど、様々な異なる種類のストレージ要素のうちの１つまたは複数からなる可能性がある。ストレージ要素１０８は、アプリケーション部分１１０とデータ部分１１２とを含む。アプリケーション部分１１０は、コンピュータ１０４のプロセッサ１２０によって実行することができる１つまたは複数のポータブルアプリケーションを格納することができる。ポータブルアプリケーションは、アプリケーションが環境設定にアクセスするための要求を含む場合でさえ、ホストコンピュータ１０４上のいかなる環境設定を変更することなく、ストレージ要素１０８から実行するように設計されるアプリケーションである。さらに通常、ポータブルアプリケーションは、以下により詳細に説明するように、ポータブルストレージデバイス１０２にバインドされる。
【００１８】
データ部分１１２は、１つまたは複数のアプリケーションに対するデータを格納することができる。部分１１２に格納されるデータは、部分１１０および／または他のアプリケーションに格納されるポータブルアプリケーションの１つに対するデータとすることができる。
【００１９】
コンピュータ１０４のプロセッサ１２０は、システムメモリ１２２およびインターフェイス１２４と通信して、ストレージ要素１０８に格納されたアプリケーションを含むアプリケーションを実行する。アプリケーション部分１１０に格納された各アプリケーションは、プロセッサ１２０によって実行することができる命令のセットであり、アプリケーションを実行するまたは実稼動する（ｅｘｅｃｕｔｉｎｇ  ｏｒ  ｒｕｎｎｉｎｇ）という。これらの命令をプロセッサ１２０によってストレージ要素１０８から直にロードかつ実行することができ、あるいはまたは、プロセッサ１２０によってロードかつ実行される前にシステムメモリ１２２に転送することができる。さらに、これらの命令を、プロセッサ１２０によって実行される前に、ストレージ要素１０８からコンピュータ１０４における１つまたは複数のキャッシュメモリに転送することができる。
【００２０】
ポータブルストレージデバイス１０２を、コンピュータ１０４にプラグインすることによって、コンピュータ１０４に結合することができる。コンピュータ１０４へのデバイス１０２の結合は、直接接続または間接接続とすることができる。ポータブルストレージデバイス１０２を、デバイス１０２上のジャックまたはコネクタがコンピュータ１０４上のジャックまたはコネクタに挿入するなど、コンピュータ１０４に直に接続することができる。さらに、ポータブルストレージデバイス１０２を、１つまたは複数のケーブルまたは延長線、１つまたは複数の他のコントローラ（例えば、ＵＳＢハブ）、１つまたは複数の他の周辺デバイスなどによってなど、コンピュータ１０４に間接的に接続することができる。コンピュータ１０４とポータブルストレージデバイス１０２との間の結合は、有線および／または無線結合とすることができる。ポータブルストレージデバイス１０２は、ポータブルであるという。なぜならば、ポータブルストレージデバイス１０２は、エンドユーザによって１つまたは複数のコンピュータ１０４に対して、容易に結合かつ容易に切り離されるように、ユーザによって容易に運ばれるようにも同様に、設計されるからである。
【００２１】
ポータブルストレージデバイス１０２がコンピュータ１０４に結合されると、コンピュータ１０４は、自動的にデバイス１０２の存在を検出する。例えば、この検出は、プラグアンドプレイ接続プロトコルの一部として実行される。検出された後、ポータブルストレージデバイス１０２は、コンピュータ１０４上でデータストレージを、アプリケーション実行も同様に、実行するアプリケーションおよびオペレーティングシステムに対して、アクセス可能である。
【００２２】
ポータブルストレージデバイス１０２が検出された後、コンピュータ１０４は、自動的にデバイス１０２にアクセスし、およびアプリケーション部分１１０に格納されたあらゆるアプリケーションを実行することができ、および／または、コンピュータ１０４のユーザに、アプリケーション部分１１０に格納されたアプリケーションのいずれかを実行するためのオプションを与えることができる。さらに、データ部分１１２は、コンピュータ１０４に対して、アクセス可能であり、部分１１２に格納されたあらゆるデータを検索することを、新しいデータを部分１１２に格納することも同様に、コンピュータ１０４に可能にする。
【００２３】
多数の現在のオペレーティングシステムは、ポータブルストレージデバイスにアクセスされることを可能にするための適切なデバイスドライバを含む。ポータブルフラッシュメモリデバイス１０２がコンピュータ１０４に結合される場合に、このようなデバイスドライバがインストールされていないならば、このようなデバイスドライバがインストールされる（例えば、プラグアンドプレイ制御プロトコルの一部として）。しかし、ポータブルストレージデバイス１０２上のポータブルアプリケーションを実行するために、追加のデバイスドライバまたは他のドライバもしくはソフトウェアがホストコンピュータ１０４上にインストールされる必要はないことを留意すべきである。例えば、あらゆる特定のポータブルアプリケーション、または一般のポータブルアプリケーションに特有なドライバを、ホストコンピュータ１０４上にインストールする必要がない。
【００２４】
図２は、さらに詳細に一実施形態のポータブルストレージデバイスを例示する。ポータブルストレージデバイス１０２は、インターフェイス１０６とストレージ要素１０８とを含む。ストレージ要素１０８は、自動実行モジュール１６０、１つまたは複数のアプリケーションファイル１６２、プライベートストア１６４、プライベートローカルプロファイル１６６、およびデータセクション１６８を含む。データセクション１６８は、図１のデータ部分１１２に含まれるが、アプリケーションファイル１６２は、図１のアプリケーション部分１１０に含まれる。通常、自動実行モジュール１６０は、アプリケーション部分１１０に含まれるが、モジュール１６０は、代替としてデータ部分１１２に含まれる場合がある。通常、プライベートストア１６４およびプライベートローカルプロファイル１６６は、共にデータ部分１１２に含まれるが、ストア１６４およびプロファイル１６６は、代替としてアプリケーション部分１１０に含まれる場合がある。
【００２５】
ポータブルストレージデバイス１０２は、ポータブルアプリケーションを実行するためのプロセッサを含まないことを留意すべきである。ポータブルストレージデバイス１０２は、ポータブルまたはハンドヘルドコンピュータではなく、むしろ、ポータブルストレージデバイス１０２はストレージデバイスである。しかし、ある実施形態では、ポータブルストレージデバイス１０２は、セキュリティの目的または暗号化のために使用されるべきプロセッサを含むことができるが、ポータブルストレージデバイス１０２上に格納されたポータブルアプリケーションを実行するためではない。
【００２６】
自動実行モジュール１６０は、ポータブルストレージデバイス１０２上に格納されたアプリケーションにアクセスするために実行される。自動実行モジュール１６０は、どのアプリケーションがポータブルストレージデバイス１０２上に格納されるかの知識により、またはどのアプリケーションがポータブルストレージデバイス１０２上に格納されるかを決定する方法（情報を含むデータファイルにアクセスすること、ストレージ要素１０８をスキャンしてアプリケーションモジュールを探すことなどによるなど）の、これらのアプリケーションを実行する方法も同様に、知識によりプログラムされる。自動実行モジュール１６０は、ポータブルストレージデバイス１０２が結合されるホストデバイス上のオペレーティングシステムに対して、所望のアプリケーションを実行するためにどのアプリケーションファイル１６２がロードおよび実行されるべきであるかを識別することができる。例えば、所望のアプリケーションは、ユーザにより選択することが可能であり、または、自動実行モジュール１６０に自動的にプログラムすることが可能である。
【００２７】
自動実行モジュール１６０は、オプショナルでユーザインターフェイスを表示し、ユーザインターフェイスは、ポータブルストレージデバイス１０２とインターフェイスするために様々なオプションをユーザに提示する。例えば、これらのオプションは、ポータブルストレージデバイス１０２上に格納され、ユーザによって実行することができるアプリケーションのリスト、およびポータブルストレージデバイス１０２上に格納され、ユーザによってアクセスすること（例えば、読み取り、削除、コピーなど）ができるデータファイルのリストを含むことができる。さらに、ユーザインターフェイスは、対応するファイルをポータブルストレージデバイス１０２にコピーするために、ユーザがファイルアイコンをドラッグアンドドロップすることができる宛先として使用することができる。さらに、ユーザインターフェイスは、ブラウジング機能を支援することができ、ポータブルストレージデバイス１０２が結合されるホストデバイス上のオペレーティングシステムを活用して、ポータブルストレージデバイス１０２上の、ホストデバイスの他のストレージデバイス上も同様に、および１つまたは複数のネットワークによってホストデバイスに結合された他のストレージデバイス上でさえ、異なるフォルダまたはディレクトリにアクセスすることをユーザに可能にする。
【００２８】
さらに、自動実行モジュール１６０は、特定のファイル型に、デバイス１０２の特定のポータブルアプリケーションに関連付けられることを可能にする。例えば、ファイルの１つの型を、「．ｄｏｃ」で終了する名前を有するファイルとすることができ、このファイルの文書処理ポータブルアプリケーションに関連付けることができるが、ファイルの別の型を、「．ｘｌｓ」で終了する名前を有するファイルとすることができ、このファイルの型を、スプレッドシートポータブルアプリケーションに関連付けることができる。特定のポータブルアプリケーションへの特定のファイル型の関連付けを、自動実行モジュール１６０内で、プライベートストア１６４において、または代替としてデバイス１０２上の他の場所で保持することができる。特定のポータブルアプリケーションと特定のファイル型との関連付けは、デバイス１０２が結合されるホストデバイスではなく、デバイス１０２によって（例えば、プライベートストア１６４に格納されたデータを使用する自動実行モジュール１６０による）実装される。
【００２９】
特定のファイル型を特定のポータブルアプリケーションに関連付けることで、関連付けられた型のファイルがユーザによって選択される（例えば、ファイルを表すアイコンをユーザがダブルクリックすることによる、ユーザがキーボードを使用して、ファイルを表すアイコンまたは名前にナビゲートすることによるなど）場合、自動実行モジュール１６０が正しいポータブルアプリケーションを自動的に実行することが可能となる。例えば、「．ｄｏｃ」で終了する名前を有するファイルが文書処理ポータブルアプリケーションに関連付けられる場合、ユーザが「ＭｙＲｅｐｏｒｔ．ｄｏｃ」を選択すると、自動実行モジュール１６０は自動的に文書処理ポータブルアプリケーションを実行し、ＭｙＲｅｐｏｒｔ．ｄｏｃ文書を文書処理ポータブルアプリケーションにロードすることができる。
【００３０】
特定のファイル型を特定のポータブルアプリケーションに関連付けることで、自動実行モジュール１６０が、そのユーザインターフェイスの一部として、特定の型のファイルを表す特定のアイコンを提示することも可能となる。例えば、文書処理ポータブルアプリケーションを識別する特定のアイコンを、「．ｄｏｃ」で終了する名前を有するすべてのファイルについて表示することができる。特定のファイル型のために表示するための特定のアイコンを、自動実行モジュール１６０内で、プライベートストア１６４において、または代替としてデバイス１０２上の他の場所で保持することができる。
【００３１】
ある実施形態では、自動実行モジュール１６０は、ポータブルストレージデバイス１０２が結合されるホストデバイスのオペレーティングシステムによって、自動的にロードおよび実行される。このような実施形態では、ホストデバイス上のオペレーティングシステムは、ポータブルストレージデバイスがホストデバイスに結合されていることを検出するときは常に、自動実行モジュール１６０を自動的に探索するように構成される。例えば、オペレーティングシステムは、ストレージ要素１０８、または、ストレージ要素１０８上のファイルの特定の１つまたは複数のフォルダまたはディレクトリを、特定の名前（「Ａｕｔｏｒｕｎ．ｉｎｆ」など）を有する自動実行モジュールについて探索し、ストレージ要素１０８の特定の既知のロケーションにアクセスすることなどができる。自動実行モジュール１６０が発見されるとき、オペレーティングシステムは自動実行モジュール１６０内で命令を実行する。
【００３２】
代替として、自動実行モジュール１６０の実行を、他の方法で開始することができる。例えば、ポータブルストレージデバイス１０２がホストデバイスに結合されるときに自動的に実行されるのではなく、ホストデバイスのユーザはポータブルストレージデバイス１０２に、オペレーティングシステムを通じて従来の方法でアクセスすることができる。ユーザは、ストレージ要素１０８上に格納されたディレクトリまたはフォルダ内をナビゲートすることによって、自動実行モジュール１６０に対応するファイル名またはアイコンを探し出し、そのファイル名またはアイコンを実行のために選択する（例えば、ファイル名またはアイコンをダブルクリックすることによる）ことができる。
【００３３】
代替実施形態では、自動実行モジュール１６０を使用するのではなく、ユーザ（または代替として、別のアプリケーションまたはオペレーティングシステム）は、ストレージ要素１０８上に格納されたディレクトリまたはフォルタ内を手動でナビゲートして、実行するべきポータブルアプリケーションを識別することができる。例えば、ホストコンピュータ１０４がＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムの１つを実行中である場合、ユーザは、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムのＥｘｐｌｏｒｅｒを使用して、ストレージ要素１０８内のフォルダ中を手動で探索することができる。
【００３４】
アプリケーションファイル１６２は命令を含み、この命令を、ポータブルアプリケーションを実行するために使用される１つまたは複数のアプリケーションモジュールとして、ポータブルアプリケーションを実行するために使用されるいかなる関連付けられたデータファイルとしても同様に、編成することができる。アプリケーションファイル１６２は、ポータブルストレージデバイス１０２上で格納されたポータブルアプリケーションのための、実行可能ファイルおよび他のいずれかの関連付けられたファイルである。ポータブルアプリケーションを実行するために、これらの実行可能ファイルの１つまたは複数はホストコンピュータによって実行される。様々な異なるアプリケーションのいずれも、ポータブルストレージデバイス１０２上のポータブルアプリケーションとして含めることができる。このようなアプリケーションの例には、文書処理アプリケーション、スプレッドシートアプリケーション、データベースアプリケーション、プレゼンテーションアプリケーション、参照アプリケーション、ゲームアプリケーション、電子メール（ｅメール）クライアントなどが含まれる。これらのアプリケーションを、デスクトップコンピュータ上でインストールおよび実行されるように設計される同じアプリケーションのポータブルバージョンにすることができる。例えば、本願発明の特許出願人のＷｏｒｄ文書処理アプリケーションのポータブルバージョンがある場合がある。ポータブルバージョンは、それらの対応するデスクトップバージョンよりも縮小された機能を有することができる。例えば、拡張子がホストデバイスのシステムレジストリ内に登録されることを必要とする機能など（これはポータブルアプリケーションが行わない環境設定への変更となり、以下でより詳細に論じる）、アプリケーション内のある機能はポータブルアプリケーションでの作業に役立たない場合がある。
【００３５】
多数のオペレーティングシステムはシステム情報ストアを使用して、コンピュータ上で実行するオペレーティングシステム、ならびにコンピュータ上にインストールされたアプリケーションのための、構成データを保持する。本願発明の特許出願人のＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムのファミリでは、このようなシステム情報ストアは通常、システムレジストリと呼ばれる。システムレジストリは、例えば、デバイスおよびアプリケーション構成設定、特定のアプリケーションとのファイル型の関連付け（例えば、それらの拡張子に基づく）、ユーザプリファレンス、パフォーマンスチューニングパラメータなどを格納することができる。通常、コンピュータ上のアプリケーションのインストレーション中に、そのアプリケーションのための構成設定に関する様々な情報がシステム情報ストアに書き込まれる。対照的に、ポータブルストレージデバイス１０２上のポータブルアプリケーションについては、このような設定はシステム情報ストアに書き込まれない。
【００３６】
ポータブルアプリケーションが、システム情報ストア内のポータブルアプリケーションについての情報を保持することなく、他のアプリケーションと通信するために、ポータブルアプリケーションは、環境のランタイムクエリを使用する。環境のランタイムクエリは、それに対して他のアプリケーションが特定の機能を提供するクエリを、アプリケーションが発行することができる技術を指す。このようなクエリに応答して、ポータブルアプリケーションが機能を提供する場合、ポータブルアプリケーションはこのクエリに、その機能をどのように呼び出すことができるかを識別する情報により応答する。このクエリは通常、オペレーティングシステムを通じて仲介され、あるアプリケーションが他のアプリケーションを直接クエリするのではなく、アプリケーションがオペレーティングシステムをクエリし、オペレーティングシステムは他のアプリケーションをクエリしてそのクエリの結果をアプリケーションに戻すようにする。このように、システム情報ストアを、ポータブルアプリケーションの特定の機能を呼び出す方法の情報についてチェックするのではなく、アプリケーションをクエリして、その特定の機能を呼び出す方法の情報を得ることができる。
【００３７】
ポータブルアプリケーションについてのデータはシステム情報ストアに書き込まれないが、ポータブルアプリケーション自体を、データを情報ストアに書き込むこと、およびデータを情報ストアから読み取ることを含めて、情報ストアにアクセスするように設計することができる。このようなアクセスに対処するために、プライベートストア１６４がポータブルストレージデバイス１０２上に含まれる。プライベートストア１６４はポータブルアプリケーションのための設定情報を保持し、通常はホストコンピュータのシステム情報ストア内で保持されるようになる設定情報は、その代わりにプライベートストア１６４内で保持される。別々のプライベートストア１６４をポータブルアプリケーション毎に保持することができ、または代替として、単一のプライベートストア１６４を、ポータブルアプリケーションのコレクションまたはスイートについて保持することができる。
【００３８】
各ポータブルアプリケーションは、ホストコンピュータ上のシステム情報ストアではなく、プライベートストア１６４にアクセスするように設計される。したがって、ポータブルアプリケーションが情報ストアに書き込むことができるいかなるデータも、ポータブルアプリケーションファイルと同じポータブルストレージデバイス１０２上のプライベートストア１６４に書き込まれ、そのため、ホストコンピュータ上のシステム情報ストアは、それに書き込まれたポータブルアプリケーションのための構成または他のデータを有するようにならない。ホストコンピュータがシステムレジストリを含むある実施態様では、プライベートストア１６４はシステムレジストリではなくポータブルアプリケーションによってアクセスされるので、プライベートストア１６４はまたプライベートレジストリと呼ばれることもある。
【００３９】
ポータブルアプリケーションを、ホストコンピュータ上のシステム情報ストアではなく、プライベートストア１６４に異なる方法でアクセスするように設計することができる。ある実施形態では、ホストコンピュータ上のシステム情報ストアは、システム情報ストアにアクセスするためにアプリケーションによって呼び出すことができる複数のインターフェイスを有する、アプリケーションプログラミングインターフェイス（ＡＰＩ）を含む。このアクセスには、例えば、値を情報ストアから読み取ること、値を情報ストアに書き込むこと、値を情報ストアから削除すること、値を情報ストア内で修正することなどが含まれる可能性がある。プライベートストア１６４は類似のＡＰＩを含み、このＡＰＩは、通常はシステム情報ストアのインターフェイスと同じ機能を実行する類似のインターフェイスを有するが、異なる名前を有し、システム情報ストアではなくプライベートストア１６４上で動作する。ある実施態様では、これらのプライベートストアインターフェイスは、システム情報ストアインターフェイスではなくポータブルアプリケーションによって呼び出される。
【００４０】
他の実施態様では、ポータブルアプリケーションはプライベートストアインターフェイスに、インターミディアリ（ｉｎｔｅｒｍｅｄｉａｒｙ）を通じてアクセスする。単一のインターミディアリは、１つのポータブルアプリケーション、または代替として、ポータブルアプリケーションのコレクションまたはスィートのためのインターミディアリとして動作することができる。ストアへのアクセスを望むポータブルアプリケーション内の個々の機能および命令は、インターミディアリによってエクスポーズされたＡＰＩと対話する。インターミディアリは、プライベートストアによってエクスポーズされたＡＰＩと対話する。インターミディアリを有するこのような構造は、アプリケーション設計者にとって有用である可能性があり、これは、設計者がアプリケーションの機能および命令を、そのアプリケーションがシステム情報ストアにアクセスする非ポータブルアプリケーションになるか、プライベートストアにアクセスするポータブルアプリケーションになるかに関係なく設計し、２つのインターミディアリ（一方は、プライベートストアにアクセスするポータブルアプリケーションで使用するため、および、他方は、システム情報ストアにアクセスする非ポータブルアプリケーションで使用するため）を設計することができるからである。
【００４１】
ある状況では、ポータブルアプリケーションは、プライベートストア１６４内に以前に格納されなかった情報をストアから検索することを必要とするか、または望む場合がある。このような状況では、ポータブルアプリケーション（またはインターミディアリ）はホストコンピュータ上のシステム情報ストアにアクセスして、所望の情報を読み取ることができる。このような情報は通常、ポータブルアプリケーションに特有ではないが、むしろホストコンピュータについての汎用情報である、情報となる。ポータブルアプリケーション（またはインターミディアリ）は、ポータブルアプリケーションによって望まれる特定の情報について、その特定の情報を得るためにシステム情報ストアがアクセスされるべきであるかどうか、または、その特定の情報を得るためにプライベートストア１６４がアクセスされるべきであるかどうかを知るように設計される。しかし、ストアに書き込まれるべき、またはストアから削除されるべきいかなる情報も、システム情報ストアに書き込まれるようにならず、またはシステム情報ストアから削除されるようにならないことに留意されたい。
【００４２】
代替として、ポータブルストレージデバイス１０２がホストコンピュータに結合されるとき、そのホストコンピュータのシステム情報ストア内の情報をプライベートストア１６４にコピーすることができるが、すでにプライベートストア１６４内にあるいかなるデータも、このコピーによって上書きされないようになる。そのため、この代替実施形態では、ポータブルアプリケーションが、以前にプライベートストア１６４内に格納されなかった情報にアクセス中である状況は、生じるべきではない。他の代替実施形態では、プライベートストア１６４を、ポータブルアプリケーションによって上書きされるまで使用されるデフォルト値により、事前にプログラムまたは構成することができる。
【００４３】
プライベートストア１６４と同様に、ポータブルストレージデバイス１０２はまた、プライベートローカルプロファイル１６６をも含む。プライベートローカルプロファイル１６６は、ポータブルストレージデバイス１０２のユーザのためのローカルプロファイルを格納し、様々なユーザ設定およびプリファレンス情報を格納する。このような情報を保存することによって、ポータブルストレージデバイス１０２は、ユーザが自分のエクスペリエンスをカスタマイズし、自分がそのポータブルストレージデバイス１０２を複数の異なるホストコンピュータにより使用中である場合でさえ、そのカスタマイズが保持されるようにすることを可能にする。別々のプライベートローカルプロファイル１６６をポータブルアプリケーション毎に保持することができ、または代替として、単一のプライベートローカルプロファイル１６６を、ポータブルアプリケーションのコレクションまたはスイートについて保持することができる。
【００４４】
プライベートローカルプロファイル１６６は、通常はホストコンピュータ上で発見されるローカルプロファイルではなく、このような情報を格納するために使用される。プライベートストア１６４と同様に、プライベートローカルプロファイル１６６はポータブルアプリケーションによって、オプショナルでポータブルアプリケーションに代わってインターミディアリを介してアクセスされ、要求されたデータの検索、書き込み、削除、修正などが、ポータブルアプリケーションによって要求されたアクションに基づいて適切に行われる。プライベートローカルプロファイル１６６、ならびにいかなるインターミディアリも、プライベートストア１６４に関する上記の考察に類似したＡＰＩをエクスポーズすることができる。
【００４５】
ある実施形態では、ローカルプロファイルへの読み取りアクセスは、読み取られているデータがプライベートローカルプロファイル１６６内に存在しない場合、ホストコンピュータ上に格納されるローカルプロファイルに向けて（例えば、インターミディアリによって）送られる。代替として、ホストコンピュータ上に格納されたローカルプロファイルをプライベートローカルプロファイル１６６にコピーすることができるが、すでにプライベートローカルプロファイル１６６内に存在するいかなる設定についてのデータも、このコピープロセスによって上書きされないようになる。他の代替実施形態では、プライベートローカルプロファイル１６６を、ポータブルアプリケーションによって上書きされるまで使用されるデフォルト値により、事前にプログラムまたは構成することができる。
【００４６】
このように、アプリケーションファイルならびにアプリケーションデータ、情報ストアデータ、および、ポータブルストレージデバイス１０２上のローカルプロファイルデータを保持することによって、永続的変更がホストコンピュータに行われる必要はない。ポータブルアプリケーションをポータブルストレージデバイス１０２上で実行するとき、またはこれを実行するために、ホストコンピュータ上のシステム情報ストア、または、ホストコンピュータ上のローカルプロファイルへの変更は行われない。ホストコンピュータのシステム情報ストアおよびローカルプロファイル内に格納された情報を、ホストコンピュータ上の環境設定と呼ぶことができ、ポータブルアプリケーションを実行するとき、このような環境設定への変更は行われない。加えて、アプリケーションファイルならびにデータファイルはポータブルストレージデバイス１０２上に格納され、そのため、アプリケーションファイルまたはデータファイルのいずれもホストコンピュータに書き込まれない。
【００４７】
ある実施形態では、ポータブルアプリケーションを実行するとき、ファイルまたは環境設定はホストコンピュータに書き込まれない。ポータブルアプリケーションが実行中にいずれかの一時ファイルを使用する場合、これらの一時ファイルは、ホストシステム上ではなくポータブルストレージデバイス１０２上に格納される。代替実施形態では、１つまたは複数の一時ファイルを、ポータブルアプリケーションの実行中にホストコンピュータに書き込むことができる。実行中に一時ファイルをホストコンピュータに書き込むポータブルアプリケーションは、アプリケーションの実行が終了されるとき、それ自体を閉じることの一部として、これらの一時ファイルを削除する。代替として、ポータブルアプリケーションは、ポータブルアプリケーションが実行を停止するとき、または一定の間隔もしく不規則な間隔で、ホストコンピュータ上のオペレーティングシステムなど、別のコンポーネントに依拠して、これらの一時ファイルを削除することができる。
【００４８】
加えて、ある実施形態では、ポータブルストレージデバイス１０２は、それにデータファイルを同期させる特定のホストコンピュータを有することができる。この「ホーム」または「ベース」ホストコンピュータ上、または代替としてポータブルストレージデバイス１０２上のアプリケーションは、ポータブルストレージデバイス１０２がホームまたはベースホストコンピュータに結合されるときを検出し、いずれかの修正がデータセクション１６８内のデータファイルに行われているかどうかを（例えば、データファイルの最終修正日時、または、いずれかのデータファイルの追加もしくは削除に基づいて）チェックするようになる。いかなる新しいファイル、または、ホームもしくはベースホストコンピュータ上のより新しい最終修正日時を有するいかなるファイルも、ホームまたはベースコンピュータ上にコピーされる。ユーザはオプショナルで、自分がこのような同期が発生することを望むことを検証するようにプロンプトされる場合がある。
【００４９】
図３は、ポータブルアプリケーションを実行するための一実施形態のプロセス２００を例示するフローチャートである。プロセス２００は、ポータブルストレージデバイス１０２が結合されるホストコンピュータによって実行される。プロセス２００を、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせで実施することができる。
【００５０】
最初に、ホストコンピュータはポータブルストレージデバイスを検出する（動作２０２）。上述のように、この検出は、ポータブルストレージデバイスがホストコンピュータにプラグインされるか、またはそうでない場合は結合されるとき、自動的に実行される。
【００５１】
ホストコンピュータは、ポータブルストレージデバイス上のポータブルアプリケーションを識別する（動作２０４）。上述のように、この識別をホストコンピュータによって自動的に実行することができ、または、ユーザがポータブルストレージデバイスにナビゲートすることによって手動で実行することができる。識別されたポータブルアプリケーションを実行するためのオプションを、オプショナルでユーザに提示することができる（動作２０６）。上述のように、ユーザインターフェイスをユーザに表示して、ユーザがどのポータブルアプリケーションを実行したいかを選択することができるようにすることができる。代替として、ホストコンピュータは、実行されるべきポータブルストレージデバイス上のポータブルアプリケーションの１つまたは複数を、自動的に選択することができる。
【００５２】
識別されたポータブルアプリケーションはホストコンピュータ上で、ホストコンピュータ上のいかなる環境設定を変更することもなく、実行される（動作２０８）。上述のように、プライベートストアおよびプライベートローカルプロファイルはポータブルストレージデバイス上で保持され、そのため、ホストコンピュータ上に格納されたシステム情報ストアまたはプロファイルへの変更は、ポータブルアプリケーションの実行中に行われる必要はない。
【００５３】
図２に戻ると、ライセンスの義務がユーザによって満たされていることを保証するために、いくつかのアプリケーションメーカーによって使用される１つの現在の技術は、アプリケーションをユーザのコンピュータ上にインストールした後に、ユーザがアプリケーションをアクティベートすることを必要とすることである。アプリケーションは通常、このアクティベーションが特定の時間フレーム内で実行されることを必要とし、この時間フレームは、最初にアプリケーションが実行されてから特定の日数以内、または、アプリケーションがある回数で実行される前などである。アクティベーションプロセスはアプリケーションを特定のコンピュータにバインドし、アプリケーションの特定のコピーを特定のコンピュータに関連付ける。アクティベーションプロセスは通常、ユーザまたはある他の個人が、そのアプリケーションのコピーに伴う英数字シーケンスまたはキーを入力することを含む。アプリケーションが、必要とされた時間フレーム内でうまくアクティベートされない場合、アプリケーションがうまくアクティベートされるまで、アプリケーションを実行することができず、または、縮小された機能のみを有して実行することができる（例えば、ある特徴または機能部分がない）。
【００５４】
特定のコンピュータへのアプリケーションの特定のコピーの関連付けを保持することによって、アプリケーションメーカーは、アプリケーションの同じコピーを複数のコンピュータにバインドするための試みが行われるかどうかを検出することができる。アプリケーションの同じコピーが複数のコンピュータ上で使用されることが、よくあることであるように、ライセンス契約に違反する場合、２番目または後続のコンピュータ上でのコピーのアクティベーションが拒否され、ライセンス契約の条項が守られることが可能となる。
【００５５】
しかし、アプリケーションが特定のコンピュータにバインドされるこのようなアクティベーション技術は、ポータブルアプリケーションの場合には望ましくなく、これは、ポータブルアプリケーションの裏にある意図の１つが、ポータブルアプリケーションが格納されるポータブルストレージデバイスをあるコンピュータから別のコンピュータへと移動し、両方のコンピュータ上で実行することが容易にできることであるからである。したがって、ポータブルアプリケーションの場合、ポータブルアプリケーションは、特定のコンピュータではなくポータブルストレージデバイスにバインドされる。
【００５６】
ポータブルアプリケーションはポータブルストレージデバイスに、ポータブルストレージデバイスの識別子を使用することによってバインドされる。このような識別子は、２つの異なるポータブルストレージデバイスが同じ識別子を有する可能性が非常に低いように設計される。したがって、このような識別子を使用して、同じアプリケーションを複数の異なるポータブルストレージデバイスにバインドしようとする試みが行われるかどうかを判断することができる。
【００５７】
ポータブルストレージデバイスの識別子を、異なる方法で生成することができる。識別子をメーカーによって割り当てることができ、製造プロセス中に、またはメーカーによって使用された事前構成プロセスの一部として、ポータブルストレージデバイス内に含めることができる。識別子を、ポータブルストレージデバイスの再書き込み不可能な部分に含めることができ、この部分は、一度書き込むことができるが、決して消去または再書き込みすることができず、後に変更することができないようにするメモリを使用する部分などである。
【００５８】
代替として、ポータブルストレージデバイスの識別子を、ポータブルストレージデバイスの様々なハードウェア態様に基づくデバイスのシグネチャにすることができる。このシグネチャを、アクティベートされているポータブルアプリケーションなど、ポータブルストレージデバイス上のアプリケーションによって、または、ある他のアプリケーションによって生成することができる。シグネチャをポータブルストレージデバイス上に、後続の使用のために格納することができ、または、必要とされるたびに再生成することができる。代替として、シグネチャをある他のコンポーネントによって（例えば、ポータブルストレージデバイスのメーカーのシステムによって）生成し、ポータブルストレージデバイス上に格納することができる。
【００５９】
もう１つの代替物では、ポータブルストレージデバイスの識別子は、直接的または間接的に、ポータブルストレージデバイス上の処理コンポーネントから通信される。例えば、処理コンポーネントには、パブリックキー暗号オペレーションを実行することができる暗号プロセッサが含まれる可能性がある。チャレンジ（例えば、英数字文字および／または他のシンボルのシーケンス）を暗号プロセッサに、ポータブルアプリケーションをポータブルストレージデバイスにバインド中であるデバイスまたはサービスなどの要求者から通信することができる。暗号プロセッサはこのチャレンジを、暗号プロセッサのプライベートキーを使用して暗号化し、暗号化されたチャレンジを要求者に戻す。要求者は、暗号プロセッサの既知のパブリックキーを使用して、暗号プロセッサの識別、および、したがって、暗号プロセッサが存在するポータブルストレージデバイスの識別を検証することができる。各暗号プロセッサが異なるパブリック／プライベートキーのペアを有するようになるので、異なるポータブルストレージデバイスを別々に識別することができる。
【００６０】
アクティベートされた後、情報をポータブルストレージデバイスに書き戻して、ポータブルストレージデバイス上のポータブルアプリケーションが、それがうまくアクティベートされていることを知るようにすることができる。代替として、いずれかのこのようなデータをポータブルストレージデバイスに書き戻すのではなく、ポータブルアプリケーションはホストコンピュータのネットワーク接続を使用して、サーバに（例えば、インターネットを介して）アクセスし、アプリケーションがうまくアクティベートされているかどうかをチェックすることができる。
【００６１】
図４は、ポータブルアプリケーションをアクティベートするための一実施形態のプロセス２５０を例示するフローチャートである。プロセス２５０をソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせで実施することができる。
【００６２】
最初に、デバイス識別子およびポータブルアプリケーションキーが得られる（動作２５２）。デバイス識別子は、あらかじめポータブルストレージデバイスに格納された識別子を検索することによって、または代替として識別子（例えば、上述のようなポータブルストレージデバイスのシグネチャ）を生成することによって得ることができる。ポータブルアプリケーションキーを異なる方法で得ることができるが、通常は、ユーザが手動でキーを、ポータブルストレージデバイスが結合されるホストコンピュータに入力することによって、得られる。このキーは、例えば、ポータブルアプリケーション、または、ポータブルアプリケーションがすでにインストールされているポータブルストレージデバイスが購入されるとき、パッケージングに含まれる可能性がある。ポータブルアプリケーションの各コピーには通常、異なるキーが割り当てられる。
【００６３】
デバイス識別子およびポータブルアプリケーションキーは、アクティベーションサービスに通信される（動作２５４）。アクティベーションサービスは、１つまたは複数のデバイス上で実施されたサービスであり、ポータブルアプリケーションがすでに最大数の許可されたデバイスにバインドされているかどうかを判断することを担う。この判断は、以前にアクティベートされたアプリケーションの記録を解析すること、および、ポータブルアプリケーションキーがすでに最大数の許可されたデバイスに関連付けられているかどうかを（ポータブルアプリケーションに関連付けられたライセンスに基づいて）チェックすることによって行われる。アクティベーションサービスはまた、ポータブルアプリケーションキーの妥当性を決定することも担う。ポータブルアプリケーションキーの妥当性を、様々な方法のいずれかで決定することができ、これらの方法は、有効なキーのリストを有すること、ポータブルアプリケーションキーを処理して妥当性を決定するアルゴリズムを有することなどである。
【００６４】
プロセス２５０は、ポータブルアプリケーションのアクティベーションが成功であるかどうかに基づいて継続する（動作２５６）。ポータブルアプリケーションキーがすでに最大数の許可されたデバイスにバインドされておらず（または、ポータブルアプリケーションキーが以前にこのデバイス識別子にバインドされており）、ポータブルアプリケーションキーが有効なキーである場合、アクティベーションは成功である。しかし、ポータブルアプリケーションキーがすでに最大数の許可されたデバイスにバインドされている場合、または、ポータブルアプリケーションキーが有効なキーでない場合、アクティベーションは成功ではない。
【００６５】
アクティベーションが成功する場合、アクティベーションサービスは、ポータブルアプリケーションキーがデバイス識別子に関連付けられるという記録を保持する（動作２５８）。ポータブルアプリケーションがアクティベートされているという表示がポータブルアプリケーションに戻され、上述のように、ポータブルアプリケーションがアクティベートされているという表示をまたポータブルストレージデバイス上に格納することもできる。この表示を、例えば、特定の識別子またはデータ値、その認証性をポータブルアプリケーションによって暗号アルゴリズムを使用して検証することができるデジタル証明書などにすることができる。しかし、アクティベーションが成功ではない場合、アクティベーションは失敗し（動作２６０）、アクティベーションが失敗しているという表示がポータブルアプリケーションに戻される。
【００６６】
図２に戻ると、ポータブルアプリケーションをポータブルストレージデバイス１０２上でプリインストールすることができ、または代替として、ユーザによってインストールすることができる。ポータブルアプリケーションをポータブルストレージデバイス１０２のメーカーによって、またはある他のエンティティ（例えば、リセラー、配布者、メーカーによって雇われたサードパーティなど）によってプリインストールすることができる。このように、ユーザは、１つまたは複数のポータブルアプリケーションがすでにその上にインストールされているポータブルストレージデバイス１０２を購入するようになる。代替として、１つまたは複数のポータブルアプリケーションをポータブルストレージデバイス１０２上に、ユーザによってインストールすることができる。例えば、ユーザは、ディスク上の、またはネットワーク（インターネットなど）を介して、ポータブルアプリケーションを購入し、購入されたアプリケーションをポータブルストレージデバイス１０２上にインストールすることができる。
【００６７】
インストレーションプロセス中に、それがポータブルストレージデバイス１０２の購入者によって実行されるか、ある他の個人によって実行されるかにかかわらず、必要なファイルはストレージ要素１０８にアプリケーションファイル１６２としてコピーされ、これらのファイルのいかなる必要な変更または構成もが実行される。加えて、通常はシステム情報ストアにインストレーションプロセスの一部として書き込まれるようになるいかなる情報も、その代わりにプライベートストア１６４に書き込まれる。通常は、セットアップファイルが実行されて、ポータブルアプリケーションがインストールされる。実行されるとき、セットアップファイルは、アプリケーションをインストールするためにこれらの様々な機能を実行する。
【００６８】
図５は、ポータブルアプリケーションをポータブルストレージデバイス上にインストールするための一実施形態のプロセス２８０を例示するフローチャートである。プロセス２８０を、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせで実施することができる。
【００６９】
最初に、ポータブルアプリケーションをポータブルストレージデバイス上にインストールするための要求が受信される（動作２８２）。この要求を手動のユーザ選択にすることができ、これは、ユーザが「インストール」または「セットアップ」アイコンをダブルクリックすること、または、１つまたは複数のファイル（「インストール」または「セットアップ」ファイルまたはアイコンなど）をソースメディアからポータブルストレージデバイスにドラッグアンドドロップすることなどである。この要求を代替としてある他のアクションに固有にすることができ、このアクションは、ポータブルストレージデバイスが結合される同じコンピュータにインストレーションディスクを挿入すること、または、ポータブルストレージデバイスを特定のコンピュータ（例えば、メーカー、または、ある他のサードパーティの場所にある）に結合することなどである。
【００７０】
この要求に応答して、ポータブルアプリケーションのための１つまたは複数のアプリケーションファイルはポータブルストレージデバイスに書き込まれる（動作２８４）。これらのアプリケーションファイルは、例えば、図２のアプリケーションファイル１６２である。アプリケーションファイルは適切に構成される（動作２８６）。構成がある場合、何の構成がインストレーションプロセスの一部として必要とされるかは、異なるポータブルアプリケーションについて変わる可能性がある。必要とされるいかなるこのような構成も、通常は、ポータブルアプリケーションに関連付けられる（および、通常はプロセス２８０を実施する）インストレーションファイル内で識別される。
【００７１】
アプリケーションファイルを構成することに加えて、動作２８６で、自動実行モジュール１６０もまた構成することができる。この自動実行モジュール１６０の構成には、自動実行モジュール１６０に、ポータブルストレージデバイス上のポータブルアプリケーションの存在を識別する情報、ならびに、ポータブルアプリケーションを実行する方法に関する情報（例えば、ポータブルアプリケーションの実行を開始するためにどのファイルを実行するべきであるか、ポータブルアプリケーションのためのどのフォルダファイルが格納されるか、など）を追加することが含まれる。
【００７２】
ポータブルアプリケーションに関する情報は、ポータブルストレージデバイス上のプライベートストアに書き込まれる（動作２８８）。プライベートストアに書き込まれる情報を、ポータブルアプリケーションに関するいかなる情報にすることもでき、この情報は、アプリケーションのための構成設定、アプリケーションが実行中であるときのパフォーマンスを高めるためのパフォーマンスチューニングパラメータ、どのファイル型がポータブルアプリケーションに関連付けられるか（例えば、ファイルがポータブルアプリケーションに関連付けられることを視覚的にユーザに識別するために、適切なアイコンがその型のファイルについて表示されるようにする）などである。上述のように、このような情報は、ポータブルストレージデバイスが結合されるコンピュータ上のシステム情報ストアではなく、ポータブルストレージデバイス上のプライベートストアに書き込まれる。いくつかの状況では、最初に動作２８８が特定のポータブルストレージデバイスに対して実行されるとき、プライベートストアがまだ作成されていない場合がある。このような状況では、動作２８８の一部として、プライベートストアはポータブルストレージデバイス上で作成される。
【００７３】
代替実施形態では、インストレーションプロセスが異なる場合があることに留意されたい。例えば、ドラッグアンドドロップ技術を、１つまたは複数のファイルがソースメディアからポータブルストレージデバイスにコピーされるところで、使用することができる。もう１つの例として、インストレーションプロセス２８０を実行するのではなく、インストレーションファイルなどから、実行可能ファイルのすべて、プライベートストア、プライベートローカルプロファイル、および自動実行モジュールを含むストレージ要素のイメージを作成することができ、これは、ポータブルアプリケーションのインストレーションの後に存在するべきであるからである。このイメージを単にポータブルストレージデバイスのストレージ要素上にコピーすることができ、ポータブルストレージデバイスは、すべての必要とされた実行可能ファイル、ならびに、適切なデータによりポピュレートされたプライベートストアおよび／またはプライベートローカルプロファイルを有する結果となる。イメージを事前生成してそのイメージをポータブルストレージデバイス上にコピーするこのようなプロセスは通常、ポータブルストレージデバイスのメーカー、または、同じポータブルアプリケーションと共に構成された多数のポータブルストレージデバイスを製造、配布または販売している他のサードパーティによって使用されるようになる。
【００７４】
図２に戻ると、モジュール１６０、ファイル１６２、ストア１６４、プロファイル１６６およびデータセクション１６８は、ストレージ要素１０８内に含まれるとして例示されるが、代替としてこれらのコンポーネントの１つまたは複数、または、これらのコンポーネントの１つまたは複数の一部を、異なる種類のメモリ内に格納することができることに留意されたい。例えば、再書き込み不可能な読み取り専用メモリを、再書き込み可能なストレージ要素ではなく、１つまたは複数のコンポーネントまたはその一部のために使用することができる。再書き込み不可能な読み取り専用メモリ内に格納されるようになるコンポーネントまたはその一部は、変更可能でなくなるこれらのコンポーネントまたは一部となり、これは、アプリケーションのための特定の命令（アプリケーションファイル１６２の一部または全部）、本明細書で論じた自動実行機能のための命令（自動実行モジュール１６０の一部または全部）などである。
【００７５】
加えて、ポータブルストレージデバイス１０２を様々な異なるデバイスのいずれにすることもできることに留意されたい。例えば、ポータブルストレージデバイス１０２は、ポータブルＵＳＢフラッシュメモリストレージデバイス、ポータブルハードディスクドライブデバイス、または、デジタルカメラなど、フラッシュメモリまたは他のストレージ要素を含むある他のデバイスであってもよい。
【００７６】
このように、本明細書で論じたポータブルアプリケーションは、ポータブルストレージデバイス上のアプリケーションの容易なポータビリティを可能にすることがわかる。ポータブルアプリケーションを異なるホストコンピュータ上で実行させることができ、これは、ポータブルストレージデバイスを異なるホストコンピュータにプラグインすること、またはそうでない場合はポータブルストレージデバイスを異なるホストコンピュータに結合することによって行う。環境設定への変更はホストコンピュータのいずれにも行われず、ファイルはホストコンピュータのいずれにもインストールされない。このように、ポータブルアプリケーションがホストコンピュータ上で実行される場合でさえ、ホストコンピュータ上の環境設定は同じままとなり、ユーザのプライバシーは保持され、これは、ポータブルアプリケーションが、ユーザまたはユーザが作業していたデータについての情報を漏らす可能性のあるファイルまたは設定を後に残さないからである。
【００７７】
図６は、本明細書で説明するポータブルアプリケーションを使用することができる汎用コンピュータ環境３００を例示する。コンピュータ環境３００は、コンピューティング環境の一実施形態でしかなく、コンピュータおよびネットワークアーキテクチャの使用または機能の範囲についてのいかなる制限も示唆するように意図されない。コンピュータ環境３００は、例示的コンピュータ環境３００において例示するコンポーネントのいずれか１つまたは組み合わせに関係するいかなる依存性または要件も有するとして解釈されるべきではない。
【００７８】
コンピュータ環境３００は、コンピュータ３０２の形態における汎用コンピューティング装置を含む。コンピュータ３０２は例えば、図１のホストコンピュータ１０４にすることができる。コンピュータ３０２のコンポーネントには、それだけに限定されないが、１つまたは複数のプロセッサまたは処理装置３０４、システムメモリ３０６、および、プロセッサ３０４を含む様々なシステムコンポーネントをシステムメモリ３０６に結合するシステムバス３０８が含まれる可能性がある。
【００７９】
システムバス３０８はいくつかの種類のバス構造のいずれかの１つまたは複数を表し、これらのバス構造には、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、ＡＧＰ、および、プロセッサまたはローカルバスが含まれる。例として、このようなアーキテクチャには、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカルバス、および、メザニンバスとしても知られるＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ（ＰＣＩ）バスが含まれる可能性がある。
【００８０】
通常、コンピュータ３０２は、様々なコンピュータ読取可能な媒体を含む。このような媒体は、コンピュータ３０２によってアクセス可能であるいかなる使用可能な媒体にすることもでき、揮発性および不揮発性の媒体、取外し可能および固定の媒体が含まれる。
【００８１】
システムメモリ３０６は、ランダムアクセスメモリ（ＲＡＭ）３１０などの揮発性メモリ、および／または、読み取り専用メモリ（ＲＯＭ）３１２などの不揮発性メモリの形態におけるコンピュータ読取可能な媒体を含む。基本入出力システム（ＢＩＯＳ）３１４は、起動中など、コンピュータ３０２内の複数の要素の間で情報を転送する助けとなる基本ルーチンを含み、ＲＯＭ３１２に格納される。ＲＡＭ３１０は通常、処理装置３０４によって即時アクセス可能および／または現在操作されているデータおよび／またはプログラムモジュールを含む。
【００８２】
コンピュータ３０２はまた、他の取外し可能／固定、揮発性／不揮発性のコンピュータストレージ媒体を含むこともできる。例としてのみ、図６は、固定、不揮発性の磁気媒体（図示せず）に対する読み書きを行うためのハードディスクドライブ３１６、取外し可能な不揮発性の磁気ディスク３２０（例えば、「フロッピー（登録商標）ディスク」）に対する読み書きを行うための磁気ディスクドライブ３１８、および、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭまたは他の光媒体など、取外し可能な不揮発性の光ディスク３２４からの読み取りおよび／またはそれへの書き込みを行うための光ディスクドライブ３２２を例示する。ハードディスクドライブ３１６、磁気ディスクドライブ３１８、および光ディスクドライブ３２２はそれぞれシステムバス３０８に、１つまたは複数のデータメディアインターフェイス３２５によって接続される。代替として、ハードディスクドライブ３１６、磁気ディスクドライブ３１８、および光ディスクドライブ３２２を、システムバス３０８に、１つまたは複数のインターフェイス（図示せず）によって接続することができる。上述のようなポータブルフラッシュストレージデバイスなど、追加のコンピュータストレージ媒体もまた、コンピュータ３０２の一部として含まれる場合がある。
【００８３】
これらのディスクドライブおよびそれらの関連付けられたコンピュータ読取可能な媒体は、コンピュータ３０２用のコンピュータ読取可能な命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージを提供する。この実施形態は、ハードディスク３１６、取外し可能な磁気ディスク３２０、および取外し可能な光ディスク３２４を例示するが、コンピュータによってアクセス可能であるデータを格納することができる他の種類のコンピュータ読取可能な媒体もまた、例示的コンピューティングシステムおよび環境を実施するために利用することができ、これらの他の種類のコンピュータ読取可能な媒体は、磁気カセットまたは他の磁気ストレージデバイス、フラッシュメモリカード、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ストレージ、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電気的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）などであることを理解されたい。
【００８４】
いかなる数のプログラムモジュールも、ハードディスク３１６、磁気ディスク３２０、光ディスク３２４、ＲＯＭ３１２、および／または、ＲＡＭ３１０上に格納することができ、これらのプログラムモジュールには、例として、オペレーティングシステム３２６、１つまたは複数のアプリケーションプログラム３２８、他のプログラムモジュール３３０およびプログラムデータ３３２が含まれる。このようなオペレーティングシステム３２６、１つまたは複数のアプリケーションプログラム３２８、他のプログラムモジュール３３０およびプログラムデータ３３２の各々（またはそれらのある組み合わせ）は、分散ファイルシステムをサポートする常駐コンポーネントの全部または一部を実施することができる。
【００８５】
ユーザはコマンドおよび情報をコンピュータ３０２へ、キーボード３３４およびポインティングデバイス３３６（例えば、「マウス」）などの入力デバイスを介して入力することができる。他の入力デバイス３３８（具体的に図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、シリアルポート、スキャナおよび／または同種のものが含まれる場合がある。これらおよび他の入力デバイスは処理装置３０４へ、システムバス３０８に結合される入出力インターフェイス３４０を介して接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）、またはＦｉｒｅｗｉｒｅ（ＩＥＥＥ１３９４）バスなど、他のインターフェイスおよびバス構造によって接続することができる。
【００８６】
モニタ３４２または他の種類の表示デバイスもまたシステムバス３０８へ、ビデオアダプタ３４４などのインターフェイスを介して接続することができる。モニタ３４２に加えて、他の出力周辺デバイスには、スピーカ（図示せず）およびプリンタ３４６など、コンピュータ３０２に入出力インターフェイス３４０を介して接続することができるコンポーネントが含まれる可能性がある。
【００８７】
コンピュータ３０２はネットワーク環境において、リモートコンピューティング装置３４８など、１つまたは複数のリモートコンピュータへの論理接続を使用して動作することができる。例として、リモートコンピューティング装置３４８を、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイスまたは他の共通ネットワークノードなどにすることができる。リモートコンピューティング装置３４８はポータブルコンピュータとして例示され、コンピュータ３０２に関連して本明細書で説明した要素および機能の多数またはすべてを含むことができる。
【００８８】
コンピュータ３０２とリモートコンピュータ３４８の間の論理接続は、ローカルエリアネットワーク（ＬＡＮ）３５０および汎用ワイドエリアネットワーク（ＷＡＮ）３５２として示される。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的である。
【００８９】
ＬＡＮネットワーキング環境において実施される場合、コンピュータ３０２はローカルネットワーク３５０へ、ネットワークインターフェイスまたはアダプタ３５４を介して接続される。ＷＡＮネットワーキング環境において実施される場合、コンピュータ３０２は通常、モデム３５６、またはワイドネットワーク３５２を介して通信を確立するための他の手段を含む。モデム３５６をコンピュータ３０２の内部または外部にすることができ、システムバス３０８へ、入出力インターフェイス３４０または他の適切なメカニズムを介して接続することができる。例示されたネットワーク接続は例示的であり、コンピュータ３０２および３４８の間で通信リンクを確立する他の手段を使用することができることは理解されよう。
【００９０】
コンピューティング環境３００により例示したものなど、ネットワーク環境では、コンピュータ３０２に関連して示したプログラムモジュールまたはその一部を、リモートメモリストレージデバイスに格納することができる。例として、リモートアプリケーションプログラム３５８はリモートコンピュータ３４８のメモリデバイス上に存在する。例示のため、オペレーティングシステムなど、アプリケーションプログラムおよび他の実行可能プログラムコンポーネントを本明細書で離散ブロックとして例示するが、このようなプログラムおよびコンポーネントは様々な時間にコンピューティング装置３０２の異なるストレージコンポーネント内に存在し、コンピュータのデータプロセッサによって実行されることは理解されよう。
【００９１】
様々なモジュールおよび技術を本明細書で一般に、１つまたは複数のコンピュータもしくは他のデバイスによって実行されるプログラムモジュールなど、コンピュータ実行可能命令に関連して説明することができる。一般に、プログラムモジュールには、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれ、これらは特定のタスクを実行するか、あるいは特定の抽象データ型を実装する。通常、プログラムモジュールの機能は、様々な実施形態において望まれるように結合または分散されることが可能である。
【００９２】
これらのモジュールおよび技術の一実施態様を、ある形態のコンピュータ読取可能な媒体上に格納し、または、これを介して送信することができる。コンピュータ読取可能な媒体は、コンピュータによってアクセスすることができるいかなる使用可能な媒体にすることもできる。例として、限定ではなく、コンピュータ読取可能な媒体は「コンピュータストレージ媒体」および「通信媒体」を含むことができる。
【００９３】
「コンピュータストレージ媒体」には、揮発性および不揮発性、取外し可能および固定の媒体が含まれ、これらの媒体は、コンピュータ読取可能な命令、データ構造、プログラムモジュールまたは他のデータなど、情報の格納のためのいずれかの方法または技術において実装される。コンピュータストレージ媒体には、それだけに限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または、所望の情報を格納するために使用することができ、コンピュータによってアクセスすることができる他のいかなる媒体もが含まれる。
【００９４】
通常、「通信媒体」は、コンピュータ読取可能な命令、データ構造、プログラムモジュールまたは他のデータを、搬送波または他の移送メカニズムなどの変調データ信号において実施する。さらに、通信媒体は、あらゆる情報配信媒体を含む。「変調データ信号」という用語は、信号内の情報を符号化するような方法において特性の１つまたは複数が設定または変更されている信号を意味する。例として、限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、ならびに、音響、ＲＦ、赤外線および他の無線媒体などの無線媒体を含む。上記のいずれの組み合わせもまた、コンピュータ読取可能な媒体の範囲内に含む。
【００９５】
上記の説明は、構造的特徴および／または方法的動作に特有である言語を使用するが、添付の特許請求の範囲において定義される本発明は、説明した特定の特徴または動作に限定されないことを理解されたい。むしろ、特定の特徴および動作は、本発明を実施する例示的形態として開示される。
【図面の簡単な説明】
【００９６】
【図１】ポータブルアプリケーションを使用することができる環境の一実施形態を例示するブロック図である。
【図２】ポータブルストレージデバイスの一実施形態をさらに詳細に例示する図である。
【図３】ポータブルアプリケーションを実行するプロセスの一実施形態を例示するフローチャートである。
【図４】ポータブルアプリケーションをアクティベートするプロセスの一実施形態を例示するフローチャートである。
【図５】ポータブルアプリケーションをポータブルストレージデバイス上にインストールするプロセスの一実施形態を例示するフローチャートである。
【図６】本明細書において説明するポータブルアプリケーションを使用することができる汎用コンピュータ環境を例示する図である。
【符号の説明】
【００９７】
１０２  ポータブルストレージデバイス
１０６  インターフェイス
１０８  ストレージ要素
１６０  自動実行モジュール
１６２  アプリケーションファイル
１６４  プライベートストア
１６６  プライベートローカルプロファイル
１６８  データセクション
【図１】
2006172449.tif 000003
【図２】
2006172449.tif 000004
【図３】
2006172449.tif 000005
【図４】
2006172449.tif 000006
【図５】
2006172449.tif 000007
【図６】
2006172449.tif 000008