(57)【要約】【課題】  システムレジストリに格納された情報へのアクセスを提供するシステムおよび方法を提供する。【解決手段】  このシステムおよび方法はさらに、システムレジストリを動的に区分する汎用的な（アプリケーションおよび／またはオペレーティングシステムに依存しない）方式を容易にすることができる。本発明は、システムレジストリのカスタマイズされたビューをクライアント、コンポーネント、および／またはアプリケーションに提供することを容易にすることができる。カスタマイズは、バージョン、コンピュータ構成、ユーザ、および／または他の適切な情報に基づいて行うことができる。さらに、システムレジストリのカスタマイズされたビューは、実行時に操作することができる。これに加えておよび／またはこれに代えて、低レベルコンポーネント（クライアントおよび／またはアプリケーション）に（インタフェースコンポーネントを介して）動的パーティションデータストアへのアクセス権を与えて、リダイレクション情報を操作（追加、削除、および／または変更など）させることもできる。【選択図】  図１
2005078628.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのアプリケーションとシステムレジストリとに関連付けられたリダイレクション情報を格納する動的パーティションデータストアと、
前記システムレジストリにアクセスするための要求を受け取り、前記動的パーティションデータストアに格納されたリダイレクション情報に少なくとも部分的に基づく、前記システムレジストリに関連付けられた情報を返すインターセプションコンポーネントと
を備えたことを特徴とする動的レジストリパーティションシステム。
【請求項２】
前記要求はアプリケーションから受け取られることを特徴とする請求項１に記載のシステム。
【請求項３】
前記動的パーティションデータストアに格納されたリダイレクション情報の実行時の操作を容易にするインタフェースコンポーネントをさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項４】
前記インタフェースコンポーネントは、前記動的パーティションデータストアに格納された前記リダイレクション情報の少なくとも一部の追加、削除、および変更の少なくとも１つを行う要求を受け取ることを特徴とする請求項３に記載のシステム。
【請求項５】
前記行う要求は、ソースノード、宛先ノード、および少なくとも１つのプロパティを備えたことを特徴とする請求項４に記載のシステム。
【請求項６】
前記動的パーティションデータストアは、リマッピングテーブルからなることを特徴とする請求項１に記載のシステム。
【請求項７】
前記返される情報は、少なくとも部分的に、バージョン、コンピュータ構成、および前記要求の発信元に関連付けられたユーザに基づくことを特徴とする請求項１に記載のシステム。
【請求項８】
前記動的パーティションデータストアに格納されたリダイレクション情報は、実行時に操作することができることを特徴とする請求項１に記載のシステム。
【請求項９】
アプリケーションが、前記動的パーティションデータストアに格納されたリダイレクション情報を操作することができることを特徴とする請求項１に記載のシステム。
【請求項１０】
前記動的パーティションデータストアは、リダイレクションを行う方式を定義する属性と規則との少なくとも１つからなるセットを備えたことを特徴とする請求項１に記載のシステム。
【請求項１１】
請求項１に記載のシステムによって提供される前記戻り情報を受け取ることを特徴とするオペレーティングシステム。
【請求項１２】
動的なレジストリの区分を容易にして複数のレジストリビューをサポートする方法であって、
システムレジストリ情報を求める要求をインターセプトするステップと、
動的パーティションデータストアに格納されたリダイレクション情報に少なくとも部分的に基づく、前記要求に関連付けられた情報を提供するステップと
を備えることを特徴とする方法。
【請求項１３】
前記動的パーティションデータストアに格納された情報を変更する要求を受け取るステップをさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記要求に関連付けられたリダイレクション情報が、前記動的パーティションデータストアに格納されているかどうかを判定するステップと、
リダイレクション情報が前記動的パーティションデータストアに格納されていない場合、前記システムレジストリに格納された情報に少なくとも部分的に基づく、前記要求に関連付けられた情報を提供するステップと
をさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１５】
請求項１２に記載の方法を実施するコンピュータ実行可能命令が格納されたことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項１６】
動的パーティションデータストアとのインタフェースをとる方法であって、
前記動的パーティションデータストアに格納されたリダイレクション情報を変更する要求を受け取るステップと、
前記要求の発信元に、前記変更を開始する権限があるかどうかを判定するステップと、
前記要求の発信元に前記変更を開始する権限がある場合、前記要求に従って前記リダイレクション情報を変更するステップと
を備えることを特徴とする方法。
【請求項１７】
請求項１６に記載の方法を実施するコンピュータ実行可能命令が格納されたことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項１８】
動的パーティションデータストアとインタフェースをとる方法であって、
前記動的パーティションデータストアに格納されたリダイレクション情報に追加する要求を受け取るステップと、
前記要求の発信元に、前記追加を開始する権限があるかどうかを判定するステップと、
前記要求の発信元に前記追加を開始する権限がある場合、前記要求に従って前記リダイレクション情報に追加するステップと
を備えることを特徴とする方法。
【請求項１９】
請求項１８に記載の方法を実施するコンピュータ実行可能命令が格納されたことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項２０】
動的パーティションデータストアとインタフェースをとる方法であって、
前記動的パーティションデータストアに格納されたリダイレクション情報を削除する要求を受け取るステップと、
前記要求の発信元に、前記削除を開始する権限があるかどうかを判定するステップと、
前記要求の発信元に前記削除を開始する権限がある場合、前記要求に従って前記リダイレクション情報を削除するステップと
を備えることを特徴とする方法。
【請求項２１】
請求項２０に記載の方法を実施するコンピュータ実行可能命令が格納されたことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項２２】
動的レジストリパーティションシステムを容易にする、２つ以上のコンピュータコンポーネント間で送信されるデータパケットであって、
システムレジストリに関連付けられた情報を含むデータフィールドであって、前記情報は、動的パーティションデータストアに格納されたリダイレクション情報に少なくとも部分的に基づくデータフィールド
を備えたことを特徴とするデータパケット。
【請求項２３】
動的レジストリパーティションシステムのコンピュータ実行可能コンポーネントを格納するコンピュータ読み取り可能な記録媒体であって、
前記システムレジストリにアクセスする要求を受け取り、動的パーティションデータストアに格納されたリダイレクション情報に少なくとも部分的に基づく、前記システムレジストリに関連付けられた情報を返すインターセプションコンポーネント
を備えたことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項２４】
少なくとも１つのアプリケーションとシステムレジストリとに関連付けられたリダイレクション情報を動的に格納する手段と、
前記システムレジストリにアクセスする要求をインターセプトする手段と、
前記要求に応答して戻り情報を提供する手段であって、前記戻り情報は、前記システムレジストリに関連付けられ、少なくとも部分的に、リダイレクション情報を動的に格納する前記手段に格納されたリダイレクション情報に基づく手段と
を備えたことを特徴とする動的レジストリパーティションシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にはシステムレジストリに関し、より詳細には、動的なレジストリの区分を容易にするシステムおよび方法に関する。
【背景技術】
【０００２】
従来のオペレーティングシステムの多くは、例えば構成情報などの情報の記憶を助けるレジストリを用いる。レジストリは、オペレーティングシステムと、そのオペレーティングシステムの下で実行されるアプリケーションおよびサービスとのための情報ストアとして機能することができる。一例で、レジストリは、ブートパラメータからユーザのデスクトップ設定にわたる幅広い構成設定を記憶する。レジストリは、コンピュータの記憶システムに記憶された（例えば永続的および／または非永続的な）１つまたは複数の構成ファイルとして記憶することができる。
【０００３】
アプリケーションは、インストールされるとレジストリに情報を書き込む（格納する）ことができる。レジストリは、コンピュータごとおよび／またはユーザごとのデータストアを参照するキーのサブツリーからなる階層構造のデータストアである。キーは、値エントリと呼ばれるデータ項目を含むことができ、さらにサブキーを含むことができる。レジストリ構造では、キー（およびサブキー）は、値エントリがファイルに相当するディレクトリに似たものと考えることができる。システムレジストリは、例えば、再起動時、ログオン時、およびログオフ時に変化する場合がある。
【０００４】
例えば、レジストリは、以下の主要セクション（サブツリー）を含むことができる：
ＨＫＥＹ＿Ｃｌａｓｓｅｓ＿Ｒｏｏｔ  −  ファイルの関連付けおよびＯＬＥ情報
ＨＫＥＹ＿Ｃｕｒｒｅｎｔ＿Ｕｓｅｒ  −  現在のユーザの設定セット
ＨＫＥＹ＿Ｕｓｅｒ  −  システムの各ユーザの現在のユーザ情報
ＨＫＥＹ＿Ｌｏｃａｌ＿Ｍａｃｈｉｎｅ  −  ハードウェア、オペレーティングシステム、およびインストールされたアプリケーションの設定
ＨＫＥＹ＿Ｃｕｒｒｅｎｔ＿Ｃｏｎｆｉｇｕｒａｔｉｏｎ  −  ディスプレイおよびプリンタの設定
ＨＫＥＹ＿Ｄｙｎ＿Ｄａｔａ  −  パフォーマンスデータ
いくつかの文献に上述のような従来の技術に関連した技術内容が開示されている（例えば、特許文献１、２参照）。
【０００５】
【特許文献１】米国特許第６，１６３，８５５号明細書
【特許文献２】米国特許第６，５７８，０４５号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００６】
オペレーティングシステム技術が絶えず進歩し続けるのに従って、レガシーアプリケーションとネイティブアプリケーションの両方が共存することを同時に許可することが、オペレーティングシステム、より詳細にはシステムレジストリにとって困難な作業となっている。例えば、異なるバージョンのアプリケーションは、各自の構成情報を共通の構成データストアに格納することができる。実際には、異なるバージョンのアプリケーションは、一般に、各自の構成情報を共通の構成データ構造中の同じ場所に格納する。したがって、より後にインストールされたバージョンが、より前にインストールされたバージョンの既存の構成情報を上書きしてしまう可能性がある。その結果、より前のバージョンは、当該バージョンの構成情報が変更されているので正しく実行されない（あるいはまったく実行されない）ことになる。時には、後にインストールされたバージョンの円滑な動作を妨害する恐れのある残留した構成が、共通の構成データ構造中に存在することがある。
【０００７】
従来は、新しいバージョン（例えば３２ビット）のオペレーティングシステムが導入された際に互換性と相互動作性の問題が生じていた。こうした種の互換性の問題を回避するために、新しい３２ビットアプリケーションは、その構成情報を、古い１６ビットのアプリケーションとは異なる場所（例えば別個のシステムレジストリ）に格納するように指示されていた。また、新しいアプリケーションは、そのアプリケーションプログラムインタフェース（「ＡＰＩ」）および動的リンクライブラリ（「ＤＬＬ」）に異なる名前を使用するように指示されていた。この従来の解決法は、互換性および相互動作性に関しては役立ったが、ソフトウェア開発者は、新しいあるいは改良されたソフトウェアの開発よりもソフトウェアの変換に多大なリソースを注ぐことを余儀なくされていた。すなわち、１６ビットバージョンのアプリケーションを３２ビットバージョンに移植するには著しい変更を加えることが必要だった。
【０００８】
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、システムレジストリに格納された情報へのアクセスを提供し、さらにシステムレジストリを動的に区分する汎用的な方式を容易にするシステムおよび方法を提供することにある。
【課題を解決するための手段】
【０００９】
以下に、本発明のいくつかの態様の基本的理解を提供するために簡略化した本発明の要約を述べる。この要約は、広範囲にわたる本発明の概要ではない。この要約は、本発明の主要／不可欠な要素を特定するものでも、本発明の範囲を説明するものでもない。その唯一の目的は、後に提示するより詳細な説明の前置きとして、簡略化した形態で本発明の一部の概念を示すことである。
【００１０】
本発明は、システムレジストリに格納された情報へのアクセスを提供し、さらにシステムレジストリを動的に区分する汎用的な（アプリケーションおよび／またはオペレーティングシステムに依存しない）方式を容易にするシステムおよび方法を提供する。本発明は、システムレジストリのカスタマイズされたビューを、クライアント、コンポーネント、および／またはアプリケーションに提供する。カスタマイズは、例えば、バージョン、コンピュータ構成、ユーザ、および／または他の適切な情報に基づいて行うことができる。さらに、システムレジストリのカスタマイズされたビューは、実行時に操作することができる。これに加えておよび／またはこれに代えて、低レベルのコンポーネント（クライアントおよび／またはアプリケーションなど）に、（インタフェースコンポーネントを介して）動的パーティションデータストアへのアクセス権を与えて、リダイレクション情報を操作（追加、削除、および／または変更など）させることもできる。
【００１１】
情報は、要求に応じて、動的パーティションデータストアに格納されたレジストリパーティション情報に基づいて動的に提供することができる。したがって、要求元（コンポーネントおよび／またはアプリケーション）には、動的パーティションデータストアに格納されたリダイレクション情報に少なくとも部分的に基づいて、現在のシステムレジストリ情報が提供される。したがって、本発明の一態様によれば、管理プログラムが、実質的にすべてのシステムレジストリコールをリダイレクトすることが可能なカスタマイズされたシェル環境下でアプリケーションを実行することができ、ある時点までシステムレジストリを当初の状態に保つことができる。すなわち、ユーザは、アプリケーションに障害を与えることなく、システムレジストリの異なる場所に単一の書き込みをリダイレクトすることができる。
【００１２】
動的パーティションデータストアは、少なくとも１つのアプリケーションとシステムレジストリとに関連付けられたリダイレクション情報を格納する。インターセプション（interception）コンポーネントが、システムレジストリにアクセスするための要求を（例えばアプリケーションから）受け取り、動的パーティションデータストアに格納されたリダイレクション情報に少なくとも部分的に基づいて、システムレジストリに関連付けられた情報を返す。例えば、インターセプションコンポーネントは、動的パーティションデータストアのリダイレクション情報を利用すべきかどうか判定する際に、要求元エンティティの識別および／または特性を検討することができる。
【００１３】
リダイレクション情報は、動的パーティションデータストア（例えばキー／変換されたキー）に格納することができる。例えば、動的パーティションデータストアは、クライアント（例えばアプリケーション）からのシステムサービスコールをインターセプトするインターセプションコンポーネントによって動的に操作することができる、システム中のリマッピングテーブルとすることができる。
【００１４】
本発明のさらに別の態様は、特定のコンポーネント（アプリケーション）が、当該コンポーネントに適したシステムレジストリのビュー（リスト）（カスタマイズされたビュー）を初期化できるようにする。例えば、ソースノード、宛先ノード、および／またはプロパティ（＜ＮＳ、ＮＤ、Ｐ＞）などの１つまたは複数のプロパティをビュー（リスト）に関連付けることができる。コンポーネントは、所望の異なる要素（例えば＜Ａ、Ｂ、Ｐ＞）を用いてビュー（リスト）を更新することができる。あるコンポーネントが、キーＡの下位にあたり、かつプロパティＰを満たすレジストリキーへのアクセスを試みる場合、呼び出しは（インターセプションコンポーネントによって）サブツリーＢにリダイレクションされる。この例では、１レベルのリダイレクションを述べたが、ゼロレベル、１レベル、または複数レベルの間接化および／またはカスケードの規則を、特定の呼び出しの操作に適用できることは理解されよう。
【００１５】
したがって、リマッピング（リダイレクション）かどうかを判定する際、インターセプションコンポーネントは、要求元エンティティ（クライアント）が渡したパラメータを調べることができる。その後、一例では、インターセプションコンポーネントは、要求元エンティティ（クライアント）の必要性を満たす別のパラメータセットを作成し、その変更されたパラメータセットを使用してネイティブコールを行うことができる。
【００１６】
前述の目的および関連する目的を達成するために、以下の説明および添付図面との関連で、本発明の特定の例示的態様を本明細書に記載する。ただし、それらの態様は、本発明の原理を用いることが可能な各種方式のいくつかのみを示すものであり、本発明は、そのような態様とその均等物をすべて包含するものとする。本発明のその他の利点および新規の特徴は、図面と併せて以下の本発明の詳細な説明を検討することから明らかになろう。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。図面中では、同様の要素は同様の参照符号を使用して参照する。以下の説明では、説明の目的で本発明の完全な理解を提供するために多数の具体的な詳細事項を述べる。ただし、本発明がそれらの具体的な詳細を用いずとも実施できることは明白であろう。他の事例では、本発明の説明を容易にするために、よく知られた構造およびデバイスはブロック図の形態で図示する。
【００１８】
本願で使用する用語「コンピュータコンポーネント」とは、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアを問わず、コンピュータに関連するエンティティを指すものとする。例えば、コンピュータコンポーネントは、これらに限定しないが、プロセッサで実行中のプロセス、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、プログラム、および／またはコンピュータ等である。例示として、サーバで実行中のアプリケーションとサーバの両方がコンピュータコンポーネントになりうる。プロセスおよび／または実行のスレッドには１つまたは複数のコンピュータコンポーネントが存在することができ、コンポーネントは、１つのコンピュータに集中させる、かつ／または２つ以上のコンピュータに分散させることができる。この用語が本明細書に定義されるため、各種のシステムおよび／またはコンポーネントがコンピュータコンポーネントになりうることは理解されよう。
【００１９】
図１を参照すると、本発明の一態様による動的レジストリパーティションシステム１００を示す。システム１００は、インターセプションコンポーネント１１０および動的パーティションデータストア１２０を含む。任意で、システム１００は、さらにシステムレジストリ１３０を含むことができる。システムレジストリ１３０は単一のデータストアとして図示するが、当業者は、情報は直接システムレジストリ１３０に格納する、かつ／または間接的に（例えば参照、ポインタ、および／または他の間接化ツールを用いるなどにより）システムレジストリ１３０に格納できることを認識されよう。特許請求の範囲は、そのようなシステムレジストリ構成をすべて包含するものとする。
【００２０】
システム１００は、システムレジストリに格納された情報へのアクセスを提供し、システムレジストリを動的に区分する汎用的な（アプリケーションおよび／またはオペレーティングシステムに依存しない）方式を容易にする。本発明は、システムレジストリ１３０のカスタマイズされたビューをコンポーネントおよび／またはアプリケーションに提供することを容易にする。カスタマイズは、例えば、バージョン、コンピュータ構成、ユーザ、および／または他の適切な情報に基づいて行うことができる。重要な点として、システムレジストリ１３０のカスタマイズされたビューは、実行時にシステム１００によって操作する（動的に操作する）ことができる。これに加えて、かつ／またはこれに代えて、低レベルコンポーネントに動的パーティションデータストアへのアクセス権を与えて、リダイレクション情報を操作させることもできる（例えば下記のインタフェースコンポーネント（図示せず）を介して）。
【００２１】
情報は、要求に応じて、動的パーティションデータストア１２０に格納されたパーティション情報に基づいて、動的に提供することができる。したがって、要求元（コンポーネントおよび／またはアプリケーションなど）には、動的パーティションデータストア１２０に格納されたリダイレクション情報に少なくとも部分的に基づく現在のシステムレジストリ情報が与えられる。
【００２２】
例えば、ターミナルサーバが、ログオンしたユーザに基づく、異なるレジストリビューを要求する場合がある。さらに、シェルが、第２のビュー、例えばレジストリ中の複数の異なる場所からの併合情報を得ることを望む場合がある。従来のシステムは、複数のビューを容易にするが、複数のビューに対するサポートは一般にはハードコードされる。したがって、将来の要件が課されると、レジストリＡＰＩは一般に、それらの要件をサポートするように変更される必要があり、そのため後方互換性が困難になっている。
【００２３】
レジストリに対するハードコードされた変更はさらに、複数の異なるコンポーネントがシステムレジストリに依存できるため、問題につながる。このように、システムレジストリに対する変更は、レガシーアプリケーションについて問題を呈する可能性がある。例えば、従来、６４ビットのオペレーティングシステムのアプリケーション互換性／相互動作性をサポートするために、システムレジストリを様々な場所で区分していた。ハードコードされたレジストリキーのリストが異なる方式で様々な場所を定義して、（１）ネイティブアプリケーション、および（２）レガシー（例えば３２ビット）アプリケーションのビューを編集していた。
【００２４】
動的パーティションシステム１００は、アプリケーションに対して実質的に透過である。しかし、本発明の一態様によれば、システムレジストリの動的な区分を利用したいアプリケーションには利用を許可することができる。
【００２５】
例えばバージョン番号に基づいてシステムレジストリ１３０の異なるビューを表示したいコンポーネントは、システム１００を用いることにより容易にその異なるビューを実現することができる。ＣＯＭ＋（Component Object Model plus）コンポーネントもシステム１００を用いることによりシステムレジストリ１３０を区分することができる。
【００２６】
本発明のさらに別の態様によれば、管理プログラムが、実質的にすべてのシステムレジストリコールをリダイレクトすることが可能なカスタマイズされたシェル環境下でアプリケーションを実行し、ある時点までシステムレジストリを当初の状態に保つことができる。すなわち、ユーザは、アプリケーションに障害を当てることなく、システムレジストリ中の別の場所に単一の書き込みをリダイレクトすることができる。
【００２７】
最後に、イメージヘッダ中の署名に基づいてオペレーティングシステム中でＤＬＬ（dynamic link library）を呼び出す、拡張された、かつ／またはカスタマイズされたローディングプロセスを用いることができる。ＤＬＬは、（ＣＯＭ＋プログラムのように）特定のイメージをロードすることができ、また適用可能であればシステムレジストリビューを変更することができる。
【００２８】
動的パーティションデータストア１２０は、少なくとも１つのアプリケーションとシステムレジストリ１３０とに関連付けられたリダイレクション情報を格納する。インターセプションコンポーネント１１０は、システムレジストリ１３０にアクセスするための要求を（例えばアプリケーションから）受け取り、動的パーティションデータストア１２０に格納されたリダイレクション情報に少なくとも部分的に基づいて、システムレジストリ１３０に関連付けられた情報を返す。例えば、インターセプションコンポーネント１１０は、動的パーティションデータストア１２０のリダイレクション情報を利用すべきかどうかを判定する際に、要求元エンティティの識別および／または特性を調べることができる。
【００２９】
リダイレクション情報は、動的パーティションデータストア１２０（例えばキー／変換されたキー）に格納することができる。動的パーティションデータストア１２０は、例えば、クライアント（例えばアプリケーション）からのシステムサービスコールをインターセプトするインターセプションコンポーネント１１０により動的に操作することができる、システム１００中のリマッピングテーブルとすることができる。
【００３０】
さらに、本発明の一態様によれば、要求の送信元（例えばアプリケーション）は、戻り情報が、少なくとも部分的にリダイレクション情報に基づくことを意識しない。
【００３１】
したがって、システム１００は、従来のシステムを通じて利用できる２セットの静的なビューを凌ぐ。システム１００は、システムレジストリ１３０の動的な操作を容易にする。したがって、一例では、（例えば静的なレジストリビューをサポートするための）静的なシステムレジストリは利用することができない。代わりに、特定のコンポーネント（例えばアプリケーション）が、そのコンポーネントに適したシステムレジストリ１３０のビュー（リスト）（システムレジストリ１３０のカスタマイズされたビュー）を初期化することができる。例えば、ソースノード、宛先ノード、および／またはプロパティ（＜ＮＳ、ＮＤ、Ｐ＞）などの１つまたは複数のプロパティを、ビュー（リスト）に関連付けることができる。コンポーネントは、所望の異なる要素（＜Ａ、Ｂ、Ｐ＞など）でビュー（リスト）を更新することができる。コンポーネントが、キーＡの下位にあたり、かつプロパティＰを満たすレジストリキーにアクセスすることを試みる場合、呼び出しは（例えばインターセプションコンポーネント１１０により）サブツリーＢにリダイレクションされる。この例では単一レベルのリダイレクションについて述べたが、ゼロレベル、１レベルまたは複数レベルの間接化および／またはカスケードの規則を特定の呼び出しの操作に適用できることは理解されよう。
【００３２】
したがって、一例では、インターセプションコンポーネント１１０が、システムレジストリ１３０の情報を求める要求を受け取る（例えばインターセプションコンポーネント１１０が、クライアント、例えばアプリケーションから、システムレジストリ１３０にアクセスするための呼び出しをインターセプトする）。その要求に応答する前に、インターセプションコンポーネント１１０は、動的パーティションデータストア１２０を調べて、システムレジストリ１３０の内容をリマッピングすることが適当であるかどうかを判断する。適当である場合は、インターセプションコンポーネント１１０は、動的パーティションデータストア１２０に格納されたリダイレクション情報に少なくとも部分的に基づいて、システムレジストリ１３０に関連付けられた情報を返す。
【００３３】
リマッピング（リダイレクション）かどうかを判定する際、インターセプションコンポーネント１１０は、要求元エンティティ（クライアント）が渡したパラメータを調べることができる。その後、一例では、インターセプションコンポーネント１１０は、要求元エンティティ（クライアント）の必要性に一致する別のパラメータセットを作成し、変更されたそのパラメータセットを使用してネイティブコールを行うことができる。
【００３４】
システムレジストリ１３０は、例えば階層ツリーによって表すことができ、アプリケーションは、ツリー中の任意のノードを使用して、ルートからツリー中の任意ノードまでの完全なパスを供給することができる。動的パーティションデータストア１２０は、リダイレクションツリーとして機能して、クライアントからの呼び出しを、そのクライアントがアクセスしようとしているノードに導くべきか、および／またはシステムツリー中の別のノードに導くべきかを検証することができる。
【００３５】
一例では、動的パーティションデータストア１２０中のノードは、リマッピングをどのように行うべきかを定義する属性のセットおよび／または規則のセットを有する。例えば、動的パーティションデータストア１２０のツリーは、システムレジストリ１３０のツリーの実質的にすべてのノードを含む必要はなく、ある動作（例えばリマッピング）が行われるノードを有する。したがって、動的パーティションデータストア１２０のツリーは、システムレジストリ１３０のツリーより小さくすることができる。さらに、動的パーティションデータストア１２０のサイズは、ユーザが定義したリマッピング情報に依存して決まることができる。
【００３６】
例えば、クライアント（アプリケーション）は、システムレジストリ１３０にアクセスするための呼び出しを行って、あるノードまでの実質的に完全なパスを供給することができる。この呼び出しは、通例、システムレジストリ１３０ツリー中のある場所を指す一意の数であるハンドルを返す。クライアントは、そのハンドルを使用してその後の要求を行うことができる。通例、その後行われる呼び出しでは、相対的なパスとして渡されたリターンハンドルを利用する。したがって、リターンハンドルが本来指すはずであった場所と異なる場所を指す場合は、クライアント（アプリケーション）の動作は影響されないことになる。
【００３７】
併合されたビューをサポートするために、インターセプションコンポーネント１１０は、動的パーティションデータストア１２０における規則セットを使用して、クライアント（アプリケーション）の呼び出しを複数の場所にリマップすることができる。その後、インターセプションコンポーネント１１０は、呼び出し元のクライアント（アプリケーション）に返すべき場所を判定する。
【００３８】
図２に移ると、本発明の一態様による動的レジストリパーティションシステム２００を図示する。システム２００は、インターセプションコンポーネント１１０、動的パーティションデータストア、およびインタフェースコンポーネント１４０を含むことができる。任意で、システム２００はさらにシステムレジストリ１３０を含むことができる。
【００３９】
インタフェースコンポーネント１４０は、（クライアントおよび／またはアプリケーションによる）システムレジストリ１３０のビューの操作を容易にする。インタフェースコンポーネント１４０は例えばＡＰＩ（Application Programming Interface）である。インタフェースコンポーネント１４０によって実施される例示的インタフェースを下記に挙げる。
【００４０】
【数１】
2005078628.tif 000003
【００４１】
ＡＰＩはＤＬＬからエクスポートすることができる。一例では、新しいクラスのルートを定義するために、以下によりＡＰＩが呼び出される。
＼ＲＥＧＩＳＴＲＹ＼Ｍａｃｈｉｎｅ＼ｓｏｆｔｗａｒｅ＼ＣｌａｓｓｅｓをポイントするｈＳｒｃ
Ｕｓｅｒ  ＣｌａｓｓｅｓをポイントするｈＤｅｓｔ
Ｆｌａｇセット  −  ＡＰＩに通信してビューを併合する
【００４２】
「Ｒｅａｄ」は、まずｈＤｅｓｔのプリファレンス（preference）を得、次いでｈＳｒｃのプリファレンスを得る。「Ｃｒｅａｔｅ」は、ｈＳｒｃへの参照を得、アクセスが拒否される場合はｈＤｅｓｔへの参照を得る。
【００４３】
別の例では、複数のハイブ（hive）を併合して単一のハイブにするために、第３のパラメータを使用してシステムレジストリ１３０中の複数のビューをカスケードにすることができる。さらに、ｈＳｒｃがＣｌａｓｓｅｓ  Ｒｏｏｔをポイントし、ｈＤｅｓｔがリダイレクションされた場所をポイントする、併合されたビューでビューをリマップする。
【００４４】
このように、システム２００は、システムレジストリ１３０のビューの動的な操作を容易にする。操作は、例えば、ＡＰＩを用いて各自のレジストリビューをカスタマイズする様々なコンポーネントとともに、インタフェースコンポーネント１４０を介して利用できるＡＰＩを使用して実現することができる。したがって、コンポーネント（サブシステム）は、システムレジストリ１３０の独自のビューを動的に作成することができる（例えばオペレーティングシステム中の内容を一切変更することなく）。したがって、コンポーネント（アプリケーション）の開発者から、独自のシステムレジストリビューを作成するためにシステムレジストリ１３０にエントリをハードコーディングする負担が取り除かれる。また、システムレジストリ１３０は、従来のシステムに比べて管理が容易である。
【００４５】
したがって、本発明の一態様によれば、システム２００を用いるシェルが、システムレジストリ１３０の独自の併合ビューを定義することができる。本発明の別の態様によれば、アプリケーションが各自の併合ビューを定義することができ、例えばシステムレジストリ１３０中の異なる複数の場所から異なるサブツリーを取り出すことができる。さらに、ＯＬＥ（object linking and embedding）および／またはＣＯＭ（Component Object Model）の起動コードが独自の規則セットを定義することができ、基礎となるアプリケーションは正しいコンポーネントを起動することができる。例えば、パラメータに基づいて、第１のコンポーネント（例えばＵＲＴ）が、当該第１のコンポーネントによって管理される実質的にすべてのアプリケーションに影響する動的パーティションデータストア１２０を再定義することができる。
【００４６】
次いで図３を参照すると、本発明の一態様による動的レジストリパーティションシステム３００を図示する。システム３００は、インターセプションコンポーネント１１０、動的パーティションデータストア１２０、システムレジストリ１３０、インタフェースコンポーネント１４０（複数）、アプリケーション３１０、オペレーティングシステム３２０、およびアプリケーションホスト３３０を含む。アプリケーションホスト３３０には、例えば、アプリケーションローダ、例えば互換性レイヤなどのオペレーティングシステムコンポーネント、および／またはプラットフォームフレームワークが含まれる。例えば、アプリケーションホスト３３０は、インタフェースコンポーネント１４０を介して、動的パーティションデータストアに格納された情報の初期化および／または操作を容易にすることができる。
【００４７】
一般に、システムレジストリ情報に対する要求は、アプリケーション３１０からアプリケーションホスト３３０（例えばアプリケーションローダ、例えば互換性レイヤなどのオペレーティングシステムコンポーネント、および／またはプラットフォームフレームワーク）に送信される。アプリケーションホスト３３０は、要求に関連付けられた情報をオペレーティングシステム３２０に提供する。その後、オペレーティングシステム３２０は、システムレジストリ情報に対する要求をインターセプションコンポーネント１１０に送信する。
【００４８】
インターセプションコンポーネント１１０は、システムレジストリ情報をオペレーティングシステムに返す。要求に関連付けられたリダイレクション情報が動的パーティションデータストア１２０に格納されている場合、情報の提供は、少なくとも部分的に、動的パーティションデータストア１２０に格納されたリダイレクション情報に基づく。オペレーティングシステム３２０は次いで、アプリケーションホスト３３０を介してアプリケーション３１０にシステムレジストリ情報を提供する。ただし、システム３００はさらに、アプリケーション３１０による、動的パーティションデータストア１２０に格納されたリダイレクション情報の操作を容易にする。したがって、アプリケーション３１０は、動的パーティションデータストア１２０に格納されたリダイレクション情報を追加、削除、および／または変更する要求を、アプリケーションホスト３３０を介してインタフェースコンポーネント１４０に提供することができる。
【００４９】
簡単に図４および５を見ると、本発明により実施することが可能な方法論を図示する。説明を簡潔にするために、この方法論は一連のブロックとして図示し、説明するが、本発明はこのブロックの順序によって制限されず、一部のブロックは本発明により、ここに図示し、説明する順序とは異なる順序で、かつ／または他のブロックと同時に行ってもよいことを理解し、認識されたい。さらに、本発明によりこの方法論を実施するために、図示するすべてのブロックが必要であるとは限らない。
【００５０】
本発明は、１つまたは複数のコンポーネントによって実行されるプログラムモジュールなどのコンピュータ実行可能命令に概ね即して説明することができる。一般に、プログラムモジュールには、特定のタスクを行うか、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、データ構造などが含まれる。通例、プログラムモジュールの機能は、各種の実施形態で必要に応じて組み合わせても、分散してもよい。
【００５１】
図４を参照すると、本発明の一態様により複数のレジストリビューをサポートする動的レジストリの区分を容易にする方法４００を図示する。４１０で、システムレジストリ情報を求める要求が（例えばインターセプションコンポーネント１１０により）インターセプトされる。４２０で、その要求に関連付けられたリダイレクション情報が動的パーティションデータストアに格納されているかどうかが判定される。
【００５２】
４２０の判定結果がＹＥＳの場合、４３０で、動的パーティションデータストアに格納されたリダイレクションに少なくとも部分的に基づいて、要求に関連付けられた情報を提供する。例えば、その情報を要求元のクライアントに提供することができる。動的パーティションデータストアのリダイレクション情報を利用すべきかどうかを判定する際、この情報は、要求元エンティティのバージョン、識別、および／または特性に基づくことができ、それ以上の処理は行われない。４２０の判定結果がＮＯの場合は、４４０で、システムレジストリに格納された情報に少なくとも部分的に基づいて、その要求に関連付けられた情報が提供され、それ以上の処理は行われない。
【００５３】
次いで図５に、本発明の一態様による動的パーティションデータストアとインタフェースをとる方法５００を図示する。５１０で、動的パーティションデータストアに格納されたリダイレクション情報を追加、削除、および／または変更する要求が（例えばインタフェースコンポーネント１４０により）受け取られる。５２０で、要求の発信元が、要求される動作（追加、削除、および／または変更など）を開始する権限があるかどうかが判定される。５２０における判定結果がＹＥＳの場合は、５３０で、動的パーティションデータストアに格納されたリダイレクション情報の要求される追加、削除、および／または変更が行われ、それ以上の処理は行われない。５２０における判定結果がＮＯの場合は、それ以上の処理は行われない。
【００５４】
本発明の各種態様について追加的なコンテクストを提供するために、図６および以下の説明により、本発明の各種態様を実施することが可能な適切な動作環境６１０の簡単で概略的な説明を提供する。本発明について、１つまたは複数のコンピュータあるいは他のデバイスによって実行されるプログラムモジュールなどのコンピュータ実行可能命令に概ね即して説明するが、当業者は、本発明は、他のプログラムモジュールと組み合わせて、かつ／またはハードウェアとソフトウェアの組合せとして実施することもできることを認識されよう。ただし、一般に、プログラムモジュールには、特定のタスクを行うか、特定のデータ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。動作環境６１０は、適切な動作環境の一例に過ぎず、本発明の使用または機能性の範囲について何らの制限を示唆するものではない。本発明に使用するのに適する可能性がある他のよく知られるコンピュータシステム、環境、および／または構成には、これらに限定しないが、パーソナルコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マルチプロセッサを用いたシステム、プログラム可能な家庭電化製品、ネットワークＰＣ（personal computer）、ミニコンピュータ、メインフレームコンピュータ、上記のシステムおよびデバイスを含む分散コンピューティング環境などがある。
【００５５】
図６を参照すると、本発明の各種態様を実施する例示的環境６１０は、コンピュータ６１２を含む。コンピュータ６１２は、プロセッサ６１４、システムメモリ６１６、およびシステムバス６１８を含む。システムバス６１８は、これに限定しないがシステムメモリ６１６を含むシステムコンポーネントをプロセッサ６１４に結合する。プロセッサ６１４は、各種の利用可能なプロセッサのいずれでもよい。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャもプロセッサ６１４として使用することができる。
【００５６】
システムバス６１８は、これらに限定しないが８ビットバス、ＩＳＡ（Ｉｎｄｕｓｔｒｉａｌ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＭＣＡ（Ｍｉｃｒｏ−Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＥＩＳＡ（Ｅｘｔｅｎｄｅｄ  ＩＳＡ）、ＩＤＥ（Ｉｎｔｅｌｌｉｇｅｎｔ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）、ＶＬＢ（ＶＥＳＡ  Ｌｏｃａｌ  Ｂｕｓ）、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＡＧＰ（Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）、ＰＣＭＣＩＡ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ  ｂｕｓ）、およびＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｆａｃｅ）を含む各種の利用可能なバスアーキテクチャを使用した、メモリバスまたはメモリコントローラ、ペリフェラルバスまたは外部バス、および／またはローカルバスを含む数種のバス構造のいずれでもよい。
【００５７】
システムメモリ６１６は、揮発性メモリ６２０と不揮発性メモリ６２２を含む。起動時などにコンピュータ６１２内の要素間で情報を転送する基本ルーチンを含んだＢＩＯＳ（Basic Input/Output System）が不揮発性メモリ６２２に記憶される。制限ではなく例示として、不揮発性メモリ６２２は、読み取り専用メモリ（ＲＯＭ）、ＰＲＯＭ（programmable read only memory）、ＥＰＲＯＭ（erasable programmable read-only memory）、ＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）、またはフラッシュメモリを含むことができる。揮発性メモリ６２０は、外部キャッシュメモリとして機能するランダムアクセスメモリ（ＲＡＭ）を含む。制限ではなく例示として、ＲＡＭは、ＳＲＡＭ（シンクロナスＲＡＭ）、ＤＲＡＭ（ダイナミックＲＡＭ）、ＳＤＲＡＭ（シンクロナスＤＲＡＭ）、ＤＤＲ  ＳＤＲＡＭ（ダブルデータレートＳＤＲＡＭ）、ＥＳＤＲＡＭ（エンハンストＳＤＲＡＭ）、ＳＬＤＲＡＭ（Ｓｙｎｃｈｌｉｎｋ  ＤＲＡＭ）、およびＤＲＲＡＭ（ダイレクトＲａｍｂｕｓ  ＲＡＭ）などの多数の形態のものを利用することができる。
【００５８】
コンピュータ６１２は、リムーバブル／ノンリムーバブル、揮発性／不揮発性のコンピュータ記憶媒体も含む。図６には、例えばディスクストレージ６２４を示す。ディスクストレージ６２４には、これらに限定しないが、磁気ディスクドライブ、フロッピー（登録商標）ディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュメモリカード、またはメモリスティックのようなデバイスが含まれる。また、ディスクストレージ６２４は記憶媒体を単独で含むことも、あるいは、これらに限定しないが、ＣＤ−ＲＯＭ（コンパクトディスクＲＯＭデバイス）、ＣＤ−Ｒドライブ（書き込み可能ＣＤドライブ）、ＣＤ−ＲＷドライブ（書き換え可能ＣＤドライブ）、あるいはＤＶＤ−ＲＯＭ（デジタル多用途ディスクＲＯＭドライブ）などの光ディスクドライブを含む他の記憶媒体と組み合わせて含むこともできる。ディスク記憶装置６２４をシステムバス６１８に接続するのを容易にするために、通例は、インタフェース６２６などのリムーバブルまたはノンリムーバブルのインタフェースを使用する。
【００５９】
図６には、ユーザと、適切な動作環境６１０に記載する基本的なコンピュータリソース間の仲介役として機能するソフトウェアを示すことは理解されよう。そのようなソフトウェアには、オペレーティングシステム６２８が含まれる。オペレーティングシステム６２８は、ディスクストレージ６２４に格納することができ、コンピュータシステム６１２のリソースを制御および割り振るように動作する。システムアプリケーション６３０は、システムメモリ６１６またはディスクストレージ６２４に格納されたプログラムモジュール６３２およびプログラムデータ６３４を通じて、オペレーティングシステム６２８によるリソースの管理を利用する。本発明は、各種のオペレーティングシステムまたはオペレーティングシステムの組合せを用いて実施できることは理解されよう。
【００６０】
ユーザは、入力装置６３６を通じてコンピュータ６１２にコマンドおよび情報を入力する。入力装置６３６には、これらに限定しないが、マウス、トラックボール、スタイラス、タッチパッドなどのポインティングデバイス、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナ、ＴＶ（television）チューナカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラなどが含まれる。これらおよびその他の入力装置は、インタフェースポート６３８を介しシステムバス６１８を通じてプロセッサ６１４に接続する。インタフェースポート６３８には、例えばシリアルポート、パラレルポート、ゲームポート、およびユニバーサルシリアルバス（ＵＳＢ）が含まれる。出力装置６４０は、同一タイプのポートのいくつかを入力装置６３６として使用する。したがって、例えば、ＵＳＢポートを使用してコンピュータ６１２に入力を提供し、コンピュータ６１２から出力装置６４０に情報を出力することができる。出力アダプタ６４２が提供されて、モニタ、スピーカ、およびプリンタなど、出力装置６４０の中でも特殊なアダプタを必要とする出力装置６４０がいくつかあることを表している。制限ではなく例示として、出力アダプタ６４２は、出力装置６４０とシステムバス６１８間を接続する手段を提供するビデオカードおよびサウンドカードを含む。リモートコンピュータ６４４など、他のデバイスおよび／またはデバイスのシステムが、入力および出力両方の機能を提供することに留意されたい。
【００６１】
コンピュータ６１２は、リモートコンピュータ６４４など１つまたは複数のコンピュータとの論理接続を使用するネットワーク環境で動作することができる。リモートコンピュータ６４４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサを使用した機器、ピアデバイス、あるいは他の一般的なネットワークノードなどであり、通例は、上記でコンピュータ６１２に関連して述べた要素の多くまたはすべてを含む。図を簡潔にするために、リモートコンピュータ６４４についてはメモリ記憶装置６４６のみを図示する。リモートコンピュータ６４４は、ネットワークインタフェース６４８を通じて論理的にコンピュータ６１２に接続され、次いで通信接続６５０を介して物理的に接続される。ネットワークインタフェース６４８は、ローカルエリアネットワーク（ＬＡＮ）およびワイドエリアネットワーク（ＷＡＮ）などの通信ネットワークを包含する。ＬＡＮ技術には、ＦＤＤＩ（fiber distributed data interface）、ＣＤＤＩ（copper distributed data interface）、イーサネット（登録商標）／ＩＥＥＥ８０２．３、トークンリング／ＩＥＥＥ８０２．５などがある。ＷＡＮ技術には、これらに限定しないが、２地点間リンク、ＩＳＤＮ（総合デジタル通信網）およびその変形のような回路交換ネットワーク、パケット交換ネットワーク、およびデジタルＤＳＬ（デジタル加入者回線）が含まれる。
【００６２】
通信接続６５０は、ネットワークインタフェース６４８をバス６１８に接続するために用いられるハードウェア／ソフトウェアを指す。図をわかりやすくするために図では通信接続６５０をコンピュータ６１２の内部に示しているが、コンピュータ６１２の外部であってもよい。ネットワークインタフェース６４８に接続するために必要なハードウェア／ソフトウェアには、単なる例示として、標準電話グレードのモデム、ケーブルモデムおよびＤＳＬモデム、ＩＳＤＮアダプタ、およびイーサネット（登録商標）カードを含むモデムなどの内部および外部技術が含まれる。
【００６３】
上記の説明には、本発明の例が含まれる。言うまでもなく、本発明を説明する目的でコンポーネントまたは方法論の着想しうるすべての組合せを記載することは不可能であり、当業者は、本発明のこれ以外の組合せおよび入れ替えが可能であることを認識できよう。したがって、本発明は、特許請求の範囲の主旨および範囲内に含まれるそのような改変形態、変更形態、および変形形態をすべて包含するものとする。さらに、詳細な説明または特許請求の範囲で用語「〜を含む（ｉｎｃｌｕｄｅｓ）」を用いる限りでは、この用語は、請求項で用語「〜を備える（ｃｏｍｐｒｉｓｉｎｇ）」が移行句として用いられた場合に解釈されるのと同じように、用語「〜を備える」と同様包括的な意味とする。
【図面の簡単な説明】
【００６４】
【図１】本発明の一態様による動的レジストリパーティションシステムのブロック図である。
【図２】本発明の一態様による動的レジストリパーティションシステムのブロック図である。
【図３】本発明の一態様による動的レジストリパーティションシステムのブロック図である。
【図４】本発明の一態様による、動的なレジストリの区分を容易にして複数のレジストリビューをサポートする方法のフローチャートである。
【図５】本発明の一態様による、動的パーティションデータストアとインタフェースをとる方法のフローチャートである。
【図６】本発明が機能することが可能な例示的動作環境の図である。
【符号の説明】
【００６５】
１００  動的レジストリパーティションシステム
１１０  インターセプションコンポーネント
１２０  動的パーティションデータストア
１３０  システムレジストリ
【図１】
2005078628.tif 000004
【図２】
2005078628.tif 000005
【図３】
2005078628.tif 000006
【図４】
2005078628.tif 000007
【図５】
2005078628.tif 000008
【図６】
2005078628.tif 000009
【外国語明細書】
2005078628000001.pdf