(57)【要約】  本メカニズムは、複数のアプリケーションが同一のユーザアカウントを共有する環境において、アプリケーション特有のデータを分離するために提供される。本メカニズムによって、アプリケーション特有のデータはそのアプリケーションだけによってアクセスされることが可能になる。アプリケーションがアプリケーション特有のデータをリクエストするとき、そのデータはロードされ、データへのハンドルがアプリケーションに返される。ハンドルを介してのみデータへのアクセスが許される。したがって、ハンドルを所有するアプリケーションだけが、データにアクセスできる。ロードされたデータにカウンタを関連付けることができる。データ用ハンドルが生成される度にカウンタの値を増やし、データ用ハンドルが終了される度に減らす。カウンタの値が０に達すると、データを自動的にアンロードする。【選択図】  図１
2009503633.tif 000002
【特許請求の範囲】
【請求項１】
同一のユーザアカウント（１０１Ａ）に複数のアプリケーションを関連付ける計算機システムにおいて、第１のアプリケーション特有のデータを第２のアプリケーションから分離するための方法であって、第１のアプリケーション及び第２のアプリケーションが、前記同一のユーザアカウントを共有していて、
前記データに対するリクエストを前記第１のアプリケーションから受信したとき、前記データをロードするステップと、
前記データへのハンドルを生成するステップと、
前記ハンドルを前記第１のアプリケーションに渡すステップと、
前記第２のアプリケーションからの前記データに対するアクセスリクエストを拒否するステップと、を含む方法。
【請求項２】
前記データをロードするステップが、前記データ用の固有識別子を生成するステップと、
前記固有識別子を使用し、前記データ用のアクセス経路を生成するステップと、
前記アクセス経路によって指定される位置に前記データをロードするステップと、を含む請求項１記載の方法。
【請求項３】
さらに、前記データをロードしたあと前記データ用のカウンタを生成するステップであって、前記カウンタの値が０に初期化されるものと、
前記ハンドルが前記データ用に生成されるとき前記カウンタの値を増やすステップと、
前記ハンドルが終了されるとき前記カウンタの値を減らすステップと、を含む請求項１記載の方法。
【請求項４】
さらに、前記カウンタの値が０に達したとき、前記データをアンロードするステップを含む請求項３記載の方法。
【請求項５】
前記計算機システムがマイクロソフトのウィンドウズ（登録商標）レジストリを含み、前記データが、ウィンドウズ（登録商標）レジストリの１つ以上のハイブであることを特徴とする請求項１記載の方法。
【請求項６】
複数のアプリケーションが同一のユーザアカウントを共有する環境において、
アプリケーション特有のデータアクセスを提供することに関連する機能を含み、
計算プロセスからアクセスリクエストを受信したとき、前記機能が、データオブジェクトへのアクセスを提供し、かつ計算プロセス（２０２）ただ１つによって前記データオブジェクトがアクセスできるように構成できるもの、を含む１つ以上の計算機可読媒体において実装されるアプリケーションプログラミングインターフェース。
【請求項７】
前記機能は、前記データオブジェクトへのアクセスが、前記機能を呼ぶ前記計算プロセスに限定されるか否かを示すように構成可能なパラメタ、を含むことを特徴とする請求項６記載のアプリケーションプログラミングインターフェース。
【請求項８】
前記計算プロセスによって呼ばれたとき、前記機能が、
前記データオブジェクト用の固有識別子を生成することと、
前記固有識別子を使用し経路を生成することと、
前記経路で示される位置に前記データオブジェクトをロードすること、を特徴とする請求項６記載のアプリケーションプログラミングインターフェース。
【請求項９】
前記機能が、前記データオブジェクトへのハンドルを計算プロセスに返すこと、を特徴とする請求項８記載のアプリケーションプログラミングインターフェース。
【請求項１０】
前記機能が、計算プロセスが前記ハンドル使用を終了するとき、前記ハンドルをクローズし、
いかなるハンドルも前記データオブジェクトと関連付けられていないとき、前記データオブジェクトをアンロードすること、を特徴とする請求項９記載のアプリケーションプログラミングインターフェース。
【請求項１１】
あるアプリケーションと同一のユーザアカウントを共有する別のアプリケーションから前記アプリケーション特有のデータを分離するための計算機に実装された方法であって、
前記データに対して前記アプリケーションからアクセスリクエストを受信したとき、
前記データをロードするステップと、
前記データへのハンドルを生成するステップと、
前記ハンドルを前記アプリケーションに渡すステップと、及び
他のアプリケーションから前記データへのいかなるアクセスリクエストも拒否するステップと、を含む方法。
【請求項１２】
前記データをロードするステップが、
前記データ用の固有識別子を生成するステップと、
前記固有識別子を使用して前記データ用のアクセス経路を生成するステップと、
前記アクセス経路によって指定される位置に前記データをロードするステップと、を含む請求項１１記載の計算機実装方法。
【請求項１３】
さらに、前記データをロードするとき前記データ用のカウンタを生成し、前記カウンタの値が０に初期化するステップと、
前記データのためにハンドルが作成される度に前記カウンタの値を増やすステップと、
前記ハンドルが終了される度に前記カウンタの値を減らすステップを含む請求項１１記載の計算機実装方法。
【請求項１４】
さらに、前記カウンタの値が０に達するとき、前記データをアンロードするステップを含む請求項１３記載の計算機実装方法。
【発明の詳細な説明】
【背景技術】
【０００１】
従来、オペレーティングシステムは、ユーザアカウントの粒度でアプリケーション特有のデータを分離する。すなわち、異なるユーザアカウントで動作するアプリケーションは、相互に分離される。その結果、あるユーザアカウントで動作するアプリケーションは、別のユーザアカウントで動作する同一のアプリケーション用のデータにアクセスできない。しかし、同一のユーザアカウントで実行するアプリケーション用のデータは、相互に分離されない。その結果、あるユーザアカウントで実行するアプリケーションが、同一のユーザアカウントで実行する別のアプリケーション用のデータにアクセスし、変更することさえ可能である。これによって潜在的な安定性、セキュリティ及び管理に問題をもたらし得る。したがって、同一のユーザアカウントを共有するアプリケーションの間でアプリケーション特有のデータを分離するためのメカニズムを提供するのが望まれる。
【発明の開示】
【課題を解決するための手段】
【０００２】
詳細説明において、さらに後述する概念を抽出したものを簡易化された形式で紹介するためにこの概要を提供する。この概要は、請求項に記載された対象に関する重要な特徴を特定することを意図せず、また請求項に記載された対象の範囲を決定する際の支援として使用されることも意図しない。
【０００３】
複数のアプリケーションが同一のユーザアカウントに関連付けられた環境において、本発明によって、アプリケーション特有のデータが別のアプリケーションから分離できる。例えば、本発明はデータにアクセスするために、ハンドルを基本とするアプローチを使用する。アプリケーションが、データに対するハンドルを所有している場合、そのアプリケーションは、データにアクセスできる。データがアプリケーション特有である場合、そのデータ用にただ１つのハンドルを生成できる。ハンドルは、データを特定しているアプリケーションに渡される。ハンドルを所有するアプリケーションだけがそのデータにアクセスできる。同一のユーザアカウントをアプリケーションと共有する別のアプリケーションからのアクセスリクエストは拒否される。
【０００４】
本発明の一特徴によると、アプリケーションがデータにアクセスする必要があって、データがロードされていないとき、データがまずロードされる。望ましくは、固有識別子がデータ用に生成される。固有識別子はその後、データ用のアクセス経路を形成するために使用される。アクセス経路は、データがロードされ得る場所を示す。データは、その場所にロードされる。ハンドルは、ロードされたデータ用に生成され、アプリケーションに渡される。アプリケーションは、ハンドルを介しデータにアクセスできる。アプリケーションただ１つがデータにアクセスできる場合、そのデータはそのアプリケーション特有と見なされる。同一のユーザアカウントをそのアプリケーションと共有する他のいかなるアプリケーションもロードされたデータに対するハンドルを生成できず、ハンドルを介してデータにアクセスもできない。他方、データがアプリケーション特有でない場合、別のアプリケーションは、データに対するハンドルを生成し、そのハンドルを介しデータにアクセスできる。
【０００５】
本発明のもう１つの特徴によると、データがロードされるとき、カウンタがそのデータ用に生成される。ハンドルがそのデータ用に生成される度にカウンタの値を増やし、そのデータ用のハンドルが終了される度に減らす。カウンタの値が０に達すると、データは自動的にアンロードされる。
【０００６】
本発明のさらなる特徴によると、アプリケーション特有のデータアクセスのためにアプリケーションプログラミングインターフェースが提供される。複数のアプリケーションが同一のユーザアカウントを共有する環境において、アプリケーションプログラミングインターフェースは、計算プロセスすなわちアプリケーションからアクセスリクエストを受信したときにデータオブジェクトへのアクセスを提供する機能を含む。アクセスをリクエストする計算プロセスのみによって、データオブジェクトがアクセスされ得るだけであるように本機能を構成できる。すなわち、別の計算プロセスはそのデータオブジェクトにアクセスできない。望ましくは、本機能を現在呼んでいる計算プロセスだけがデータオブジェクトにアクセスできるように構成され得るパラメタを本機能は含む。また、データオブジェクトにアクセスするための本機能を呼ぶ任意の計算プロセスがデータオブジェクトにアクセスできるようにもパラメタを構成できる。
【０００７】
さらに具体的にいうと、データオブジェクトへのアクセスをリクエストする計算プロセスによって呼ばれたとき、本機能はそのデータオブジェクト用の固有識別子を生成する。固有識別子はその後、データオブジェクトをロードするための場所を示す経路を生成するために使用され得る。それにしたがって本機能がその後、データオブジェクトをロードする。本機能はその後、ロードされたデータオブジェクトへのハンドルを計算プロセスに返す。計算プロセスがアクセスリクエストを完了する度に、対応するハンドルを終了する。データオブジェクトに関連付けられるハンドルがなくなると、本機能はそのデータオブジェクトをアンロードする。
【発明の効果】
【０００８】
要約すれば、本発明によって、アプリケーション特有のデータが同一のユーザアカウントを前記アプリケーションと共有する別のアプリケーションによってアクセスされるのを防ぐことができる。本発明によって、アプリケーション特有のデータは、そのアプリケーションだけによってアクセス可能になる。こうして同一のユーザアカウントをアプリケーションと共有する別のアプリケーションは、アプリケーション特有のデータの整合性を干渉し得ない。
【０００９】
添付図面と併用するときに以下の詳細説明を参照することにより、同等のことがさらに理解されるようになるので、上記の特徴及び本発明の添付の利点の多くが、さらに容易に正しく評価されるようになるだろう。
【発明を実施するための最良の形態】
【００１０】
一般的に説明すると、本発明の実施形態は、同一のユーザアカウントに関連付けられたアプリケーション間においてアプリケーション特有のデータを分離する。さらに具体的にいうと、本発明の実施形態は、複数のアプリケーションが同一のユーザアカウントに関連付けられている環境において、データにアクセスするためのハンドルを基本とするアプローチを採用する。アプリケーションが、アプリケーション特有のデータにアクセスする必要があるとき、そのデータはロードされ、ハンドルがデータ用に生成され、アプリケーションに渡される。アプリケーションは、ハンドルを介しデータにアクセスする。別のアプリケーションは、そのデータ用のハンドルを生成できず、したがってそのデータへのアクセスは拒否される。本発明の実施形態においては、データは、同一のユーザアカウントを共有するアプリケーションによって使用され得る任意のデータを含み得る。
【００１１】
図１はユーザ（１０１）のために複数のアプリケーションをホスティングする計算機システム（１００）を例示する。複数のアプリケーションは、アプリケーションＡ（１０２Ａ）及びアプリケーションＢ（１０２Ｂ）を含む。例示されたこの例においては、アプリケーションデータＡ（１０４Ａ）は、アプリケーションＡ（１０２Ａ）特有であり、一方、アプリケーションデータＢ（１０４Ｂ）は、アプリケーションＢ（１０２Ｂ）特有である。本発明の実施形態においては、アプリケーション特有のデータオブジェクトに対してアプリケーションからアクセスリクエストを受信したとき、固有識別子（”ＵＩＤ”）が動的に生成される。ＵＩＤは、データオブジェクト用のアクセス経路を生成するために使用される。例えばアプリケーションＡ（１０２Ａ）が一旦、アプリケーションデータＡ（１０４Ａ）をリクエストすると、ＵＩＤ  Ａ（１０６Ａ）が動的に生成される。ＵＩＤ  Ａ(１０６Ａ)))))はその後、／ｒｏｏｔ／ａｐｐ／ＵＩＤ  Ａ／Ａｐｐｌｉｃａｔｉｏｎ  Ｄａｔａ  Ａのようなアクセス経路を生成するのに使用され、そのアクセス経路によって指定される場所にアプリケーションデータＡ（１０４Ａ）をロードするために使用され得る。同様に、アプリケーションＢ（１０２Ｂ）がアプリケーションデータＢ（１０４Ｂ）にアクセスすることを望むときは、計算機システム（１００）は、ＵＩＤ  Ｂ（１０６Ｂ）を動的に生成し、ＵＩＤ  Ｂは、アプリケーションデータＢ（１０４Ｂ）用のアクセス経路を形成するのに使用される。そのようなアクセス経路は、例えば、／ｒｏｏｔ／ａｐｐ／ＵＩＤ  Ｂ／Ａｐｐｌｉｃａｔｉｏｎ  Ｄａｔａ  Ｂであり得る。アプリケーションデータＢ（１０４Ｂ）は、アクセス経路によって指定される場所にロードされ得る。
【００１２】
本発明の実施形態においては、ＵＩＤ及びアプリケーション特有のデータオブジェクト用アクセスに対応する経路の生成後、計算機システム（１００）は、アクセス経路によって指定される場所にデータオブジェクトをロードする。計算機システム（１００）はその後、ロードされたデータオブジェクトへのハンドルを生成し、データオブジェクトをリクエストしているアプリケーションにそのハンドルを渡す。例えば図１に示されるように、アプリケーションＡ（１０２Ａ）は、アプリケーションデータＡ（１０４Ａ）へのハンドルＡ（１１０Ａ）を受け取る。アプリケーションＢ（１０２Ｂ）は、アプリケーションデータＢ（１０４Ｂ）へのハンドルＢ（１１０Ｂ）を受け取る。本発明の実施形態においては、データオブジェクトへのハンドルを所有するアプリケーションだけが、データオブジェクトにアクセスでき、データオブジェクトを明確に特定するアプリケーションだけが、そのデータオブジェクトへのハンドルを所有できる。したがって、図１に例示された例において、アプリケーションＡ（１０２Ａ）だけが、アプリケーションデータＡ（１０４Ａ）にアクセスでき、アプリケーションＢ（１０２Ｂ）だけが、アプリケーションデータＢ（１０４Ｂ）にアクセスできる。
【００１３】
理論的には別のアプリケーションがそのアクセス経路を介し、データオブジェクトにアクセスできる。本発明の実施形態においては、あるアプリケーションがそのアクセス経路を介しデータオブジェクトにアクセスするのを試みる場合、そのアクセスは拒否される。例えば、前述のようにアプリケーションデータＡ（１０４Ａ）用のアクセス経路は、／ｒｏｏｔ／ａｐｐ／ＵＩＤ  Ａ／Ａｐｐｌｉｃａｔｉｏｎ  Ｄａｔａ  Ａである。理論的には、アプリケーションＢ（１０２Ｂ）は、このアクセス経路を介し、アプリケーションデータＡ（１０４Ａ）にアクセスできる。本発明の実施形態においては、そのようなアクセスを拒否し、ハンドルＡ（１１０Ａ）を介しアプリケーションデータＡ（１０４Ａ）に対してのみアクセスを許可する。このように、アプリケーションＡ（１０２Ａ）だけがアプリケーションデータＡ（Ａ１０４）にアクセスできる。
【００１４】
本発明の実施形態はまた、ロードされたデータオブジェクト用のカウンタも提供する。ロードされたデータオブジェクト用にハンドルが生成される度に、カウンタの値を増やす。ロードされたデータオブジェクトへのハンドルが終了される度に、カウンタの値を減らす。本発明の実施形態においては、カウンタの値が０に達すると、対応するデータオブジェクトはアンロードされる。例えば、図１に示されるように、ロードされたアプリケーションデータＡ（１０４Ａ）はカウンタ（１１２Ａ）に関連付けられ、ロードされたアプリケーションデータＢ（１０４Ｂ）はカウンタ（１１２Ｂ）に関連付けられる。本発明の実施形態においては、あるデータオブジェクトがロードされると、別のアプリケーションは、そのロードされたデータオブジェクトと別のデータオブジェクトとを置換できない。
【実施例】
【００１５】
本発明の例示的な実施形態においては、計算機システム（１００）は、マイクロソフト（登録商標）ウィンドウズ（登録商標）オペレーティングシステムを使用する。当業者によって知られているように、マイクロソフト（登録商標）ウィンドウズ（登録商標）オペレーティングシステムは、システム及びユーザ関連のデータ用のセントラルリポジトリとして、ウィンドウズ（登録商標）レジストリを使用する。ディスク上では、ウィンドウズ（登録商標）レジストリは、個別ファイル、データオブジェクトのセットとして組織化されていてハイブ（ｈｉｖｅ）と呼ばれる。ハイブそれぞれは、データの階層構造を含む。ハイブが計算機システムのファイルシステムにロードされると、ハイブへのアクセス経路がＨＫＥＹ  ＬＯＣＡＬ  ＭＡＣＨＩＮＥ／ＳＹＳＴＥＭ／ＣｕｒｒｅｎｔＣｏｎｔｒｏｌＳｅｔ／Ｃｏｎｔｒｏｌ／ｈｉｖｅｌｉｓｔ下に記録される。ハイブがアンロードされると、アクセス経路は削除される。
【００１６】
今、マイクロソフト（登録商標）ウィンドウズ（登録商標）オペレーティングシステムが始動すると、ウィンドウズ（登録商標）レジストリは、デフォルトによりいくつかのハイブをロードする。従来、ＲｅｇＬｏａｄＫｅｙ  ＡＰＩは、ユーザが特定のハイブをオンデマンドでロード可能にすることに使用されてきた。ＲｅｇＬｏａｄＫｅｙ  ＡＰＩを使用し、ハイブがロードされると、ハイブはシステム全体から見えるようになる。その結果、十分なアクセス権を有する人であればハイブのデータにアクセスできる。しかし、ＲｅｇＬｏａｄＫｅｙ  ＡＰＩにより、普通のユーザは特権を必要としないでハイブをロードできない。ＲｅｇＬｏａｄＫｅｙ  ＡＰＩはまた、同一のユーザアカウントで動作する別のアプリケーションが、ハイブのデータを操作することを防げない。
【００１７】
ＲｅｇＬｏａｄＫｅｙ  ＡＰＩによってもたらされる制限の解決のために、本発明の例示的な実施形態は、例えば、ＲｅｇＬｏａｄＡｐｐＫｅｙと呼ばれる新規のハイブロードＡＰＩを提供する。ＲｅｇＬｏａｄＡｐｐＫｅｙ  ＡＰＩによってユーザは、特権を必要とせずにハイブをロードできる。ＲｅｇＬｏａｄＡｐｐＫｅｙ  ＡＰＩはまた、このＡＰＩを使用しロードされたハイブのアプリケーションレベルの分離も可能にする。システムワイドの可視性を有するハイブをロードする既存のＲｅｇＬｏａｄＫｅｙ  ＡＰＩと異なり、ＲｅｇＬｏａｄＡｐｐＫｅｙ  ＡＰＩは、プロセスワイドの可視性だけを有するハイブをロードする。すなわち、ＲｅｇＬｏａｄＡｐｐＫｅｙ  ＡＰＩを呼ぶプロセスだけが、ハイブへのハンドルを取得する。ＲｅｇＬｏａｄＡｐｐＫｅｙ  ＡＰＩは、ハイブを首尾よくロードする最初のプロセスだけに対してハイブを公開する。このようにＲｅｇＬｏａｄＡｐｐＫｅｙ  ＡＰＩを使用し、アプリケーションは、そのアプリケーションだけに関連する設定を含むハイブをロード可能であって、同一又は異なるユーザアカウントの下で実行するいかなる他のアプリケーションもこのハイブにアクセスできないことを保証できる。アプリケーションの終了時又はハイブに関連付けられるハンドルへの最後のリファレンスがクローズされると、ハイブは自動的にアンロードされる。
【００１８】
図２は、ＲｅｇＬｏａｄＡｐｐＫｅｙ  ＡＰＩ（２００）の例示的な使用法を例示する。アプリケーション（２０２）が特定のハイブをロードするためにＲｅｇＬｏａｄＡｐｐＫｅｙ  ＡＰＩ（２００）を呼ぶと、アプリケーション（２０２）は、ロードされるべきハイブのファイル名をＲｅｇＬｏａｄＡｐｐＫｅｙ  ＡＰＩ（２００）に提供する。提供されたファイル名にしたがって、ＲｅｇＬｏａｄＡｐｐＫｅｙ  ＡＰＩ（２００）は、指定されるハイブをロードし、逆にアプリケーション（２０２）へハイブ用ハンドル（２０４）を提供する。アプリケーション（２０２）はその後、ハンドル（２０４）を介しロードされたハイブを操作できる。
【００１９】
ＲｅｇＬｏａｄＡｐｐＫｅｙ  ＡＰＩ（２００）の例示的な実装においては、ロードされるハイブのファイル名を受信したとき、ＲｅｇＬｏａｄＡｐｐＫｅｙ  ＡＰＩ（２００）は、ＵＩＤ（２０６）を生成する。ハイブが既にロードされている場合は、ＵＩＤ（２０６）は無視される。そうでない場合、ＵＩＤ（２０６）は、「ロードする場所への経路」（２０８）を形成するために使用され、ハイブをロード可能な場所を示す。例えば、ハイブを／ｒｅｇｉｓｔｒｙ／ａｐｐ／ＵＩＤにロードできる。
【００２０】
本発明の例示的な実施形態においては、ＲｅｇＬｏａｄＡｐｐＫｅｙ（２００）はその後、ハイブをロードするために、ＮｔＬｏａｄＫｅｙＥｘ  ＡＰＩ（２１０）を呼ぶことができる。ＮｔＬｏａｄＫｅｙＥｘ  ＡＰＩ（２１０）は、「ロードする場所への経路」（２０８）によって指定される場所にハイブをロードし、ハイブ用のハンドル（２０４）を返す。望ましくは、アプリケーション（２０２）がハイブにアクセスするために、ＲｅｇＬｏａｄＡｐｐＫｅｙ  ＡＰＩ（２００）を呼ぶ度に、ハイブ（２０４）用のハンドルが生成される。アプリケーション（２０２）がアクセスを手放すと、対応するハンドルがクローズされる。ハイブ用のハンドルすべてがクローズされると、ハイブは自動的にアンロードされる。
【００２１】
操作上、ＲｅｇＬｏａｄＡｐｐＫｅｙ  ＡＰＩ（２００）は、ハイブへのアクセスが呼び出したアプリケーション（２０２）に限定される指定をするためのパラメタを含むことができる。パラメタが指定されると、その後、別のアプリケーションによる同一のハイブをロードする試みは失敗し、このようにそれをロードしたアプリケーション（２０２）だけに対してハイブをアクセス可能にする。パラメタが指定されない場合、複数のアプリケーション、すなわちプロセスが、同一のハイブをロードできる。さらに、あるアクセスリクエストが、ハイブ用のハンドル（２０４）からの代わりに「ロードする場所への経路」（２０８）を介してハイブへのアクセスを試みる場合、ＲｅｇＬｏａｄＡｐｐＫｅｙ  ＡＰＩ（２００）は、そのアクセスリクエストを拒否する。
【００２２】
図３Ａ及び３Ｂは、同一のユーザアカウントをそのアプリケーションと共有する別のアプリケーションからそのアプリケーション特有のデータを分離するための例示的なプロセス（３００）を示す。本質的にデータがアンロードされた場合、プロセス（３００）は、リクエストされたデータをロードし、ロードされたデータへのハンドルを生成し、そのデータをリクエストしているアプリケーションにハンドルを渡す。プロセス（３００）はまた、データに関連付けられたハンドル数を追跡するために、カウンタを使用する。ハンドルがデータ用に生成される度にカウンタの値を増やし、アプリケーションがデータに関連付けられたハンドルを終了する度に減らす。カウンタの値が０に達すると、データは自動的にアンロードされる。特にアプリケーションは、他のいかなるアプリケーションもデータにアクセスできない仕様のもとデータをロードできる。このような場合、別のアプリケーションからのアクセスリクエストは拒否される。
【００２３】
具体的にいうと図３Ａに示されるように、アプリケーションＡがあるデータへのアクセスをリクエストすると、プロセス（３００）が開始される。判断ブロック（３０１）を参照されたい。本発明の例示的な実施形態においては、そのようなリクエストを受信したとき、プロセス（３００）がデータ用の固有識別子を生成する。ブロック（３０２）を参照されたい。プロセス（３００）はその後、固有識別子を使用し、データ用アクセス経路を生成する。ブロック（３０４）を参照されたい。前述のように、例えばＵＩＤ  Ａ（１０６Ａ）を有するプリケーションデータＡ（１０４Ａ）用のアクセス経路は、／Ｒｏｏｔ／Ａｐｐ／ＵＩＤ  Ａ／ＡｐｐｌｉｃａｔｉｏｎＤａｔａＡである。
【００２４】
プロセス（３００）はその後、別のアプリケーションによって既にデータをロードされたか否かを決定するために次に進む。判断ブロック（３０５）を参照されたい。判断ブロック（３０５）に対する回答が肯定である場合、プロセス（３００）は、ロードされたデータがアプリケーション特有か、すなわちデータをロードしたアプリケーションだけがデータにアクセスできるか否かの決定するために次に進む。判断ブロック（３０６）を参照されたい。判断ブロック（３０６）に対する回答が肯定の場合、データはアプリケーション特有であって、かつ、別のアプリケーションによってロードされたことを意味し、プロセス（３００）は終了する。アプリケーションＡからのアクセスリクエストは拒否される。
【００２５】
判断ブロック（３０６）に対する回答が否定の場合、そのデータは複数のアプリケーションからアクセスされ得ることを意味し、プロセス（３００）は、ロードされたデータへのハンドルを生成する。ブロック（３０８）を参照されたい。
【００２６】
一方、判断ブロック（３０５）に対する回答が否定である場合、データはいかなるアプリケーションによってもロードされていないことを意味し、プロセス（３００）は、生成されたアクセス経路によって特定される場所にデータをロードする。ブロック（３０７）を参照されたい。プロセス（３００）はその後、ロードされたデータに関連付けられるカウンタを生成する。ブロック（３０８）を参照されたい。カウンタの初期値は、０に設定される。プロセス（３００）はその後、データへのハンドルを生成する。ブロック（３０９）を参照されたい。プロセス（３００）は、ハンドルをアプリケーションに渡す。ブロック（３１０）を参照されたい。プロセス（３００）は、ブロック（３１０）から継続端子Ａに続く。
【００２７】
本発明の実施形態においては、データがアプリケーション特有である場合、たった１つのハンドルがデータ用に生成され、そのハンドルを所有しているアプリケーションだけがそのデータにアクセスできる。別のアプリケーションは、データに対するハンドルを有しないために、そのデータにアクセスできない。前述のように、理論的には別のアプリケーションは、生成されたアクセス経路を介しデータにアクセスできる。しかし、本発明の実施形態は、そのアクセス経路を介したデータへのアクセスを拒否する。したがって、データに対するハンドルを所有しているアプリケーションだけが、そのデータにアクセスできる。
【００２８】
本発明の実施形態においては、ロードされたデータに関連付けられたハンドル数を追跡するために、カウンタが使用される。ハンドルがロードされたデータ用に生成される度にカウンタの値を増やし、データへのハンドルが終了される度に減らす。カウンタの値が０に達すると、データは自動的にアンロードされる。その結果、継続端子Ａからの図３Ｂに例示されるように、ハンドルがデータ用に生成されると、カウンタを増やす。ブロック（３１４）を参照されたい。さらに、データへのハンドルを終了されると、カウンタの値を減らす。ブロック（３１６）を参照されたい。本発明の実施形態においては、プロセス（３００）は、カウンタの値が０に達したか否かを決定するために、その値を定期的にチェックする。判断ブロック（３１８）を参照されたい。カウンタの値が０に達すると、そのデータに関連付けられたハンドルがないことを意味し、プロセス（３００）は、データをアンロードする。ブロック（３２０）を参照されたい。判断ブロック（３１８）に対する回答が否定の場合、カウンタの値は０でないことを意味し、プロセス（３００）は、ループしてカウンタの値の任意の調整を待つためにブロック（３１４）へ戻る。一旦、データがアンロードされると、プロセス（３００）は終了する。
【００２９】
結果として本発明の実施形態は、同一のユーザアカウントのもとで実行するアプリケーション特有のデータを分離する。本発明の実施形態はまた、データオブジェクトへの最後のリファレンスが一旦、クローズされると、データオブジェクトを自動的にアンロードする。
【００３０】
本発明の例示的な実施形態を示し説明してきたが、本発明の趣旨と範囲から逸脱せずに本明細への様々な変更を行うことができるのがよく理解されよう。
【図面の簡単な説明】
【００３１】
【図１】本発明の特徴を実施するための例示的な計算機システムを示すブロック図であって、同一のユーザアカウントを有する複数のアプリケーションに対し、アプリケーション特有のデータが分離される。
【図２】本発明の特徴を実施するための例示的なウィンドウズ（登録商標）のＡＰＩを示すブロック図である。
【図３Ａ】あるユーザアカウント内でアプリケーション特有のデータを分離するための例示的なプロセスを示すフロー図である。
【図３Ｂ】あるユーザアカウント内でアプリケーション特有のデータを分離するための例示的なプロセスを示すフロー図である。
【図１】
2009503633.tif 000003
【図２】
2009503633.tif 000004
【図３Ａ】
2009503633.tif 000005
【図３Ｂ】
2009503633.tif 000006