(57)【要約】  計算装置にインストールされた複数のソフトウェアコンポーネントそれぞれに関する１つ以上の拡張子レジストリ情報が受信される。１つ以上の拡張子レジストリ情報が、ソフトウェアコンポーネントを機能性供給部として認識する。複数のソフトウェアコンポーネントそれぞれに関する１つ以上の拡張子レジストリ情報レコードが保持されている。特定の機能性を識別するリクエストが、計算装置にインストールされた別のソフトウェアコンポーネントから受信される。上記リクエストに応答して、特定の機能性を提供している複数のソフトウェアコンポーネント１つ以上に関する情報が、別のソフトウェアコンポーネントへ返される。【選択図】  図１
2012530972.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]拡張子供給部（１１４）及び拡張子消費部（１１２）は、拡張子レジストリ情報データベース（１０６）に格納された情報に対する直接アクセスを有していない。むしろ、拡張子供給部（１１４）及び拡張子消費部（１１２）が、拡張子管理モジュール（１０４）を介しデータベース（１０６）に格納されている情報にアクセスする。拡張子レジストリ情報データベース（１０６）は、テーブル、リスト、データベースレコード、又はデータベースエントリーなどを使用した様々な異なる方法で実装され得る。
【００２１】
[0028]更に、本明細書に論述した管理されたシステム拡張子機能が、複数の異なるタイプの拡張子を介した拡張子レジストリ情報及び拡張子発見に関する集中型で一般的なモデルを提供していることに留意されたい。拡張子管理モジュール（１０４）は、拡張子タイプにかかわらず、拡張子レジストリ情報にアクセスするための一般的なインターフェースを提供する。
【００２２】
[0029]図２は、１つ以上の実施形態によるソフトウェアコンポーネントの例（２００）を示している。ソフトウェアコンポーネントは、ソフトウェアコンポーネントを記述している１つ以上のファイル及びメタデータ双方の集まりである。ソフトウェアコンポーネント（２００）は、ソフトウェアコンポーネント（２００）に関する様々な命令及び／又はデータをそれぞれ格納している１つ以上のリソースファイル（２０２）を含む。ソフトウェアコンポーネント（２００）に含まれている特定のリソースファイル（２０２）は、ソフトウェアコンポーネント（２００）の開発者の所望に基づいて変更し得る。
【００２３】
[0030]宣言部（２０４）は、ソフトウェアコンポーネント（２００）を記述しているメタデータを格納している。１つ以上の実施形態において、宣言部（２０４）は、１つ以上のソフトウェアコンポーネント（２００）の識別子、ソフトウェアコンポーネント（２００）のバージョン番号、及びソフトウェアコンポーネント（２００）に関する１つ以上の拡張子レジストリ情報宣言（２０６）を含む。ソフトウェアコンポーネント（２００）の識別子によって、ソフトウェアコンポーネント（２００）は、機器にインストールされた別のソフトウェアコンポーネントの区別が可能になる。識別子は、ソフトウェアコンポーネント（２００）の開発者によって割り当てられた名前、ソフトウェアコンポーネント（２００）の開発者識別子、ソフトウェアコンポーネント（２００）の配布者識別子又は発行者識別子、ソフトウェアコンポーネント（２００）のバージョン番号などに基づいて様々な異なる方法で生成され得る。
【００２４】
[0031]ソフトウェアコンポーネント（２００）のバージョン番号は、ソフトウェアコンポーネント（２００）の異なるバージョンを容易に識別可能にする。１つ以上の実施形態において、２つの異なるバージョン番号である（世代バージョンとしても参照される）契約バージョン番号及びサービスバージョン番号は、宣言部（２０４）に含まれている。代替として契約バージョン番号及びサービスバージョン番号は、１つ以上のエレメントが契約バージョン番号であって、１つ以上のエレメントがサービスバージョン番号である複数のエレメント数へ一緒に結合され得る。
【００２５】
[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]１つ以上の実施形態において、様々な動作が拡張子管理モジュール（１０４）によって支援されていて、拡張子消費部（１１２）（及び／又は別のコンポーネント又はモジュール）が、拡張子レジストリ情報データベース（１０６）にアクセス可能になる。これらの動作はＡＰＩの方法で公開され得るか、又は代替として、これらの動作が実行されるように求めているリクエストが、別の方法でコントロールモジュール（１０４）に対し実行され得る。１つ以上の実施形態において、拡張子レジストリ情報をデータベース（１０６）へ追加及び／又はそこから除去する上記ＡＰＩも拡張子供給部（１１４）によって使用され得る。代替として拡張子レジストリ情報は、ＡＰＩを介するよりもむしろ別の宣言的方法でデータベース（１０６）へ追加され得る。以下の表Ｉは、拡張子レジストリ情報データベース（１０６）にアクセスするときに拡張子管理モジュール（１０４）によって支援される上記の動作例を説明している。
【００５０】
【表１】
2012530972.tif 000003
【００５１】
[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]対象項目は、構造的機能及び／又は方法論的動作に対し特定の言語で記述されているが、添付の請求項に定義されている対象項目が、必ずしも前述した特定の機能又は動作に限定されるわけではないことを理解されよう。もっと具体的に言うと、前述した特定の機能及び動作は、本請求項の実装形式の例として開示されている。
【符号の説明】
【０１０９】
１００        計算装置の例
１０２        オペレーティングシステム
１０４        拡張子管理モジュール
１０６        拡張子レジストリ情報データベース
１１２        拡張子消費部
１１４        拡張子供給部
２００        ソフトウェアコンポーネントの例
２０２        リソースファイル
２０４        宣言部
２０６（１）  拡張子レジストリ情報宣言
２０６（ｍ）  拡張子レジストリ情報宣言
２１２（１）  カテゴリー識別子
２１２（ｍ）  カテゴリー識別子
２１４（１）  拡張子メタデータ
２１４（ｍ）  拡張子メタデータ
２１６（１）  拡張子データ
２１６（ｍ）  拡張子データ
３００        拡張子レジストリ情報データベースの例
３０２（１）  拡張子レジストリ情報
３０２（ｘ）  拡張子レジストリ情報
３０４（１）  拡張子レジストリ情報
３０４（ｚ）  拡張子レジストリ情報
３１２        第１のカテゴリー
３１４        第２のカテゴリー
３２４（１）  拡張子メタデータ
３２４（ｘ）  拡張子メタデータ
３２６（１）  拡張子データ
３２６（ｘ）  拡張子データ
３３４（１）  拡張子メタデータ
３３４（ｚ）  拡張子メタデータ
３３６（１）  拡張子データ
３３６（ｚ）  拡張子データ
８００        レガシー管理システムの例
８０２        アダプター管理モジュール
８０４        アダプターモジュール
８１２        拡張子管理モジュール
８１４        コンポーネント管理モジュール
８２０        レガシーストア
８２２        レガシー拡張子レジストリ情報宣言
１０００        計算装置の例
１００２        演算処理装置
１００４        計算機可読媒体
１００６        ストレージコンポーネント
１００８        入力／出力（Ｉ／Ｏ）装置
１０１０        バス
【図１】
2012530972.tif 000004
【図２】
2012530972.tif 000005
【図３】
2012530972.tif 000006
【図４】
2012530972.tif 000007
【図５】
2012530972.tif 000008
【図６】
2012530972.tif 000009
【図７】
2012530972.tif 000010
【図８】
2012530972.tif 000011
【図９】
2012530972.tif 000012
【図１０】
2012530972.tif 000013
【国際調査報告】
2012530972.tif 000014
2012530972.tif 000015