(57)【要約】それぞれが１つ以上のカテゴリーに対応していて、それぞれがソフトウェア拡張子言語で書かれた複数の構造化拡張子定義が、取得され得る。レジストリ情報ストアにとってネイティブなフォーマットで保持されている１つ以上のレジストリ情報を表すデータが、アクセスされ得、このデータが複数の構造化定義の少なくとも一部に基づいて解析され得る。別の態様において、ソフトウェア拡張子言語で書かれた構造化拡張子定義が取得される。レジストリ情報ストアは、レジストリ情報ストアに対しネイティブであってソフトウェア拡張子言語と異なるフォーマットでストアされているレジストリ情報を含んでいて、レジストリ情報ストアが、取得された構造化拡張子定義に基づいて修正される。【選択図】図１
2012529711.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサー（９０２）と、
前記プロセッサーに接続された１つ以上の計算機可読媒体（９０４）と、を含んでいて、前記計算機可読媒体はその上にストアされた複数の命令を有していて、当該命令が前記プロセッサーによって実行されるとき、
複数の構造化拡張子定義を取得するステップ（３０２）であって、構造化拡張子定義それぞれが、１つ以上のカテゴリーに対応していて、かつソフトウェア拡張子言語で書かれているものと、
レジストリ情報ストアにとってネイティブなフォーマットでストアされているレジストリ情報を表すデータにアクセスするステップ（３０６）と、
前記複数の構造化拡張子定義の少なくとも一部に基づいて、前記レジストリ情報ストア内の前記データを解析するステップ（３０８）と、を前記プロセッサーに実行させることを特徴とする計算装置（９００）。
【請求項２】
前記命令が更に、
前記複数の構造化拡張子定義からトライ木構造を生成するステップであって、前記トライ木構造が、それぞれの構造化拡張子定義内のカテゴリーそれぞれのパス名中のネームスペース構成要素それぞれに関するノードを含んでいるものと、
レジストリ情報ストア内のデータをレジストリ情報として解釈するためのリクエストを受信するステップと、
前記トライ木構造の前記１つ以上のノードをチェックし、前記リクエストを満たすネームスペースに対応するノードを決定するステップと、
前記ノードに対応するカテゴリーを使用し、前記レジストリ情報の適切なカテゴリーを識別するステップと、を前記プロセッサーに実行させることを特徴とする請求項１記載の計算装置。
【請求項３】
それぞれの構造化拡張子定義内のカテゴリーそれぞれのパス名中のネームスペース構成要素それぞれが関連付けられる記憶場所を有していて、ネームスペース構成要素の各パス名が、前記ネームスペース構成要素に対し関連付けられた前記記憶場所へのポインターによって参照されることを特徴とする請求項１記載の計算装置。
【請求項４】
前記解析が、前記レジストリ情報ストアに保持されている１つ以上のネイティブレジストリ情報の前記カテゴリーに対応する、前記複数の構造化拡張子定義の少なくとも一部に基づいていることを特徴とする請求項１記載の計算装置。
【請求項５】
前記１つ以上のネイティブレジストリ情報を解析することが、ネームスペースに関連付けられた前記カテゴリーそれぞれと、前記レジストリ情報ストア内の対応する前記データとを比較し、前記レジストリ情報ストア内のどのデータが、前記カテゴリーによって定義されているルールに従っているか決定して、前記レジストリ情報ストアに対してネイティブなフォーマットのレジストリ情報を発見すること、を特徴とする請求項１記載の計算装置。
【請求項６】
前記レジストリ情報ストアのデータを解析することが、前記レジストリ情報ストア内に提示されるレジストリ情報のリストを生成することを特徴とする請求項１記載の計算装置。
【請求項７】
前記レジストリ情報ストアのデータを解析することが、前記レジストリ情報のネイティブ表現を有する問題リストを生成することを特徴とする請求項１記載の計算装置。
【請求項８】
前記レジストリ情報ストアのデータにアクセスすることが、あるフォーマットのコマンドを受信し、前記コマンドを前記レジストリ情報ストアに特有のフォーマットへ変換するように構成されたインターフェースモジュールを介し、前記レジストリ情報ストアにアクセスすることを特徴とする請求項１記載の計算装置。
【請求項９】
前記レジストリ情報ストアが、前記レジストリ情報に加えて非レジストリ情報データを含んでいることを特徴とする請求項１記載の計算装置。
【請求項１０】
機器上に実装される方法であって、
ソフトウェア拡張子言語で書かれた構造化拡張子定義を取得するステップ（５０２，６０２）と、
前記構造化拡張子定義に基づいてレジストリ情報ストアを修正するステップ（５１０，６２０）と、を含んでいて、前記レジストリ情報ストアが、前記レジストリ情報ストアにとってネイティブであって前記ソフトウェア拡張子言語と異なるフォーマットでストアされたレジストリ情報を含んでいることを特徴とする方法。
【請求項１１】
更に、
前記構造化拡張子定義の１つ以上のレジストリ情報パラメーターのデータをネイティブレジストリ情報へ変換するステップを含んでいて、
前記レジストリ情報ストアを修正するステップが、前記変換されたデータを前記レジストリ情報ストアの１つ以上のネームスペースへ書き込むステップを含んでいることを特徴とする請求項１０記載の方法。
【請求項１２】
更に、
前記構造化拡張子定義の１つ以上のレジストリ情報パラメーターのデータをネイティブレジストリ情報へ変換するステップと、
前記レジストリ情報ストアのネームスペースからデータを読み出すステップと、
前記変換されたデータと前記読み出されたデータとを比較するステップと、
前記変換されたデータ及び前記読み出されたデータが同一の場合に限り、前記レジストリ情報ストアの前記ネームスペースから読み出されたデータを消去するステップと、を含む請求項１０記載の方法。
【請求項１３】
更に、
データを前記レジストリ情報ストアのネームスペースから読み出すステップと、
前記データを前記構造化拡張子定義の１つ以上のレジストリ情報パラメーターと同一のフォーマットへ変換するステップと、
前記変換されたデータと前記１つ以上のレジストリ情報パラメーターとを比較するステップと、
前記比較が、前記変換されたデータと前記１つ以上のレジストリ情報パラメーターとが同一であることを示している場合に限り、前記レジストリ情報ストアの前記ネームスペースから読み出されたデータを消去するステップと、を含む請求項１０記載の方法。
【請求項１４】
前記ソフトウェア拡張子言語が、
カテゴリー関するデータタイプをそれぞれ識別している１つ以上の第１エレメントと、
前記１つ以上の第１エレメントを識別する第２エレメントと、
前記カテゴリーに関するデータがストアされている前記レジストリ情報ストア内の場所を示している第３エレメントと、を定義していることを特徴とする請求項１０記載の方法。
【請求項１５】
更に、
１つ以上のカテゴリーにそれぞれ対応する更なる複数の構造化拡張子定義を取得するステップであって、それぞれが、前記ソフトウェア拡張子言語で書かれているものと、
前記レジストリ情報ストアにとってネイティブなフォーマットでストアされたレジストリ情報を表しているデータにアクセスするステップと、
前記更なる複数の構造化拡張子定義の少なくとも一部に基づいて前記レジストリ情報ストア内の前記データを解析するステップと、を含む請求項１０記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムに関し、具体的には、オペレーティングシステムレジストリに関する。
【背景技術】
【０００２】
[0001]計算機は、典型的に、別のアプリケーションを計算機にインストールし、実行可能にすることを含む様々な機能性を提供するオペレーティングシステムを実行している。上記のオペレーティングシステムは、多くの場合、アプリケーション及びオペレーティングシステムがアプリケーションの多重実行全域で持続されるべき様々なタイプの情報をストアし得る場所を提供している。この場所が、例えば、オペレーティングシステムレジストリであり得る。しかしながら、上記情報をストアするとき、ストアされたデータにアクセスし修正し得る異なるプログラムが多いために問題が発生し得る。上記情報がストアされる方法は時間が経つにつれて変化し得、そのような変化は、多くの場合、データをストアし及び／又はリトリーブする他のプログラムに適切に伝達されない。したがって情報が容易に不適切にストアされ得、プログラム及び／又はオペレーティングシステムが、適切に作動することに失敗する不安定性をもたらす。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の目的は、レジストリ情報が、レジストリ情報データストア内の複数の構造化定義に基づいてアクセスされ解析され得る方法及びシステムを提供することである。
【課題を解決するための手段】
【０００４】
[0002]この「課題を解決するための手段」は、更に「発明を実施するための形態」に後述される概念のいくつかを簡易形式で紹介するために提供される。この「課題を解決するための手段」は、請求項記載対象の主要因も本質的な特徴も特定することを意図されておらず、請求項記載対象の範囲を限定するために使用されることも意図されていない。
【０００５】
[0003]１つ以上の態様に従って複数の構造化拡張子定義が取得される。構造化拡張子定義それぞれが１つ以上のカテゴリーに対応していて、構造化拡張子定義それぞれがソフトウェア拡張子言語で書かれている。レジストリ情報ストアにとってネイティブなフォーマットで保持されている１つ以上のレジストリ情報を表しているデータがアクセスされ、このデータが、複数の構造的定義の少なくとも一部に基づいて解析される。
【０００６】
[0004]１つ以上の態様に従ってソフトウェア拡張子言語で書かれた構造化拡張子定義が取得される。レジストリ情報ストアが、構造化拡張子定義に基づいて修正される。レジストリ情報ストアが、レジストリ情報ストアにとってネイティブであって、ソフトウェア拡張子言語と異なるフォーマットでストアされたレジストリ情報を含んでいる。
【０００７】
[0005]同様の機能を参照するために、同一の番号が図面内で使用されている。
【図面の簡単な説明】
【０００８】
【図１】[0006]１つ以上の実施形態によるソフトウェア拡張子解析を実装している計算装置の例を示している。
【図２】[0007]１つ以上の実施形態による構造化拡張子定義に関するフォーマットの例を示している。
【図３】[0008]１つ以上の実施形態によるソフトウェア拡張子解析を実装するためのプロセスの例を示す流れ図である。
【図４】[0009]１つ以上の実施形態によるソフトウェア拡張子を解析するためのプロセスの例を示す流れ図である。
【図５】[0010]１つ以上の実施形態によるレジストリ情報ストアにソフトウェア拡張子レジストリ情報を挿入するためのプロセスの例を示す流れ図である。
【図６】[0011]１つ以上の実施形態によるレジストリ情報ストアからソフトウェア拡張子レジストリ情報を削除するためのプロセスの例を示す流れ図である。
【図７】[0012]１つ以上の実施形態による特定の場所に示されたレジストリ情報カテゴリーを識別するためのプロセスの例を示す流れ図である。
【図８】[0013]１つ以上の実施形態に従って使用され得る構造化拡張子定義に関するトライ木の例を示している。
【図９】[0014]１つ以上の実施形態によるソフトウェア拡張子解析を実装するように構成され得る計算装置の例を示している。
【発明を実施するための形態】
【０００９】
[0015]ソフトウェア拡張子解析が、本明細書に論述される。ネイティブレジストリ情報は、構造化拡張子定義で書かれていて、ソフトウェア拡張子言語で記述されたカテゴリーに関連付けられている。ネイティブレジストリ情報は、機器のストア内に保持されていて、機器においてソフトウェア拡張子を管理する一部として解析され得る。この管理は、ネイティブレジストリ情報内の問題を検出すること、ストアに示されているレジストリ情報目録を生成すること、レジストリ情報をそれらのネイティブレジストリ情報フォーマットでストアに挿入すること、ストアからレジストリ情報のすべて又は一部を削除することなど、様々な機能性を含み得る。加えると、構造化拡張子定義は、ストア内の特定の場所、及びストア内の少なくともの一部データ、その場所に表されている特定のレジストリ情報カテゴリーを決定するために活用され得る。
【００１０】
[0016]図１は、１つ以上の実施形態によるソフトウェア拡張子解析を実装している計算装置の例（１００）を示している。計算装置（１００）は、ソフトウェア及び／又はファームウェアプログラムを実行可能な様々な異なる機器であり得る。例えば、計算装置（１００）は、デスクトップコンピューター、ラップトップコンピューター、通信移動局、娯楽電化製品、表示装置と通信可能に接続されるセットトップボックス、テレビ、携帯電話、又はその他の無線電話、携帯情報端末（ＰＤＡ）、ゲーム端末、自動車用コンピューターなどであり得る。かくして計算装置（１００）は、大容量メモリー及びプロセッサー資源を有する大きなリソース機器（例えば、パーソナルコンピューター、ゲーム端末）から限られたメモリー及び／又は処理資源を有する小さなリソース装置（例えば、従来のセットトップボックス、携帯用ゲーム端末）と多岐に渡り得る。
【００１１】
[0017]計算装置（１００）は、拡張子レジストリ情報仲介部（１０２）、レジストリ情報ストア（１０４）、及びオペレーティングシステム（１０６）を含む。オペレーティングシステム（１０６）が、１つ以上の消費者プログラム（１０８）及び１つ以上の供給者プログラム（１１０）を含む計算装置（１００）上のソフトウェア及び／又はファームウェアの動作を管理する。オペレーティングシステム（１０６）自体も、典型的に、ソフトウェア及び／又はファームウェアで実装される。オペレーティングシステム（１０６）は、レジストリ情報ストア（１０４）を管理及び保持していて、プログラム（１０８）及び（１１０）が、様々な情報をレジストリ情報ストア（１０４）にストア可能にし、そこからリトリーブ可能にする。１つ以上の実施形態によって処理される、そのようなレジストリ情報ストア（１０４）の１つがオペレーティングシステムレジストリである。
【００１２】
[0018]レジストリ情報ストア（１０４）は、プログラム（１０８）及び（１１０）に関する様々なデータ及び設定情報をストアし得、プログラムの多重実行全域で維持される。このデータ又は設定情報は、実行時、プログラム（１０８）及び（１１０）によって使用される設定値、一定のイベントに応答して実行される特定のプログラム（１１０）を識別するためのデータ、プログラム（１０８）又は（１１０）が実行している間、表示されるか又は別の方法で提示される制御情報又はその他の情報を記述しているデータなど、を含み得る。１つのレジストリ情報ストア（１０４）が図１に例示されているが、代替として、異なる２つ以上のレジストリ情報ストア（１０４）が計算装置（１００）に含まれ得る。プログラム（１０８）及び（１１０）は、直接か又は代替としてオペレーティングシステム（１０６）を介し、レジストリ情報ストア（１０４）にアクセスし得る。
【００１３】
[0019]レジストリ情報ストア（１０４）に含まれている（前述されたようなレジストリ情報ストア（１０４）に含まれ得る別の非レジストリ情報データも加えた）ある特定タイプのデータがネイティブレジストリ情報である。供給者プログラム（１１０）は、実行中、消費者プログラム（１０８）によって提供される機能性をプログラム（１１０）が実質的に拡張可能にする様々な機能性を提供し得る。機能性は、異なるタイプのカテゴリーを使用し様々な異なる方法で拡張され得る。供給者プログラム（１１０）が計算装置（１００）にインストールされたとき、プログラム（１１０）によって提供されるソフトウェア拡張子機能性を通知するネイティブレジストリ情報が、レジストリ情報ストア（１０４）にストアされる。これらのネイティブレジストリ情報は、供給者プログラム（１１０）（又は計算装置（１００）にプログラム（１１０）をインストールするインストーラープログラム）によって、直接か又は代替としてオペレーティングシステム（１０６）を介しレジストリ情報ストア（１０４）にストアされ得る。
【００１４】
[0020]例えば、供給者プログラム（１１０）は、それが、特定のファイルフォーマット（例えば、特定のフォーマットのミュージックファイル、特定のフォーマットのイメージファイルなど）を解釈し、管理するための機能性を提供可能なことを示し得る。計算装置（１００）に供給者プログラム（１１０）をインストールする間、プログラム（１１０）がその特定のファイルフォーマットを解釈し管理するための機能性を提供可能なことを示すレジストリ情報が、ネイティブレジストリ情報フォーマットでレジストリ情報ストア（１０４）にストアされ得る。供給者プログラム（１１０）がインストールされた後、消費者プログラム（１０８）（又は代替としてオペレーティングシステム（１０６））が、供給者プログラム（１１０）によって提供されるユーティリティを取得するためにレジストリ情報を起動し得る。消費者プログラム（１０８）は、オペレーティングシステム（１０６）を使用し得、ソフトウェア拡張子に依存するタスクを実行し得る。例えば、ウェブブラウザープログラムは、電子メールアドレスへのリンクを表示し得る。ユーザーがリンク上でクリックしたとき、ウェブブラウザープログラムは、電子メールアドレス用のＵｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ（ＵＲＩ）（例えば「ｍａｉｌｔｏ：／／ｎａｍｅ＠ｄｏｍａｉｎ．ｃｏｍ」）をオープンするようにオペレーティングシステム（１０６）に依頼する。それに応答してオペレーティングシステム（１０６）が「プロトコル」カテゴリーの「ｍａｉｌｔｏ」レジストリ情報を起動する。
【００１５】
[0021]消費者プログラム（１０８）及び供給者プログラム（１１０）が別個のプログラムとして例示されているが、単一プログラムが供給者プログラム及び消費者プログラム双方であり得ることに留意されたい。加えると、オペレーティングシステム（１０６）も消費者プログラム及び／又は供給者プログラムであり得ることに留意されたい。
【００１６】
[0022]拡張子レジストリ情報仲介部（１０２）もレジストリ情報ストア（１０４）にストアされたネイティブレジストリ情報にアクセスし得、ソフトウェア拡張子管理のために、これらのネイティブレジストリ情報を解析し得る。拡張子レジストリ情報仲介部（１０２）は、１つ以上のレジストリ情報が従うカテゴリーを記述している構造化拡張子定義（１１２）を取得する。これらの構造化拡張子定義（１１２）は、消費者プログラム（１０８）、開発者、消費者プログラム（１０８）の配布者、消費者プログラム（１０８）の代替アクター又は別のエンティティなど、様々なソースから取得され得る。
【００１７】
[0023]構造化拡張子定義（１１２）それぞれは、それらが消費者プログラム（１０８）によって起動され得る１つ以上のカテゴリーを記述している。構造化拡張子定義（１１２）は、拡張子レジストリ情報仲介部（１０２）によって既知のフォーマット又は言語を使用し実装される。しかしながら、このフォーマット又は言語は、レジストリ情報をストアするときレジストリ情報ストア（１０４）によって使用されるネイティブなフォーマットと異なる。したがって、仲介部（１０２）が、構造化拡張子定義（１１２）で示されている様々なカテゴリーを評価し得、それらのカテゴリーに基づいてレジストリ情報ストア（１０４）のネイティブレジストリ情報を解析し得る。拡張子レジストリ情報仲介部（１０２）は、かくして、供給者プログラムによって（又は供給者プログラムの開発者によって）発行されレジストリ情報ストア（１０４）にストアされたものと、（定義（１１２）で識別される）消費者プログラム（１０８）によって予測されたものと、を比較し、ネイティブレジストリ情報が整合しているか否か決定し得る。拡張子レジストリ情報仲介部（１０２）は、レジストリ情報ストア（１０４）のネイティブレジストリ情報もカテゴリーに基づいて解析し得、レジストリ情報の目録も生成し得る。
【００１８】
[0024]１つ以上の実施形態において、構造化拡張子定義（１１２）それぞれは、ソフトウェア拡張子言語に従って書かれた拡張可能マークアップ言語（ＸＭＬ）ドキュメントである。このソフトウェア拡張子言語は、定義（１１２）が拡張子レジストリ情報仲介部（１０２）によって使用され得るように構造化拡張子定義（１１２）が、どのように書かれているか記述している。
【００１９】
[0025]図２は、１つ以上の実施形態による構造化拡張子定義に関するフォーマットの例（２００）を示している。フォーマット（２００）は、ソフトウェア拡張子言語に関する特定のエレメント及び属性を定義しているソフトウェア拡張子言語の例によって使用されるフォーマットである。フォーマット（２００）は、拡張性エレメント（２０２）、カテゴリーエレメント（２０４）、ルートエレメント（２０６）、パラメーターエレメント（２０８）、制約エレメント（２１０）、使用エレメント（２１２）、変化エレメント（２１４）、マージルートエレメント（２１６）、及び付随資料（ドキュメンテーション）エレメント（２１８）を含む。構造化拡張子定義は、１つの拡張性エレメント（２０２）を含む。拡張性エレメント（２０２）それぞれは、１つ以上のカテゴリーエレメント（２０４）を含み得る。カテゴリーエレメント（２０４）それぞれは、０個以上のルートエレメント（２０６）、１つ以上のパラメーターエレメント（２０８）、０個以上の制約エレメント（２１０）、及び０個以上のマージルートエレメント（２１６）を含み得る。拡張性エレメント（２０２）は、０個以上の使用エレメント（２１２）、０個以上の変化エレメント（２１４）、及び０個以上のドキュメンテーションエレメント（２１８）も含み得る。実施形態において、構造化拡張子定義はＸＭＬドキュメントであって、これらのエレメント（２０２〜２１８）がタグとしても参照され得ることを十分に理解されよう。
【００２０】
[0026]拡張性エレメント（２０２）は、１つ以上のカテゴリー（典型的に、相互に論理関係がある１つ以上のカテゴリー）に分類されるか又は一緒に集められた集約エレメントである。エレメント（２０２）それぞれは、エレメント（２０２）を互換性があるように設計されているプログラムの指標、特定のプログラム又はエレメント（２０２）を互換性があるように設計されているオペレーティングシステムバージョンの範囲など、様々な属性も定義し得る。
【００２１】
[0027]カテゴリーエレメント（２０４）は、レジストリ情報の内容及びネイティブレジストリ情報が、レジストリ情報ストアにどのように形成されているか定義している。カテゴリーエレメント（２０４）は、レジストリ情報毎にデータを有しているか、それがどこにストアされているか、それがどのタイプであり得るか定義する１つ以上のパラメーターエレメントを含んでいる。カテゴリーエレメント（２０４）それぞれも様々な属性を含み得る。表Ｉは、カテゴリーエレメントに含まれ得る属性の例を含んでいる。表Ｉの属性は例であって、代替として別の属性がカテゴリーエレメントに含まれ、及び／又は表Ｉの１つ以上の属性がカテゴリーエレメントから除外され得ることを十分に理解されよう。加えると（この明細書において、ここと別のところで論述される）様々な属性は、属性として含まれるというよりもむしろ、一緒に入れ子にされ得、子供のタグエレメントとして含まれ得る。
【００２２】
【表１】
2012529711.tif 000003
【００２３】
[0028]ルートエレメント（２０６）は、ストア（例えば図１のレジストリ情報ストア（１０４））内の場所の指標であって、レジストリ情報ストア（１０４）においてカテゴリーに関するレジストリ情報が見出され得る。レジストリ情報ストア（１０４）内部のレジストリ情報ごとのフォーマットが、ネイティブレジストリ情報ごとに呼び出される。ルートエレメント（２０６）は、例えば、レジストリ内の場所を識別するパス名であって、このカテゴリーに関するネイティブレジストリ情報がストアされている。１つ以上の実施形態において、単一のネイティブレジストリ情報が、レジストリ情報ストア内の１つ以上の複数のネームスペースに存在し得、ストアそれぞれが、０個以上のレジストリ情報パラメーターを提供している。この場合、マージルートエレメント（２１６）が、レジストリ情報を形成するために協働する一連のネームスペースを識別し得る。
【００２４】
[0029]パラメーターエレメント（２０８）は、カテゴリーパラメーターである。パラメーターエレメント（２０８）は、特定のカテゴリーパラメーターと、対応するレジストリ情報パラメーターが従うべきデータタイプと、レジストリ情報パラメーターとして許可されるデータに対する付加的な制約と、及びネイティブレジストリ情報からこのパラメーターをどのように取得するかに関する命令と、を識別するデータを含む。１つ以上の実施形態において、省略されたとき、これらの命令を推論するためのルールが使用され得る。異なるパラメーターエレメントは、カテゴリーのレジストリ情報が含み得るデータタイプを識別する。例えば、ツールバーボタンカテゴリーは、「リソース」タイプのｂｕｔｔｏｎＩｃｏｎに関するパラメーターと、「記述」タイプのｂｕｔｔｏｎＴｅｘｔパラメーターと、を有し得る。ツールバーボタンカテゴリーに関するレジストリ情報はその後、「ｍｙＩｃｏｎ．ｉｃｏ」のｂｕｔｔｏｎＩｃｏｎ及び「ここをクリック」のｂｕｔｔｏｎＴｅｘｔを含むことが可能になる。
【００２５】
[0030]パラメーターエレメント（２０８）は、パラメーターを記述している名前属性と、エレメントの使用が任意であるか否か示している使用属性と、を含む。パラメーターの使用が任意である場合、このパラメーターはレジストリ情報から省略され得る。パラメーターの使用が任意でない場合、レジストリ情報を利用可能にするためにレジストリ情報は、カテゴリーパラメーターに従うレジストリ情報パラメーターを有している必要がある。パラメーターエレメント（２０８）は任意に、レジストリ情報パラメーターに関するデフォルト値も含み得る。
【００２６】
[0031]パラメーターエレメント（２０８）それぞれは、レジストリ情報パラメーターが解釈される方法である１つのパラメータータイプを含む。表ＩＩは、パラメーターエレメントに含まれ得るパラメータータイプの例を含む。表ＩＩにおけるパラメータータイプは例であって、代替として別のパラメータータイプがパラメーターエレメントに含まれ得ることを十分に理解されよう。
【００２７】
【表２】
2012529711.tif 000004
【００２８】
[0032]制約エレメント（２１０）は、レジストリ情報パラメーターが、カテゴリーに関し利用可能なレジストリ情報になるために従うべき１つ以上の追加的ルールの集まりである。制約エレメント（２１０）は、制約を記述している名前属性、制約の深刻さを示している深刻度属性、及び制約ルールを示しているルールエレメントを含んでいる。制約の深刻度は、制約がどのくらい重要か示している。ルールが、値を製造するためのレジストリ情報パラメーター及び別のルールに対し作用する。制約ルールは、レジストリ情報が利用可能になるための真の値を製造する。これらのルール又は制約違反は、レジストリ情報ストア（１０４）内のネイティブレジストリ情報を解析したとき（又はレジストリ情報をストア（１０４）に挿入したときなど別の時間に）より詳細に後述されるログに記録され得る。この記録によって管理者又は他のユーザーは、彼らがこれらの違反に応答して、適当と思われる適切な行動を順次、実行可能になる。
【００２９】
[0033]エレメント（２１２）の使用によって、別のページの定義（例えば別の構造化拡張子定義）への参照が実行可能になる。エレメントの使用は、別の定義を含むページを識別している題目の子供エレメントを含む。エレメントの使用は、（例えば、この構造化拡張子定義に含まれている）このページ内で参照され得る１つ以上のカテゴリータグも子供エレメントとして含む。
【００３０】
[0034]変化エレメント（２１４）によって特定のカテゴリーが優先されることが可能になる。変化エレメントは、優先されたカテゴリーを識別する属性と、レジストリ情報ごとのデータを定義している１つ以上のパラメーターエレメントと、を含んでいて、それは、ストアされている場所、そのタイプ（カテゴリーエレメント（２０４）と類似しているタイプ）を有し得る。
【００３１】
[0035]マージルートエレメント（２１６）によって、レジストリ情報ストア内のネームスペース毎の複製が可能になる。マージルートエレメント（２１６）によって、複数のネームスペースは、レジストリ情報を形成するために結合又はマージされることが可能になる。マージルートエレメント（２１６）は、結合された複数のネームスペースを識別する複数の子供エレメントを含む。
【００３２】
[0036] ドキュメンテーションエレメント（２１８）は、親エレメントの子供であってその親エレメントを記述していて、様々なエレメント（２０２〜２１６）の子供であり得る。例えば、ドキュメンテーションエレメントは、カテゴリーの目的をカテゴリーエレメント（２０４）の子供として記述している。別の例として、ドキュメンテーションエレメントは、パラメーターの目的をパラメーターエレメント（２０８）の子供として記述している。更に別の例として、ドキュメンテーションエレメントは、制約によってチェックされる目的／ものを制約エレメント（２１０）の子供として記述している。
【００３３】
[0037]図１に戻ると、拡張子レジストリ情報仲介部（１０２）、レジストリ情報ストア（１０４）、及び１つ以上の構造化拡張子定義（１１２）が、同一の計算装置（１００）の一部であるように例示されているが、代替として別個の装置に実装され得ることに留意されたい。例えば、拡張子レジストリ情報仲介部（１０２）が一計算装置に実装され得るが一方、レジストリ情報ストア（１０４）及びオペレーティングシステム（１０６）は別の計算装置に実装される。この例において、構造化拡張子定義（１１２）は、これらの計算装置か又は代替として更に別の計算装置どちらか一方に存在し得る。別の例として、レジストリ情報ストア（１０４）は、拡張子レジストリ情報仲介部（１０２）によってアクセスされる仮想イメージとして実装され得るか、又はレジストリ情報ストア（１０４）は、ある動作が実行された場合の実際のレジストリ情報ストアに対する結果として実装され得る。
【００３４】
[0038]構造化拡張子定義（１１２）は、拡張子レジストリ情報仲介部（１０２）によって様々な異なる方法で取得され得る。１つ以上の実施形態において、仲介部（１０２）が実行可能コードにコンパイルされたとき、構造化拡張子定義（１１２）が拡張子レジストリ情報仲介部（１０２）に組み込まれる静的発見技法が使用される。上記の実施形態において、構造化拡張子定義（１１２）が仲介部（１０２）に組み込まれ、新しい構造化拡張子定義（１１２）が利用可能になるたびに仲介部（１０２）が再コンパイルされる。
【００３５】
[0039]別の実施形態において、拡張子レジストリ情報仲介部（１０２）が、直接か又はデータソースを介し特定のネームスペースにアクセスし、構造化拡張子定義（１１２）がどこに位置付けられているか識別する動的発見技法が使用され得る。このネームスペースは、それ自体、前の段落に記述した技法を使用して発見されるカテゴリールートか又は代替として別のフォーマットを取り得る。動作中、拡張子レジストリ情報仲介部（１０２）が、この特定のネームスペースにアクセスし、構造化拡張子定義（１１２）がどこに位置付けられているか識別し、その後、識別された場所から構造化拡張子定義（１１２）を取得する。第２のネームスペースを識別する第１のネームスペースにアクセスし、第３のネームスペースを識別するように、構造化拡張子定義（１１２）が位置付けられているネームスペースがアクセスされるまで仲介部（１０２）が、類似の方法でネームスペースの複数のレイヤ又はレベルにもアクセスし得ることを十分に理解されよう。上記の実施形態において、構造化拡張子定義（１１２）が実行中に仲介部（１０２）によって取得されるため、仲介部（１０２）は、新しい構造化拡張子定義（１１２）が利用可能になるたびに再コンパイルされる必要はない。
【００３６】
[0040]加えると、１つ以上の実施形態において、拡張子レジストリ情報仲介部（１０２）とレジストリ情報ストア（１０４）との間のインターフェースとして作動するインターフェースモジュールが含まれる。この（データソースとしても参照される）インターフェースモジュールが、拡張子レジストリ情報仲介部（１０２）の一部として、レジストリ情報ストア（１０４）の一部として、又は代替として別個のモジュール若しくはコンポーネントとして、含まれ得る。このインターフェースモジュールは、拡張子レジストリ情報仲介部（１０２）から一般的又は均質な形式のコマンド又はリクエストを受信し、これらコマンド又はリクエストをレジストリ情報ストア（１０４）に特定の形式のコマンド又はリクエストへ変換するように構成される。異なるレジストリ情報ストア（１０４）は、異なる方法で実装され得、及び／又は異なる通信タイプを支援する。異なるこれらのレジストリ情報ストア（１０４）と通信するための別のインターフェースモジュールが生成され得、適切なインターフェースモジュールを単に使用することによって、異なるこれらのレジストリ情報ストアを有している同一の拡張子レジストリ情報仲介部（１０２）が使用可能になる。
【００３７】
[0041]図３は、１つ以上の実施形態によるソフトウェア拡張子解析を実装するためのプロセスの例（３００）を示す流れ図である。プロセス（３００）は、ソフトウェア、ファームウェア、ハードウェア、又はその組み合わせによって実装され得る図１の仲介部（１０２）のような拡張子レジストリ情報仲介部によって実行される。プロセス（３００）は、ソフトウェア拡張子解析を実装するためのプロセスの例であって、更に別の図面を用いて、ソフトウェア拡張子解析を実装する論述が本明細書に含まれる。
【００３８】
[0042]プロセス（３００）において、ソフトウェア拡張子カテゴリーに対応する構造化拡張子定義が取得される（動作３０２）。前述したように、これらの定義は、以下の動的及び／又は静的発見技法を含む様々な異なる方法で取得され得る。
【００３９】
[0043]レジストリ情報ストア内のネイティブレジストリ情報が識別され（動作３０４）、アクセスされる（動作３０６）。前述したように、このレジストリ情報ストアは、同一の装置又はシステム又は代替として別の装置若しくはシステム上にプロセス（３００）を実装する拡張子レジストリ情報仲介部として実装され得る。ネイティブレジストリ情報、ソフトウェア状態、ソフトウェア設定値など、を含む様々な異なる情報が、レジストリ情報ストアに含まれ得る。動作（３０４）において、ネイティブレジストリ情報であるレジストリ情報ストア内の特定の情報が、様々な異なる方法で識別され得る。ネイティブレジストリ情報が識別され得る一方法例が、図７を参照してより詳細に後述される。
【００４０】
[0044]動作（３０６）でアクセスされたネイティブレジストリ情報はその後、本システムのソフトウェア拡張子を管理するときに解析される（動作３０８）。ネイティブレジストリ情報が管理されるこのシステムは、動作（３０６）でアクセスされるレジストリ情報ストアが実装されているシステムであって、プロセス（３００）を実装する拡張子レジストリ情報仲介部を実装している同一システムであり得る（がしかし同一である必要はない）。この解析は、問題検出及び／又は目録識別を含む様々な異なる形式を取り得る。以下、図４を参照した問題検出及び目録識別分析の更なる論述が含まれている。
【００４１】
[0045]動作（３０８）における解析に加えてレジストリ情報ストア上の動作又はレジストリ情報ストアへの修正も実行され得ることに留意されたい。例えば、ソフトウェア拡張子レジストリ情報がレジストリ情報ストアに挿入され得、ソフトウェア拡張子レジストリ情報がストアから除去され得る。これらの挿入及び除去プロセスは、図５及び図６を参照してより詳細に後述される。これら挿入及び除去プロセスは、図３の動作（３０２〜３０８）の追加として実行され得るか又は代替として動作（３０２〜３０８）の１つ以上と無関係に実行され得る。例えば、挿入又は除去プロセスは、動作（３０２〜３０８）が実行された後、実行され得る。別の例として、動作（３０４又は３０８）が（場合によっては動作（３０６）も）実行されずに挿入又は除去プロセスが実行され得る。
【００４２】
[0046]図４は、１つ以上の実施形態によるソフトウェア拡張子を解析するためのプロセスの例（４００）を示している流れ図である。プロセス（４００）は、ソフトウェア、ファームウェア、ハードウェア、又はその組み合わせによって実装され得る図１の仲介部（１０２）のような拡張子レジストリ情報仲介部によって実行される。プロセス（４００）は、ソフトウェア拡張子を解析するためのプロセスの例であって、異なる図面を参照したソフトウェア拡張子を解析する更なる論述が本明細書に含まれている。プロセス（４００）は、更に図１を参照して論述される。
【００４３】
[0047]プロセス（４００）において、ネームスペースリストが生成される（動作４０２）。ネームスペースリストは、カテゴリー定義の提示がネイティブレジストリ情報のネームスペースであり得るネームスペースに関する一覧である。これらカテゴリー定義が、構造化拡張子定義（１１２）から取得される。動作（４０２）で生成されるネームスペースリストは、構造化拡張子定義（１１２）で識別されたネームスペースすべての一覧か、又は定義（１１２）で識別されたネームスペースすべてのサブセットであり得る。１つ以上の実施形態おいて、カテゴリーの属性「ａｇｇｒｅｇａｔｅｄ」が真に設定されると、ネームスペースリスト内のネームスペースは、カテゴリー内のそれらの子供になる。例えば、ルートはカテゴリーのレジストリ情報が見つかる場所であって、レジストリ情報が集約された場合、そのネームスペースのエレメントは、１つのレジストリ情報が見つかる場所である。
【００４４】
[0048]ネームスペースリストからネームスペースが選択される（動作４０４）。ネームスペースは、ネームスペースリスト内のネームスペースの順番、アルファベット順、ランダムなど、に従う様々な異なる規準に基づいて選択され得る。
【００４５】
[0049]選択されたネームスペースがネイティブレジストリ情報であり得る１つ以上のカテゴリーが識別される（動作４０６）。これらのカテゴリーが様々な異なる方法で識別され得る。カテゴリーが識別され得る一方法例が、図７を参照してより詳細に後述される。
【００４６】
[0050]識別されたカテゴリーのうち１つが選択される（動作４０８）。カテゴリーは、動作（４０６）で識別されたカテゴリーの順番、アルファベット順、ランダムなど、に従う様々な異なる規準に基づいて選択され得る。
【００４７】
[0051]その後、識別されたカテゴリーのデータからレジストリ情報を生成するための試みが実行される（動作４１０）。この試みは、レジストリ情報ストアから識別されたカテゴリーのデータと構造化拡張子定義（１１２）とを比較することと、識別されたカテゴリーのデータがどのくらいよく構造化拡張子定義（１１２）と一致しているか調べることと、を含む。例えば、この試みは、拡張子定義において義務的であるように識別された特定のデータがカテゴリーデータに含まれているか否か、拡張子定義において任意であるように識別された特定のデータがカテゴリーデータに含まれるか否かなど、を決定することを含み得る。
【００４８】
[0052]動作（４１０）の試みに基づいて問題ログも更新される（動作４１２）。この問題ログは、カテゴリー定義が、１つ以上の拡張子定義とどのくらいよく一致するかを示しているリストである。このログは、例えば、拡張子定義において義務的であるように識別されたデータが、カテゴリーデータからなくなっていることと、カテゴリーパラメーターが、拡張子定義において識別された特定のカテゴリーパラメータータイプに従っていないことと、カテゴリーデータが、拡張子定義において識別された特定の制約に失敗することと、などを示し得る。
【００４９】
[0053]加えると、動作（４１２）において更新される問題ログは、拡張子定義に基づいて予測されるが、カテゴリーデータにおいて見つからないネームスペース構成要素と、カテゴリーデータにおいて見つかるが、カテゴリー定義において定義されていないネームスペース構成要素と、の間の相関関係に関する指標を含み得る。この相関関係は、レジストリ情報ストア（１０４）に表されたレジストリ情報における、例えば、小さな問題（例えば誤字）を識別することを支援し得る。例えば、定義（１１２）に従って予測されるネームスペース構成要素をレジストリ情報ストアのデータのネームスペース構成要素へ変換するときのコスト（又は逆も同様）を決定するための様々な異なる従来技法のいくつかを使用し、定義（１１２）がレジストリ情報ストア（１０４）内のカテゴリーデータと比較され得る。文字又は空白の除去、文字の交換、文字の挿入など、あるものを別のものに変換するときのコストを生成するような上記技法は、一定の動作に異なる重みを付け得る。上記技法を使用し、また、構造化拡張子定義（１１２）において識別されたネームスペース構成要素の文字列のサイズを、レジストリ情報ストアのネームスペース構成要素の文字列のサイズへ変換する最大可能性コスト（又は逆も同様）も決定される。定義（１１２）に従って予測されたネームスペース構成要素を、レジストリ情報ストア（１０４）内のあるサイズの文字列を別のサイズの文字列へ変換する最大可能性コストによって分割された非属性化データネームスペース構成要素へ変換するコストである値がその後、生成される。生成されるこの値が小さければ小さいほど、予測されるネームスペース構成要素及び非属性化ネームスペース構成要素がお互いにより近似にある。
【００５０】
[0054]生成されるこの値が閾値よりも小さい場合、定義（１１２）において識別されるネームスペース構成要素及びレジストリ情報ストア（１０４）内のネームスペース構成要素は、ネームスペース構成要素が、１つ以上のレジストリ情報パラメーターに対するパスの一部であることが決定されるのに十分に近いことが決定され得る。この決定に関する指標が問題ログ（４１２）に含まれている。
【００５１】
[0055]未定義構成要素リストも更新される（動作４１４）。この未定義構成要素リストは、拡張子定義（１１２）の中で見出されるネームスペース構成要素リストであるが、動作（４０６）で識別されたカテゴリーによってどこにも定義されていない。
【００５２】
[0056]動作（４０８）でまだ選択されていない、動作（４０６）で識別された更なるカテゴリーが存在するか否かに関するチェックがその後、動作（４１６）において実行される。更なるカテゴリーが識別されているが、まだ選択されていない場合、それらのカテゴリーのうち１つが選択される（動作４０８）。
【００５３】
[0057]しかしながら、動作（４０６）で識別されたカテゴリーそれぞれが、動作（４０８）で選択されていた場合、拡張子定義に基づいて識別されたカテゴリーに完全に適合したレジストリ情報が選択される（動作４１８）。この完全な適合は、動作（４１０）の試みに基づいている。完全な適合は、動作（４１２）で識別された問題ログ内に含まれている１つ以上の問題の深刻さ、動作（４１２）で識別された問題ログに含まれ得る問題の数、場合により動作（４１２）において問題ログに含まれている問題の数、動作（４１４）において未定義構成要素リストに含まれているネームスペース構成要素数など、様々な異なる規準に基づいて決定され得る。これらの規準は、動作（４１２）で識別された問題ログ内の最小の深刻な問題を有するカテゴリー、動作（４１２）で識別された問題ログ内の最小数の問題を有するカテゴリー、動作（４１２）で識別された問題ログ内のネームスペース構成要素への密接な相関関係を有するカテゴリー、などを選択する様々な異なる方法で使用され得る。
【００５４】
[0058]その後、動作（４２０）において、動作（４０４）でまだ選択されていない更なるネームスペースが、動作（４０２）のネームスペースリスト内に存在しているか否かに関するチェックが実行される。まだ選択されていない更なるネームスペースが、ネームスペースリスト内に存在している場合、それらのネームスペースのうち１つが選択される（動作４０４）。
【００５５】
[0059]しかしながら、ネームスペースリスト内の動作（４０２）で生成されたネームスペースそれぞれが、動作（４０４）で選択されていた場合、その結果が返却される（動作４２２）。これらの結果は、動作（４１８）で選択されたレジストリ情報を返却すること、動作（４１２）で更新された問題ログのすべて又は一部を返却すること、動作（４１４）で更新された未定義構成要素リストのすべて又は一部を返却することなど、様々な異なる形式を取り得る。
【００５６】
[0060]目録の識別及び問題の検出を含む様々な異なるレジストリ情報ストア解析を提供するために、プロセス（４００）が使用され得る。例えば、動作（４１８）で選択されたレジストリ情報は、動作（４２２）で返却され得、実質上、動作（４２２）において返却されるレジストリ情報ストア目録をもたらす。別の例として、単一のネームスペースは、動作（４０２）において単一のネームスペースを有するネームスペースリストを生成することによって解析され得る。
【００５７】
[0061]プロセス（４００）は、レジストリ情報ストア内の様々な問題の検出も支援し得る。例えば、動作（４１８）で選択されたカテゴリー（又は代替として複数のカテゴリー）に関して動作（４１２）で更新された問題ログに含まれている問題が、動作（４２２）において、レジストリ情報ストアに関するエラーレポートとして返却され得る。別の例として、動作（４０２）において、単一のネームスペースが、ネームスペースリストを生成するときに使用され得、動作（４１８）において選択されたカテゴリー（又は代わりに複数のカテゴリー）に関して動作（４１２）において更新された問題ログに含まれている問題が動作（４２２）において、単一のレジストリ情報に関するエラーレポートとして返却され得る。
【００５８】
[0062]動作（４２２）において返却される結果もプロセス（４００）及び／又は別のコンポーネント又はモジュールを実装する拡張子レジストリ情報仲介部によって任意に表示され得るか又は代替として提示され得る。例えば、問題がプロセス（４００）によって検出されたか否かに関する通知が、拡張子レジストリ情報仲介部（１０２）によって表示され得るか若しくは代替として提示され得るか又は記録され得る。例えば、特定のネイティブレジストリ情報を用いた問題が検出されたという指標が、計算装置（１００）のユーザーに表示され得る。
【００５９】
[0063]加えると、また、拡張子レジストリ情報仲介部（１０２）は、検出された問題を表示するか又は代替として報告するとき、構造化拡張子定義が書かれているソフトウェア拡張子言語も活用し得る。解析は、レジストリ情報ストアに保持されている１つ以上のネイティブレジストリ情報のカテゴリーに対応する複数の構造化拡張子定義の少なくとも一部に基づいている。動作（４１０）及び（４１２）において前述したように、構造化拡張子定義に記述されている期待がレジストリ情報によって満たされない状況が識別され、問題ログに含まれる。これらの差が、レジストリ情報とともに検出された問題としてユーザーに表示され得る。加えると、構造化拡張子定義は、異なる問題に関連付けされた異なるメッセージ及び／又は注釈（例えば、拡張子定義において義務的として識別されたデータが、カテゴリーデータからなくなっている、カテゴリーパラメーターが、拡張子定義において識別された特定のカテゴリーパラメータータイプに従っていない、カテゴリーデータが、拡張子定義において識別された特定の制約を履行していないなど）を含み得る。レジストリ情報と構造化拡張子定義との間の差に基づいて、これら１つ以上の異なるメッセージ及び／又は注釈が、識別され得、表示され得、検出された問題が、ユーザーによってより容易に理解される方法で表示されることを可能にする。
【００６０】
[0064]図５は、１つ以上の実施形態によるレジストリ情報ストアにソフトウェア拡張子レジストリ情報を挿入するためのプロセスの例（５００）を例示している流れ図である。プロセス（５００）が、ソフトウェア、ファームウェア、ハードウェア、又はその組み合わせで実装され得る図１の仲介部（１０２）のような拡張子レジストリ情報仲介部によって実行される。プロセス（５００）は、ソフトウェア拡張子レジストリ情報をレジストリ情報ストアに挿入するためのプロセスの例である。本明細書の異なる図面を参照したソフトウェア拡張子レジストリ情報をレジストリ情報ストアに挿入する更なる論述が含まれている。プロセス（５００）は、更に図１を参照して論述される。
【００６１】
[0065]プロセス（５００）において、レジストリ情報が取得される（動作５０２）。このレジストリ情報は、様々な異なる方法で取得され得る。１つ以上の実施形態において、レジストリ情報は、（例えば、別の装置又はシステム上で図４のプロセス（４００）を実行し）別の機器又はシステム上のレジストリ情報ストアを解析した結果として取得されるレジストリ情報であり得る。代替として、レジストリ情報が別の方法で取得され得る。例えば、供給者プログラム（１１０）又は供給者に代わる別のアクターが、特定のタイプのファイルを処理するための供給者プログラム（１１０）の能力を宣言する１つ以上のレジストリ情報を拡張子レジストリ情報仲介部（１０２）に提示し得る。これらのレジストリ情報は、供給者プログラム（１１０）が実行し得る動作、供給者プログラム（１１０）に動作を実行するためにどのようにリクエストするかなど、を定義している。
【００６２】
[0066]レジストリ情報カテゴリーからルートが選択される（動作５０４）。このルートは、レジストリ情報に関するネームスペースのルートである。加えると、集約カテゴリーに関しては（例えば、カテゴリーの属性「ａｇｇｒｅｇａｔｅｄ」が真に設定されたとき）レジストリ情報名も選択される。
【００６３】
[0067]レジストリ情報からレジストリ情報パラメーターが選択される（動作５０６）。レジストリ情報パラメーターは、レジストリ情報内のレジストリ情報パラメーターの順番、レジストリ情報パラメータータイプ、アルファベット順、ランダムなど、に従う様々な異なる規準に基づいて選択され得る。
【００６４】
[0068]選択されたレジストリ情報パラメーターに関するデータは、ネイティブレジストリ情報フォーマットに適切であるように修正される（動作５０８）。プロセス（５００）を実装している拡張子レジストリ情報仲介部は、ネイティブレジストリ情報フォーマットと、動作（６０２）で取得されたレジストリ情報によって使用されるフォーマットからネイティブレジストリ情報へデータをどのように変換する（又は方法を記述している情報へのアクセスを有する）ことと、を知っている。これは、例えば、ネームスペース構成要素を追加すること又は変更すること、ある文字を別のタイプ（例えば「＼」文字、「｜」文字）への変換することなど、を含み得る。
【００６５】
[0069]修正されたデータが、ネイティブレジストリ情報フォーマットに従って、１つ以上のネームスペースに書き込まれる（動作５１０）。（プロセス（５００）を実装している拡張子レジストリ情報仲介部に知られているか又はアクセス可能な）ネイティブレジストリ情報フォーマットは、動作（５１０）においてデータが、その１つの場所に書き込まれる場合、データが一箇所に書かれることを示し得る。代替として、ネイティブレジストリ情報フォーマットは、動作（５１０）においてデータが、それら複数の場所に書き込まれる場合、データが複数の場所に書かれることを示し得る。
【００６６】
[0070]その後、動作（５１２）において、動作（５０６）でまだ選択されていないレジストリ情報の更なるレジストリ情報パラメーターが存在するか否かに関するチェックが実行される。まだ選択されていない更なるレジストリ情報パラメーターが存在する場合、それらのレジストリ情報パラメーターのうち１つが選択される（動作５０６）。
【００６７】
[0071]しかしながら動作（５０６）おいて、それぞれレジストリ情報のレジストリ情報パラメーターが選択された場合、プロセス（５００）を終了する（動作５１４）。かくして、プロセス（５００）を実装している拡張子レジストリ情報仲介部は、レジストリ情報に関するレジストリ情報パラメーターそれぞれをネイティブレジストリ情報フォーマットでレジストリ情報ストア（１０４）にストアする。
【００６８】
[0072]図１に戻ると、システム拡張子レジストリ情報の除去は、レジストリ情報と一致する、レジストリ情報ストア（１０４）にストアされているネイティブレジストリ情報又はそのパラメーターを参照している。例えば、供給者プログラム（１１０）が、消費者プログラム（１０８）を拡張するためのその機能通知を中止したい場合（例えば、供給者プログラム（１１０）がアンインストールされている場合）、供給者プログラム（１１０）又は供給者プログラムの別の代替アクターが、レジストリ情報ストア（１０４）から除去されるようなレジストリ情報をソフトウェア拡張仲介部に提供し得る。ソフトウェア拡張仲介部はその後、レジストリ情報ストア内のネイティブレジストリ情報を含むデータをレジストリ情報ストア（１０４）から除去する。
【００６９】
[0073]１つ以上のレジストリ情報ストアに常駐しているレジストリ情報を用いた１つ以上のカテゴリーにおいて、ネイティブレジストリ情報は不明瞭か又は相互に優先し得る。１つ以上の実施形態において、除去アルゴリズムは、ストアからそのデータを除去する前に、レジストリ情報パラメーターのデータが、レジストリ情報ストア（１０４）内の対応するデータと一致する（例えば等価である）ことをレジストリ情報パラメーターごとに検証することによって、この挙動を補償し得る。
【００７０】
[0074]図６は、１つ以上の実施形態によるレジストリ情報ストアからソフトウェア拡張子レジストリ情報を除去するためのプロセスの例（６００）を例示している流れ図である。プロセス（６００）は、ソフトウェア、ファームウェア、ハードウェア、又はその組み合わせで実装され得る図１の仲介部（１０２）のような拡張子レジストリ情報仲介部によって実行される。プロセス（６００）は、レジストリ情報ストアからソフトウェア拡張子レジストリ情報を除去するためのプロセスの例であって、本明細書の別の図面を参照したレジストリ情報ストアからソフトウェア拡張子レジストリ情報を除去する更なる論述が含まれている。プロセス（６００）は、更に図１の参照を用いて論述される。
【００７１】
[0075]プロセス（６００）において、レジストリ情報が取得される（動作６０２）。このレジストリ情報は、消費者プログラム（１０８）を拡張するために、その機能通知を供給者プログラム（１１０）から停止するなど、様々な異なる方法で取得され得る。
【００７２】
[0076]レジストリ情報カテゴリーからルートが選択される（動作６０４）。このルートは、レジストリ情報に関するネームスペースルートである。
[0077]レジストリ情報パラメーターが、レジストリ情報から選択される（動作６０６）。レジストリ情報パラメーターは、レジストリ情報内のレジストリ情報パラメーターの順番、レジストリ情報パラメータータイプ、アルファベット順、ランダムなど、に従う様々な異なる規準に基づいて選択され得る。
【００７３】
[0078]選択されたレジストリ情報パラメーターのデータが、ネイティブレジストリ情報フォーマットに適切であるように修正される（動作６０８）。図５の動作（５０８）を参照し前述したように、プロセス（６００）を実装している拡張子レジストリ情報仲介部は、ネイティブレジストリ情報フォーマット及び動作（６０２）で取得されたデータをレジストリ情報によって使用されるフォーマットからネイティブレジストリ情報へ変換する（又は方法を記述している情報へのアクセスを有する）方法を知っている。
【００７４】
[0079]データは、挿入動作がデータを書き込んだ１つ以上のネームスペースからも読み出される（動作６１０）。レジストリ情報がレジストリ情報ストアに挿入されていた場合、これらのネームスペースは、例えば、修正されたデータが図５の動作（５１０）でレジストリ情報に関して書き込まれる１つ以上のネームスペースである。
【００７５】
[0080]動作（６０８）から修正されたデータが動作（６１０）で読み出されたデータと比較され（動作６１２）、（６１２）で比較されたデータが同一である否かに関する決定が実行される（動作６１４）。比較されたデータが同一でない場合、動作（６１６）において、動作（６０６）でレジストリ情報がまだ選択されていない、更なるレジストリ情報パラメーターがあるか否かに関するチェックが実行される。まだ選択されていない更なるレジストリ情報パラメーターがある場合、それらのレジストリ情報パラメーターのうち１つが選択される（動作６０６）。
【００７６】
[0081]しかしながら、動作（６０６）でレジストリ情報のレジストリ情報パラメーターそれぞれが選択されていた場合、プロセス（６００）を終了する（動作６１８）。
[0082]動作（６１４）に戻ると、比較されたデータが同一であった場合、１つ以上のネームスペースから読み出されたデータが消去される（動作６２０）。動作（６０８）から修正されたデータと同一である動作（６１０）で読み出されたデータが、動作（６２０）で消去される場合に限って、動作（６１０）でネームスペースから読み出されたネームスペースすべてよりも少ないデータが、動作（６０８）から修正されたデータと同一であり得ることを十分に理解されよう。かくして、プロセス（６００）を実装している拡張子レジストリ情報仲介部が、レジストリ情報ストア（１０４）内のレジストリ情報に関するレジストリ情報パラメーターそれぞれを消去又は代替として除去する。
【００７７】
[0083]プロセス（６００）は、ネイティブレジストリ情報フォーマットに変換されるレジストリ情報パラメーターを参照して説明される。代替として、動作（６１０）で読み出されたレジストリ情報パラメーターは、動作（６０２）で取得されたレジストリ情報によって使用されるフォーマットへ変換され得る。
【００７８】
[0084]１つ以上の実施形態において、本明細書に論述されるソフトウェア拡張子解析の様々な態様はトライ木構造を利用し得る。様々な異なるトライ木構造は、本明細書に論述されたソフトウェア拡張子解析を用いて使用され得る。加えると、従来の様々な別の木構造が代替として使用され得る。
【００７９】
[0085]１つ以上の態様に従って特定の場所に表されるレジストリ情報カテゴリーが、トライ木構造に基づいて決定される。通常、トライ木構造は、構造化拡張子定義に記述されたネームスペース及び制限から生成される。トライ木のノードそれぞれは、親よりも次第により特化したネームスペース構成要素を含んでいて、ネイティブレジストリ情報が、そのネームスペースか又はある状態においてネームスペースの直接の子供として見つかる０個以上のカテゴリーを示し得る。それぞれのカテゴリーは、特定のカテゴリーのネイティブレジストリ情報になるために満たされるべき、ネームスペースに対する０個以上の付加的制限を有する。ストア内のレジストリ情報データのカテゴリーを決定しようとするとき、（もしあれば）トライ木構造の１つ以上のこれらのノードがチェックされ、ストア内のデータを正確に記述し得る一連のカテゴリーをリトリーブする。ストア内のデータがその後、これらのカテゴリーそれぞれと比較され、データをレジストリ情報パラメーターとして解釈することを試みる。ストア内のデータがレジストリ情報パラメーターとして解釈され得る精度が使用され、データを０個又は１個のカテゴリーとして解釈するよう発見的に選択する。このプロセスは、より詳細に後述される。
【００８０】
[0086]図７は、１つ以上の実施形態による、特定の場所に表されたレジストリ情報カテゴリーを識別するためのプロセスの例（７００）を示している流れ図である。プロセス（７００）は、図１の仲介部（１０２）のようなソフトウェア拡張仲介部によって実行され、図１のストア（１０４）のようなレジストリ情報ストア内のネイティブレジストリ情報を解析する。プロセス（７００）は、ソフトウェア、ファームウェア、ハードウェア、又はその組み合わせで実装され得る。プロセス（７００）は、レジストリ情報ストア（１０４）内部の一様でないデータの収集部にストアされているネイティブレジストリ情報を識別し抽出するためのプロセスの例であって、本明細書の別の図面を参照したレジストリ情報ストア内にストアされたデータからレジストリ情報を抽出する更なる論述が含まれる。
【００８１】
[0087]プロセス（７００）の例において、レジストリ情報ストアは、１つ以上のキー及び値としてレジストリ内に実装されている。レジストリは、１つ以上のキーが、別のキー内部にストアされ得る階層構造を含む。加えると、０個以上の値がキーそれぞれに含まれ得、これらの値は、（例えば、数字又はテキスト）タイプを有し得、データを有し得る。ネイティブレジストリ情報は、単一の値として又はキーの内容全体として存在し得る。場合によっては、レジストリ情報が、１つのキーよりも優先する内容結合で存在することもある。単一のレジストリ情報パラメーターが、レジストリ内の０個以上のキーへマッピングされる。レジストリ内の場所はパス名によって識別され、典型的に、前もって定められた一連のルートキーの１つで始まる、レジストリ階層構造を介した１つ以上のキー名を含んでいて、特定のキーは名前値で終了するパス名値に達する。パスの構成要素は、区切り文字で分割されていて、１つ以上の実施形態において、この区切り文字は「＼」であるが、代替として別の文字が使用され得る。
【００８２】
[0088]プロセス（７００）において、特定のネームスペースが表し得る、レジストリ情報の既知の一連のカテゴリーが生成される。構造化拡張子定義（例えば図１の定義（１１２））が読み出され（動作７０２）、使用され得、トライ木構造を生成する（動作７０４）。構造化拡張子定義は、この例において、レジストリ情報ストア内のネイティブレジストリ情報がストアされているレジストリ場所に関するネームスペースを識別する。これらのネームスペースは、レジストリの最初の子供がルートキーであり、１つ以上の別のキーを介し続くトライ木を生成するために使用され得る。トライ木は、フォルダーそれぞれに関し異なるノードをパス名に含んでいる。そのようなトライ木の例が、図８を参照してより詳細に後述される。
【００８３】
[0089]カテゴリーがトライ木のノードそれぞれに関連付けられていて、カテゴリーに対するルートのネームスペースを表している。単一ノードが０個以上のカテゴリーとの関連付けを保持していて、この関連付けのレコードが（例えば、プロセス（７００）を実装しているモジュールによって）保持され得る。したがって、トライ木の特定のノードを考えると、そのノードによって表されるネームスペースに関連付けられている０個以上のカテゴリーは容易に識別され得ない。より詳細に後述されるように、この関連付けによって、それらのネイティブレジストリ情報のネームスペースに対する付加的なカテゴリー場所の制約がネームスペースによって容易に識別され、識別プロセス（７００）の一部として使用されることを可能になる。
【００８４】
[0090]ネームスペースが可能性のあるレジストリ情報を表し得るカテゴリーを決定するためのリクエストが受信される（動作７０６）。上記のリクエストは、ネームスペースを解釈するためのリクエストとしても参照される。特定の場所はパス名によって識別される。このリクエストは典型的に、プロセス（７００）を実装している同一装置において実行している別のコンポーネント又はモジュールから受信されるが、代替として別の装置から受信され得る。
【００８５】
[0091]リクエストに応答してネームスペースが、その特定の構成要素へ徐々に分解される（動作７０８）。例えば、ネームスペースが、ＨＫＬＭ￥Ｓｏｆｔｗａｒｅ￥Ｃｌａｓｓｅｓ￥の場合、ネームスペースが、「ＨＫＬＭ」、「Ｓｏｆｔｗａｒｅ」、「Ｃｌａｓｓｅｓ」の構成要素に分解される。
【００８６】
[0092]（動作７０８）から提供された最初の構成要素が現在の構成要素として使用され、トライ木のルートが現在のノードとして使用される（動作７１０）。動作（７１０）において、例えば、ネームスペースがＨＫＬＭ￥Ｓｏｆｔｗａｒｅ￥Ｃｌａｓｓｅｓ￥の場合、現在の構成要素は「ＨＫＬＭ」である。この時点において、現在、結果として得られたネームスペースも結果として得られたカテゴリーも存在しない（例えば、結果として得られたネームスペース及び結果として得られたカテゴリーは、それらがまだ識別されていないことを示す空の値又は別のある値に設定される）。
【００８７】
[0093]その後、ネームスペース内に次のネームスペース構成要素が存在するか否かに関するチェックが、実行される（動作７１２）。ネームスペース内に次のネームスペース構成要素が存在する場合、現在のノードが、次のネームスペース構成要素と一致する子供を有しているか否かに関するチェックが実行される（動作７１４）。例えば、ネームスペースがＨＫＬＭ￥Ｓｏｆｔｗａｒｅ￥Ｃｌａｓｓｅｓ￥であって、現在のノードが「ＨＫＬＭ」であって、現在の構成要素が「ＨＫＬＭ」である場合、動作（７１４）において、トライ木の現在のノードが「Ｓｏｆｔｗａｒｅ」である子供を有しているか否かに関するチェックが実行される。
【００８８】
[0094]現在のノードが、次のネームスペース構成要素と一致する子供を有している場合、その子供が現在のノードとして選択され、ネームスペース内の次の構成要素が、現在の構成要素として設定される（動作７１６）。その後、現在のノードがネームスペースによって満たされる任意のカテゴリーを有している否かに関するチェックが実行される（動作７１８）。現在の構成要素が、現在のノードと一致する（同一である）１つ以上のカテゴリーを有している場合、現在のノードは、ネームスペースによって満たされるカテゴリーを有している。例えば、現在のノードが、現在のネームスペースの子供がピリオドで始まるコンテナーである限りそれらを受け入れる「ＦｉｌｅＡｓｓｏｃｉａｔｉｏｎ」カテゴリーを有している場合であって、かつ、現在のノードが「．ｍｐ３」の子供を有する「ｃｌａｓｓｅｓ」である場合、現在のノードの子供は「．ｍｐ３」によって表されるネームスペースによって満たされたカテゴリー「ＦｉｌｅＡｓｓｏｃｉａｔｉｏｎ」を有している。
【００８９】
[0095]現在のノードが、ネームスペースによって満たされる任意のカテゴリーを有している場合、ネームスペースによって満たされるこれらのカテゴリーが、結果として得られたカテゴリーとして識別され、現在のノードによって表されるネームスペースが、結果として得られたネームスペースとして識別される（動作７２０）。集約カテゴリーに関すると、（例えば、カテゴリー属性「ａｇｇｒｅｇａｔｅｄ」が真に設定されたとき）動作（７１８）のチェック及び動作（７２０）の結果として得られたカテゴリーが、ネームスペースの子供を参照していることに留意されたい。例えば、「ＦｉｌｅＡｓｓｏｃｉａｔｉｏｎ」が、ＨＫＬＭ￥Ｓｏｆｔｗａｒｅ￥Ｃｌａｓｓｅｓ￥のルートを有している場合、レジストリ情報は、ネームスペース内部の次のキーとして存在していて、このレジストリ情報カテゴリーが、動作（７１８）及び（７２０）において参照されるカテゴリーである。
【００９０】
[0096]プロセス（７００）はその後、次のネームスペース構成要素が存在するか否かチェックするための動作（７１２）に戻る。次のネームスペース構成要素が存在しない場合、結果として得られたネームスペース及び結果として得られたカテゴリーが、ネームスペースによって識別された特定の場所において表されるカテゴリー又はレジストリ情報カテゴリーとして報告される（動作７２２）。
【００９１】
[0097]動作（７１８）に戻ると、現在のノードが、ネームスペースによって満たされるどんなカテゴリーも有していない場合、プロセス（７００）は、次のネームスペース構成要素が存在するか否かチェックするための動作（７１２）へ戻る。次のネームスペース構成要素が存在しない場合、結果として得られたネームスペース及び結果として得られたカテゴリーが、ネームスペースによって識別された特定の場所において表されるカテゴリー又はレジストリ情報カテゴリーとして報告される（動作７２２）。
【００９２】
[0098]動作（７１４）に戻ると、現在のノードが次のネームスペース構成要素と一致する子供を有していない場合、結果として得られたネームスペース及び結果として得られたカテゴリーが、ネームスペースによって識別された特定の場所において表されるカテゴリー又はレジストリ情報カテゴリーとして報告される（動作７２２）。
【００９３】
[0099]動作（７２０）が実行されない状況が生じ得るので、動作（７２２）において報告された結果として得られたネームスペース及び結果として得られたカテゴリーが、それらがまだ識別されていないことを示す空の値か又は別のある値に設定されることに留意されたい。ネームスペースに関する動作（７２０）が複数回実行される状況も生じ得ることに留意されたい。上記の状況において、動作（７２０）で、最も新しく設定されたカテゴリー及びネームスペースが、動作（７２２）において報告される。
【００９４】
[00100]１つ以上の実施形態において、レジストリ情報ストア内のネームスペース構成要素が、構造化拡張子定義において記述されている構成要素にどのくらい近いかに関する決定が実行される。この近似に関する決定は、構成要素の１つを別のものに変換するときのコストを決定する従来の様々な異なる技法のいくつかを使用し、２つのネームスペース構成要素を比較することによって実行され得る。ネームスペース構成要素の１つを別のものに変換するときのコストを生成するための上記技法は、文字又はスペースの除去、文字の交換、文字の挿入など、いくつかの動作を別に重み付け得る。上記技法を使用し、２つのネームスペース構成要素のうちあるサイズの文字列を２つのネームスペース構成要素のうち別のサイズの文字列への変換に可能性がある大きなコストも決定される。構成要素の一方を分割された他方に変換するコストである値はその後、あるサイズの文字列を別のサイズの文字列へ変換する大きな可能性があるコストによって生成される。生成されるこの値が低ければ低いほど、２つの構成要素はお互いにより近くある。生成されるこの値が、閾値よりも小さい場合、２つのパス名が、ネイティブレジストリ情報を発行した時の誤りであることに十分に近いことが決定され得る。したがって、生成された値が閾値よりも小さい場合、２つのパス名は同一として見なされ得る（例えば動作（７１４）において、２つがたとえ同一でなくても、現在のノードが、次のネームスペース構成要素と一致する子供を有していることが決定され得る）。
【００９５】
[00101]図８は、１つ以上の実施形態に従って使用され得る構造化拡張子定義に関するトライ木の例（８００）を示している。トライ木（８００）は、例えば、図７の動作（７０４）で生成されるトライ木構造であり得る。トライ木（８００）は、複数のレベル（８０２）、（８０４）、（８０６）、（８０８）、及び（８１０）を含む。それぞれのレベルにおいて、「ＨＫＬＭ」、「ＨＫＣＵ」、「ｓｏｆｔｗａｒｅ」、「ｃｌａｓｓｅｓ」などのような１つ以上のノードが例示されている。
【００９６】
[00102]トライ木のルートは、レベル（８０２）にあって、どんな値も有していない。ルートの子供がレベル（８０２）に例示されていて、図１の拡張子レジストリ情報仲介部（１０２）がどのように解析するか知っている、レジストリ情報ストアすべてのルートを表している。レベル（８０４）のネームスペース構成要素の子供はレベル（８０６）に例示され、レベル（８０６）のネームスペース構成要素の子供はレベル（８０８）などに例示されている。レベル（８０４〜８１０）のノードによって表されるネームスペースは、ネームスペース構成要素間にバックスラッシュを有する、ノードといくつかの親ノードとの名前である。例えば、レベル（８０８）のノード「ｃｌａｓｓｅｓ」は、ネームスペース「ＨＫＬＭ￥ｓｏｆｔｗａｒｅ￥ｃｌａｓｓ」を表している。
【００９７】
[00103]それぞれのレベル（８０２〜８１０）が１つ以上のカテゴリーとも関連付けられ得、そのレベルのネームスペースに関連付けられている。例えば、レベル（８０８）は、ネームスペース「ＨＫＬＭ￥ｓｏｆｔｗａｒｅ￥ｃｌａｓｓｅｓ」と関連付けられている１つ以上のカテゴリー（８２２）を含み得る。別の例として、レベル（８１０）は、ネームスペース「ＨＫＬＭ￥ｓｏｆｔｗａｒｅ￥ｃｌａｓｓｅｓ￥ＣＬＳＩＤ」と関連付けられている１つ以上のカテゴリー（８２４）と、ネームスペース「ＨＫＬＭ￥ｓｏｆｔｗａｒｅ￥ｃｌａｓｓｅｓ￥ＡＰＰＩＤ」と関連付けられている１つ以上のカテゴリー（８２６）と、を含み得る。
【００９８】
[00104]１つ以上の実施形態において、特定の場所に示されたレジストリ情報カテゴリーを識別するための図７のプロセス（７００）のようなプロセスを実装するとき、パス名は、トライ木構造内のエレメントへのポインターとしてストアされる。トライ木のエレメント又はノードそれぞれ（図８に例示された例えばそれぞれキー）は、特定の記憶場所にストアされる。特定の場所に表されるレジストリ情報カテゴリーを識別するためのプロセスの一部としてのパス名は、対応するトライ木の記憶場所へのポインターとして表される。例えば、レベル（８０８）のノードは対応する記憶場所を有していて、パス名「ＨＫＬＭ￥ｓｏｆｔｗａｒｅ￥ｃｌａｓｓｅｓ」が「ｃｌａｓｓｅｓ」に対応するその記憶場所へのポインターである。
【００９９】
[00105]このパス名表現は、効率的なメモリー使用を提供する。パス名をオーバーラップするための複製情報は保持される必要はない。むしろ、単に正しい記憶場所へのポインターが保持され得る。更に、それぞれの記憶場所に存在しているポインター数のレコードが保持され得る。トライ木の特定の場所へのポインター数が０になったとき、（トライ木のその場所の子供へのポインターが存在していないと見なして）トライ木のその場所がメモリーから除去され得る。
【０１００】
[00106]このパス名表現を記憶場所へのポインターとして使用すると、パスの同等性が容易に決定され得る。２つのパス名が同一の記憶場所へのポインターである場合、２つのパス名は同一である。しかしながら、２つのパス名が異なる記憶場所へのポインターである場合、２つのパス名は同一でない。この特性は、非常に効率的な順番付け又はハッシュも可能にし、ノードへのポインターをハッシュ値として使用してパスが、連想コンテナーのキーとして非常に効率的にストアされ得る。
【０１０１】
[00107]図９は、１つ以上の実施形態によるソフトウェア拡張子解析を実装するように構成され得る計算装置の例（９００）を示している。計算装置（９００）は、例えば、図１の計算装置（１００）であり得る。
【０１０２】
[00108]計算装置（９００）は、１つ以上のプロセッサー又は演算処理装置（９０２）、１つ以上のメモリー及び／又はストレージコンポーネント（９０６）を含み得る１つ以上の計算機可読媒体（９０４）、１つ以上の入力／出力（Ｉ／Ｏ）装置（９０８）、及び様々なコンポーネント及び機器が相互に通信可能なバス（９１０）を含む。計算機可読媒体（９０４）及び／又は１つ以上のＩ／Ｏ装置（９０８）は、計算装置（９００）の一部として含まれ得るか又は代わりに機器に接続され得る。バス（９１０）は、メモリーバス又はメモリーコントローラーバス、周辺機器用バス、アクセラレイティッドグラフィックスポート、プロセッサーパス又はローカルバスなど、を含む様々な異なるバスアーキテクチャを利用するいくつかのタイプのバス構造の１つ以上を示している。バス（９１０）は、有線バス及び／又は無線バスを含み得る。
【０１０３】
[00109]メモリー／ストレージコンポーネント（９０６）は、１つ以上の計算機記憶媒体を表す。コンポーネント（９０６）は、（ランダムアクセスメモリー（ＲＡＭ）などの）揮発性媒体、及び／又は（読み出し専用メモリー（ＲＯＭ）、フラッシュメモリー、光ディスク、磁気ディスクなどの）不揮発性媒体を含み得る。コンポーネント（９０６）は、（例えばＲＡＭ、ＲＯＭ、固定のハードドライブなどの）固定の媒体及び（例えばフラッシュメモリードライブ、取り外し可能ハードドライブ、光学式ディスクなどの）取り外し可能媒体を含み得る。
【０１０４】
[00110]本明細書に論述した技法は、１つ以上の演算処理装置（９０２）によって実行される命令を有するソフトウェアに実装され得る。異なる命令が、演算処理装置（９０２）、演算処理装置（９０２）内の様々なキャッシュメモリー、計算装置（９００）の（示されていない）別のキャッシュメモリー、又はその他の計算機可読媒体など、計算装置（９００）の異なるコンポーネントにストアされ得ることを十分に理解されよう。加えると、命令が計算装置（９００）にストアされる場所は、時間が経つにつれて変化し得ることを十分に理解されよう。
【０１０５】
[00111]１つ以上の入力／出力装置（９０８）によって、ユーザーは計算装置（９００）にコマンド及び情報を入力可能になり、情報がユーザー、及び／又はその他のコンポーネント又は機器に提示されることも可能になる。入力装置の例は、キーボード、カーソル制御装置（例えばマウス）、マイクロフォン、スキャナーなどを含む。出力装置の例は、表示装置（例えば、モニター又はプロジェクター）、スピーカー、プリンター、ネットワークカードなどを含む。
【０１０６】
[00112]様々な技法が、一般的なソフトウェア又はプログラムモジュールの文脈で本明細書に記載され得る。通常、ソフトウェアは、特定のタスクを実行するか又は特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。これらのモジュール及び技法の実装は、いくつかの計算機可読媒体形式を介しストア又は送信され得る。計算機可読媒体は、計算装置によってアクセスされ得る利用可能な単一媒体又は複数媒体のいずれかであり得る。非限定の例として、計算機可読媒体は、「計算機記憶媒体」及び「通信媒体」を含み得る。
【０１０７】
[00113]「計算機記憶媒体は」、計算機読込可能命令、データ構造、プログラムモジュール、又はその他のデータのような情報の記憶に関する任意の方法若しくは技術で実装された揮発性媒体及び不揮発性媒体、並びに取り外し可能媒体及び媒体取り外し不可能媒体を含む。計算機記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリー、若しくはその他のメモリー技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、若しくはその他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、若しくはその他の磁気記憶装置、又は所望した情報をストアするために利用され得、計算機によってアクセスされ得る別の任意の媒体、を含むがこれらに限定しない。
【０１０８】
[00114]「通信媒体」は典型的に、計算機可読命令、データ構造、プログラムモジュール、又はその他のデータを、搬送波又はその他の移送機構のような変調されたデータ信号で具体化する。通信媒体は任意の情報伝達媒体も含む。用語「変調データ信号」は、信号内の情報を符号化する方法によって設定又は変更されたその１つ以上の特性を有する信号を意味している。非限定の例として、通信媒体は、有線ネットワーク又は直接有線接続のような有線媒体、及び音響、ＲＦ、赤外線、及びその他のワイヤレス媒体のような無線媒体などを含む。上記のうち任意の組み合わせも計算機可読媒体の範囲内に含まれる。
【０１０９】
[00115]通常、本明細書に記載した機能又は技法のどれもソフトウェア、ファームウェア、ハードウェア（例えば固定論理回路）、手動処理、又はこれらの実装の組み合わせを利用し、実装され得る。本明細書に使用されている用語「モジュール」及び「コンポーネント」は通常、ソフトウェア、ファームウェア、ハードウェア、又はその組み合わせを表している。ソフトウェア実行の場合、モジュール、機能性、又はロジックは、プロセッサー（例えば、ＣＰＵ又は複数のＣＰＵ）上で実行されるとき、指定されたタスクを実行するプログラムコードを表している。プログラムコードは１つ以上の計算機可読記憶媒体にストアされ得、更に、それに関する図９を参照した説明が見出され得る。本明細書に記載されたソフトウェア拡張子解析技法の特性はプラットフォームに独立であって、本技法が、様々なプロセッサーを有する様々な商用計算プラットフォームにおいて実装され得ることを意味している。
【０１１０】
[00116]対象項目は、構造的機能及び／又は方法論的動作に対し特定の言語で記述されているが、添付の請求項に定義されている対象項目が、必ずしも前述した特定の機能又は動作に限定されるわけではないことを理解されよう。もっと具体的に言うと、前述した特定の機能及び動作は、本請求項の実装形式の例として開示されている。
【符号の説明】
【０１１１】
１００  計算装置の例
１０２  拡張子レジストリ情報仲介部
１０４  レジストリ情報ストア
１０６  オペレーティングシステム
１０８  消費者プログラム
１１０  供給者プログラム
１１２  構造化拡張子定義
２００  フォーマットの例
２０２  拡張性エレメント
２０４  カテゴリーエレメント
２０６  ルートエレメント
２０８  パラメーターエレメント
２１０  制約エレメント
２１２  使用エレメント
２１４  変化エレメント
２１６  マージルートエレメント
２１８  ドキュメンテーションエレメント
８００  トライ木の例
８０２  ルートレベルのノード
８０４  最初のレベルのノード
８０６  第２のレベルのノード
８０８  第３のレベルのノード
８１０  第４のレベルのノード
８２２  「ＨＫＬＭ￥ｓｏｆｔｗａｒｅ￥ｃｌａｓｓｅｓ」に関連付けられたカテゴリー
８２４  「ＨＫＬＭ￥ｓｏｆｔｗａｒｅ￥ｃｌａｓｓｅｓ￥ＣＬＳＩＤ」に関連付けられたカテゴリー
８２６  「ＨＫＬＭ￥ｓｏｆｔｗａｒｅ￥ｃｌａｓｓｅｓ￥ＡＰＰＩＤ」に関連付けられたカテゴリー
９００  計算装置の例
９０２  プロセッサー
９０４  計算機可読媒体
９０６  メモリー／ストレージ
９０８  Ｉ／Ｏ装置
９１０  バス
【図１】
2012529711.tif 000005
【図２】
2012529711.tif 000006
【図３】
2012529711.tif 000007
【図４】
2012529711.tif 000008
【図５】
2012529711.tif 000009
【図６】
2012529711.tif 000010
【図７】
2012529711.tif 000011
【図８】
2012529711.tif 000012
【図９】
2012529711.tif 000013
【国際調査報告】
2012529711.tif 000014
2012529711.tif 000015