JP2012530972A - 管理されたシステム拡張子機能 - Google Patents

管理されたシステム拡張子機能 Download PDF

Info

Publication number
JP2012530972A
JP2012530972A JP2012516325A JP2012516325A JP2012530972A JP 2012530972 A JP2012530972 A JP 2012530972A JP 2012516325 A JP2012516325 A JP 2012516325A JP 2012516325 A JP2012516325 A JP 2012516325A JP 2012530972 A JP2012530972 A JP 2012530972A
Authority
JP
Japan
Prior art keywords
extension
registry information
information
extension registry
software component
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2012516325A
Other languages
English (en)
Inventor
ストリツェル,アダム・ディー
キャンター,アドリアーン・ダブリュー
トラウト,エリック・ピー
シンハ,スヤシュ
アードガン,ターシン
ラジピュア,ダッタトラーヤ・ビー
シーハン,ジョン・エム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2012530972A publication Critical patent/JP2012530972A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory
    • G06F9/44563Sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

計算装置にインストールされた複数のソフトウェアコンポーネントそれぞれに関する1つ以上の拡張子レジストリ情報が受信される。1つ以上の拡張子レジストリ情報が、ソフトウェアコンポーネントを機能性供給部として認識する。複数のソフトウェアコンポーネントそれぞれに関する1つ以上の拡張子レジストリ情報レコードが保持されている。特定の機能性を識別するリクエストが、計算装置にインストールされた別のソフトウェアコンポーネントから受信される。上記リクエストに応答して、特定の機能性を提供している複数のソフトウェアコンポーネント1つ以上に関する情報が、別のソフトウェアコンポーネントへ返される。
【選択図】 図1

Description

本発明は、計算機システムに関し、具体的には、管理されたオペレーティングシステムレジストリに関する。
[0001]計算機は、典型的に、別のアプリケーションを計算機にインストールし、実行可能にすることを含む様々な機能性を提供するオペレーティングシステムを実行している。上記オペレーティングシステムは、多くの場合、アプリケーションが、アプリケーション登録の目的を果たす情報を格納し得る場所を提供していて、それが別のアプリケーションに一定の機能性を提供し、その結果、オペレーティングシステムの機能性を拡張している。この場所は、例えば、オペレーティングシステムレジストリであり得る。上記情報を保持することは、アプリケーションにとって有益であり得るが一方、今の格納機構には、それらの課題がないわけではない。
[0002]上記課題の1つは、異なるアプリケーションが、典型的に、同一の場所と対話することであって、あるアプリケーションによって格納された情報が、別のアプリケーションによって削除され、上書きされ、あるいは破壊される状況を発生させる。上記状況は、それらの意図した機能性の実行も提供もしないアプリケーションをもたらし得る。上記別の課題は、アプリケーションがアンインストールされたとき、それらが典型的に、その場所からそれらのアプリケーションの情報を削除する役割をしていることである。アプリケーションが、それらの情報を正しく削除しなかった場合、これらアプリケーションがアンインストールされてもその場所は、いくつかのアプリケーションが実行し利用可能なことを示している情報をいつでも格納し得、実際に実行し利用可能である。
本発明の目的は、複数のソフトウェアコンポーネントそれぞれに関する1つ以上の拡張子レジストリ情報を提供し、ソフトウェアコンポーネントを機能性の供給部として認識し、識別された拡張子レジストリ情報を提供することである。
[0003]この「課題を解決するための手段」は、更に「発明を実施するための形態」に後述される概念のいくつかを簡易形式で紹介するために提供される。この「課題を解決するための手段」は、請求項記載対象の主要因も本質的な特徴も特定することを意図されておらず、請求項記載対象の範囲を限定するために使用されることも意図されていない。
[0004]1つ以上の態様に従って、計算装置にインストールされた複数のソフトウェアコンポーネントそれぞれに関する1つ以上の拡張子(エクステンション)レジストリ情報が受信される。1つ以上の拡張子レジストリ情報が、ソフトウェアコンポーネントを機能性供給部として識別する。複数のソフトウェアコンポーネントそれぞれに関する1つ以上の拡張子レジストリ情報レコードが保持されている。特定の機能性を識別するリクエストが、計算装置にインストールされた別のソフトウェアコンポーネントから受信される。上記リクエストに応答して、特定の機能性を提供している複数のソフトウェアコンポーネントの1つ以上に関する情報が、別のソフトウェアコンポーネントへ返される。
[0005]1つ以上の態様に従って、新しい拡張子レジストリ情報が、拡張子管理モジュールから取得される。拡張子管理モジュールが拡張子レジストリ情報データベースに対するアクセスを管理していて、新しい拡張子レジストリ情報が拡張子管理モジュールと通信する拡張子供給部に対応している。新しい拡張子レジストリ情報に基づいて、拡張子情報がレガシーストアに任意に格納され得る。
[0006]同様の機能を参照するために、同一番号が図面内で使用されている。
[0007]1つ以上の実施形態による管理されたシステム拡張子機能を実装している計算装置の例を示している。 [0008]1つ以上の実施形態によるソフトウェアコンポーネントの例を示している。 [0009]1つ以上の実施形態による拡張子レジストリ情報データベースの例を示している。 [0010]1つ以上の実施形態による管理されたシステム拡張子機能を実装するためのプロセスの例を示す流れ図である。 [0011]1つ以上の実施形態による管理されたシステム拡張子機能を実装するためのプロセスの別の例を示す流れ図である。 [0012]1つ以上の実施形態による特定のファイル拡張子に関連付けられた拡張子供給部を識別する管理されたシステム拡張子機能を使用するためのプロセスの例を示す流れ図である。 [0013]1つ以上の実施形態によるダイナミックリンクライブラリー(DLL)の場所を取得する管理されたシステム拡張子機能を使用するためのプロセスの例を示す流れ図である。 [0014]1つ以上の実施形態によるレガシー管理システムの例を示している。 [0015]1つ以上の実施形態による管理されたシステム拡張子機能を用いたレガシー拡張子消費部を支援するためのプロセスの例を示す流れ図である。 [0016]1つ以上の実施形態による管理されたシステム拡張子機能を実装するように構成され得る計算装置の例を示している。
[0017]管理されたシステム拡張子機能が本明細書に論述される。オペレーティングシステムは、拡張子供給部と拡張子消費部との間の仲介者として作動する拡張子管理モジュールを含む。拡張子供給部は、拡張子供給部によって提供される機能性を記述している拡張子管理モジュール情報を与える情報を拡張子管理モジュールに登録している。拡張子消費部は、特定の機能性を提供する1つ以上の拡張子供給部を記述している情報を所望していて、拡張子管理モジュールに対し上記情報を求めるリクエストを生成する。上記リクエストに応答して拡張子管理モジュールは、拡張子供給部によって与えられる情報を検査し、リクエストされた機能性を提供する1つ以上の拡張子供給部を識別する。これら1つ以上の拡張子供給部に関する情報が、その後、リクエストしている拡張子消費部へ返される。
[0018]図1は、1つ以上の実施形態による管理されたシステム拡張子機能を実装している計算装置の例(100)を示している。計算装置(100)は、ソフトウェアアプリケーションを実行可能な様々な異なる機器であり得る。例えば、計算装置(100)は、デスクトップコンピューター、サーバーコンピューター、ラップトップコンピューター、通信移動局、娯楽電化製品、表示装置と通信可能に接続されるセットトップボックス、携帯電話、又はその他の無線電話、ゲーム端末、自動車用コンピューターなどであり得る。かくして計算装置(100)は、大容量メモリー及びプロセッサー資源を有する大きなリソース機器(例えば、パーソナルコンピューター、ゲーム端末)から限られたメモリー及び/又は処理資源を有する小さなリソース装置(例えば、従来のセットトップボックス、携帯用ゲーム端末)と多岐に渡り得る。
[0019]計算装置(100)は、拡張子管理モジュール(104)及び拡張子レジストリ情報データベース(106)を有するオペレーティングシステム(102)を含む。計算装置(100)は、拡張子消費部(112)及び拡張子供給部(114)も含む。拡張子消費部(112)それぞれがソフトウェアコンポーネントであって、拡張子供給部(114)それぞれがソフトウェアコンポーネントである。ソフトウェアコンポーネントは、様々な動作を実行していて、ソフトウェアアプリケーション又はソフトウェアプロダクトの一部として含まれている。同一のソフトウェアコンポーネントが、複数の上記アプリケーション又は製品によって共有され得る。1つ以上の拡張子消費部(112)及び/又は1つ以上の拡張子供給部(114)はオペレーティングシステム(102)から切り離されて例示されているが、それらは、代替としてオペレーティングシステム(102)のコンポーネント又はモジュールであり得る。
[0020]ソフトウェアコンポーネントそれぞれが、計算装置(100)上で実行され得る命令及びデータを含んでいて、1つ以上のソフトウェアコンポーネントが、ソフトウェア製品又はソフトウェアアプリケーションの機能性を提供する。オペレーティングシステム(102)はソフトウェア製品というよりもむしろ実行するとき、概して個々のソフトウェアコンポーネントと通信する。
[0021]拡張子供給部(114)それぞれが、拡張子消費部(112)によって使用され得る機能性を提供している。この機能性は、オペレーティングシステム(102)によって提供される機能性の追加又は代替であってかくして拡張子機能性として参照され得る。特定のソフトウェアコンポーネントが、あるタイプの機能性に関する拡張子消費部(112)であり得、別のタイプの機能性(又は同一タイプの機能性)に関する拡張子供給部(114)であり得ることに留意されたい。
[0022]拡張子供給部(114)は、様々な異なるタイプの機能性を提供し得る。拡張子管理モジュール(104)には、ソフトウェアコンポーネントが計算装置(100)にインストールされたとき、特定のソフトウェアコンポーネントによって提供される特定のタイプの機能性が通知される。拡張子管理モジュール(104)には、特定のソフトウェアコンポーネントによって提供されているが一方、そのソフトウェアコンポーネントが実行している更なる機能性も通知され得る。拡張子供給部(114)それぞれによって提供される特定タイプの機能性レコードが、拡張子レジストリ情報データベース(106)内の拡張子管理モジュール(104)によって保持されている。拡張子消費部(112)が、特定の機能性を提供しているソフトウェアコンポーネントに関する情報を所望しているとき、拡張子消費部(112)が、上記情報を求めるリクエストを拡張子管理モジュール(104)へ送信する。
[0023]例えば、複数の拡張子供給部(114)が、ジェイペグ(JPEG)形式で格納された画像ファイルを解釈し作動する機能性を提供していると仮定されたい。これらの拡張子供給部それぞれ(114)が計算装置(100)にインストールされたとき、拡張子供給部(114)がJPEG形式に格納された画像ファイルを解釈し作動する機能性を提供していることを、拡張子供給部が拡張子管理モジュール(104)へ通知する。これらの拡張子供給部(114)によって提供されるこの機能性レコードが、拡張子レジストリ情報データベース(106)に保持されている。次に拡張子消費部(112)が、JPEG形式に格納された画像ファイルを解釈し作動し得るソフトウェアコンポーネントの実行を所望していると仮定されたい。拡張子消費部(112)は、JPEG形式で格納された画像ファイルを解釈し作動し得る拡張子供給部(114)を識別する情報を求めるリクエストを拡張子管理モジュール(104)へ送信する。拡張子管理モジュール(104)は、JPEG形式で格納された画像ファイルを解釈し作動し得る拡張子供給部(114)を識別するために、拡張子レジストリ情報データベース(106)にアクセスし、JPEG形式で格納された画像ファイルを解釈し作動し得る拡張子供給部(114)の指標を拡張子消費部(112)へ返す。
[0024]通常、拡張子は、第2のソフトウェアコンポーネントによってアクセスされる拡張子レジストリ情報を介し、第2のソフトウェアコンポーネントの挙動に影響する第1のソフトウェアコンポーネントを参照している。この挙動は、例えば、第1のソフトウェアコンポーネントを呼び出し(例えば、従来のプラグインモジュールを呼び出し)、(例えば、ショートカット又はメニュー項目)情報などを表示することを含み得る。異なるタイプの機能性を提供している様々な異なるタイプの拡張子が、拡張子供給部(114)によって提供され得る。
[0025]上記異なるタイプの拡張子の例は、(例えば、特定のタイプのハンドルとしても参照される、ファイルを解釈し作動し得るソフトウェアコンポーネント)、言語パーサー(例えば、特定の言語及び/又は形式でファイルを分析できるソフトウェアコンポーネント)、スペルチェッカー(例えば、スペルチェックの機能性を提供するソフトウェアコンポーネント)、及びダイナミックリンクライブラリー(例えば、特定のダイナミックリンクライブラリー(DLL)を提供するソフトウェアコンポーネント)のファイルの関連付けを含む。上記異なるタイプの拡張子の更なる例は、ヘルプファイル(例えば、ヘルプ情報を提供するソフトウェアコンポーネント)、ローカライズファイル(例えば特定の言語又は領域にローカライズされるソフトウェアコンポーネント)、プラグアンドプレー(PnP)ドライバー(例えば、PnPドライバーを提供しているソフトウェアコンポーネント)、メニュー項目(例えば、ユーザーに表示するためにメニューに含まれる項目を提供するソフトウェアコンポーネント)、ショートカット項目(例えば、特定の画面上又は特定のウィンドウに表示されるショートカット又はリンクをユーザーに提供するソフトウェアコンポーネント)などを含む。拡張子タイプの例が本明細書に論述されているが、これらのタイプの例に限定されずに別の拡張子タイプを用いて管理されたシステム拡張子機能が使用され得ることを十分に理解されよう。
[0026]拡張子レジストリ情報データベース(106)は、拡張子供給部(114)によって生成される拡張子レジストリ情報宣言レコードである。拡張子管理モジュール(104)は、拡張子レジストリ情報データベース(106)を管理していて、必要に応じてデータベース(106)へ適宜拡張子レジストリ情報を追加し、そこから拡張子レジストリ情報を削除する。上記の追加及び削除は、別のコンポーネント又はモジュールからのリクエストに応答してモジュール(104)によって実行される。しばしば、コンポーネントをインストール(又はアンインストール)するインストーラコンポーネント又はモジュールは、拡張子レジストリ情報を追加及び削除することを求める上記リクエストを提供している。しかしながら上記リクエストは、拡張子供給部(114)のような別のコンポーネント又はモジュールからも受信され得る。
[0027]拡張子供給部(114)及び拡張子消費部(112)は、拡張子レジストリ情報データベース(106)に格納された情報に対する直接アクセスを有していない。むしろ、拡張子供給部(114)及び拡張子消費部(112)が、拡張子管理モジュール(104)を介しデータベース(106)に格納されている情報にアクセスする。拡張子レジストリ情報データベース(106)は、テーブル、リスト、データベースレコード、又はデータベースエントリーなどを使用した様々な異なる方法で実装され得る。
[0028]更に、本明細書に論述した管理されたシステム拡張子機能が、複数の異なるタイプの拡張子を介した拡張子レジストリ情報及び拡張子発見に関する集中型で一般的なモデルを提供していることに留意されたい。拡張子管理モジュール(104)は、拡張子タイプにかかわらず、拡張子レジストリ情報にアクセスするための一般的なインターフェースを提供する。
[0029]図2は、1つ以上の実施形態によるソフトウェアコンポーネントの例(200)を示している。ソフトウェアコンポーネントは、ソフトウェアコンポーネントを記述している1つ以上のファイル及びメタデータ双方の集まりである。ソフトウェアコンポーネント(200)は、ソフトウェアコンポーネント(200)に関する様々な命令及び/又はデータをそれぞれ格納している1つ以上のリソースファイル(202)を含む。ソフトウェアコンポーネント(200)に含まれている特定のリソースファイル(202)は、ソフトウェアコンポーネント(200)の開発者の所望に基づいて変更し得る。
[0030]宣言部(204)は、ソフトウェアコンポーネント(200)を記述しているメタデータを格納している。1つ以上の実施形態において、宣言部(204)は、1つ以上のソフトウェアコンポーネント(200)の識別子、ソフトウェアコンポーネント(200)のバージョン番号、及びソフトウェアコンポーネント(200)に関する1つ以上の拡張子レジストリ情報宣言(206)を含む。ソフトウェアコンポーネント(200)の識別子によって、ソフトウェアコンポーネント(200)は、機器にインストールされた別のソフトウェアコンポーネントの区別が可能になる。識別子は、ソフトウェアコンポーネント(200)の開発者によって割り当てられた名前、ソフトウェアコンポーネント(200)の開発者識別子、ソフトウェアコンポーネント(200)の配布者識別子又は発行者識別子、ソフトウェアコンポーネント(200)のバージョン番号などに基づいて様々な異なる方法で生成され得る。
[0031]ソフトウェアコンポーネント(200)のバージョン番号は、ソフトウェアコンポーネント(200)の異なるバージョンを容易に識別可能にする。1つ以上の実施形態において、2つの異なるバージョン番号である(世代バージョンとしても参照される)契約バージョン番号及びサービスバージョン番号は、宣言部(204)に含まれている。代替として契約バージョン番号及びサービスバージョン番号は、1つ以上のエレメントが契約バージョン番号であって、1つ以上のエレメントがサービスバージョン番号である複数のエレメント数へ一緒に結合され得る。
[0032]宣言部(204)に含まれている複数(m個)の拡張子レジストリ情報宣言(206)が例示されている。拡張子レジストリ情報宣言それぞれが、ソフトウェアコンポーネント(200)によって提供される特定の拡張子機能性を記述している。例えば、ある拡張子レジストリ情報宣言(206)が、第1のファイル関連付けを記述し得、別の拡張子レジストリ情報宣言(206)が、第2のファイル関連付けを記述し得、別の拡張子レジストリ情報宣言(206)が、スペルチェッカーを記述し得、更に別の拡張子レジストリ情報宣言がショートカット項目を記述し得る。複数の拡張子レジストリ情報宣言(206)が図2に例示されているが、代替として、宣言部(204)が、単一の拡張子レジストリ情報宣言を含み得るか又は拡張子レジストリ情報宣言でさえも含み得ない。
[0033]拡張子レジストリ情報宣言(206)それぞれは、カテゴリー識別子(212)、拡張子メタデータ(214)、及び拡張子データ(216)を含む。カテゴリー識別子(212)は、拡張子レジストリ情報宣言(206)に関連付けられたカテゴリーを識別する。拡張子タイプそれぞれは異なるカテゴリーに対応している。例えば、ファイル関連付けは1つのカテゴリーに対応していて、スペルチェッカーは別のカテゴリーなどに対応している。拡張子レジストリ情報宣言(206)によって記述されている拡張子タイプが、カテゴリー識別子(212)によって識別される。
[0034]カテゴリー識別子(212)は、様々な異なる文字、数、シンボル、別の文字などであり得る。1つ以上の実施形態において、カテゴリー識別子(212)は、拡張子消費部及び拡張子供給部双方に知られている文字列である。したがって、拡張子供給部は、特定の拡張子タイプを識別するための特定のカテゴリー識別子を使用し、拡張子消費部は、その特定のカテゴリー識別子を意識していることを知り得、その特定のカテゴリー識別子を使用し、その特定の拡張子タイプに関する情報をリクエストし得る。拡張子に関する情報のカテゴリー識別子に基づくこのリクエストが、より詳細に以下に論述される。
[0035]拡張子メタデータ(214)は、拡張子レジストリ情報宣言(206)を記述している情報を含む。様々な異なる情報がメタデータ(214)に含まれ得る。上記情報の例は、拡張子レジストリ情報宣言名を含んでいて、これによって拡張子レジストリ情報宣言が、別の拡張子レジストリ情報宣言、別の拡張子レジストリ情報宣言の識別子などと区別されることが可能になる。
[0036]拡張子データ(216)は、拡張子レジストリ情報宣言(206)に関する様々なデータを含む。含まれている特定のデータは拡張子タイプによって異なり、同様に同一タイプの拡張子によっても異なり得る。例えば、拡張子データ(216)は、拡張子レジストリ情報宣言が対応しているカテゴリーに関する(例えば、拡張子レジストリ情報宣言が「.jpg」ファイルに関するというファイル関連付け指標に関する)表示アイコン画像へのファイルパス、実行可能ファイルへのファイルパス、DLLへのファイルパス、ファイアウォールルール、情報などを含み得る。拡張子レジストリ情報宣言(206)に関する情報が、情報を求めるリクエストに応答して拡張子消費部へ返されるとき、拡張子データ(216)内のデータが拡張子消費部へ返される。
[0037]1つ以上の実施形態において、拡張子データ(216)のデータは1つ以上のレジストリ情報パラメーターを含む。レジストリ情報パラメーターそれぞれは、名前、タイプ、及び値を含む。レジストリ情報パラメーター名は、レジストリ情報パラメーターが、拡張子レジストリ情報宣言内の別のレジストリ情報パラメーターから区別され得るレジストリ情報パラメーター識別子である。レジストリ情報パラメータータイプが、レジストリ情報パラメーターに含まれているデータタイプを識別する。整数、浮動小数点、ブール値、文字列、日付、及び/又は時刻値、(例えばファイルパスによる)ファイル若しくはディレクトリ参照など、様々な異なる設定タイプが支援され得る。レジストリ情報パラメーターの値が、レジストリ情報パラメーターに関する特定の値である。
[0038]例えば、レジストリ情報パラメーターは名前「FileAssociationName」、タイプ「文字列」、値「.jpg」を有し得る。別の例として、レジストリ情報パラメーターは名前「ShortcutIcon」、タイプ「パス」、値「image.gif」を有し得る。
[0039]1つ以上の実施形態において、カテゴリー識別子それぞれに関するカテゴリー定義が定義される。カテゴリー識別子に関するカテゴリー定義が、そのカテゴリー識別子を有する拡張子レジストリ情報宣言に含まれている情報を記述している。(図1の拡張子管理モジュール(104)のような)拡張子管理モジュール又は他のコンポーネント若しくはモジュールは、任意に拡張子レジストリ情報を監視し得、拡張子レジストリ情報に関するリクエストに応答して、それらのカテゴリー識別子に関するカテゴリー定義に従ってそれらの拡張子レジストリ情報だけを返し得る。代替として、拡張子供給部及び拡張子消費部はカテゴリー定義に遵守していると信頼されていて、上記の順応検証が全く実行され得ない。
[0040]例として、カテゴリー定義は、名前、説明、2つ以上のパラメーター又は0以上の配列を含む形式を有し得る。カテゴリー名は、前述したカテゴリー識別子である。カテゴリー説明は、開発ツールが拡張子レジストリ情報宣言を書くときの開発者を支援可能なように意図されたカテゴリー説明である。パラメーター(例えば、前述したレジストリ情報パラメーター)それぞれが、拡張子レジストリ情報宣言に関するデータを説明している。パラメーターそれぞれは、パラメーター名、パラメーターによって支援されるデータタイプ、パラメーターに関する最小値、パラメーターに関する最大値、有効な拡張子レジストリ情報宣言にパラメーターが必要であるか否かに関する指標、及び利用者にとって分かりやすい、人間が読めるパラメーター説明のうち1つ以上を含み得る。配列それぞれは0個以上のパラメーターの集まりである。配列それぞれは、1つ以上の名前の配列、及び利用者にとって分かりやすい、人間が読める説明の配列を含み得る。このカテゴリー定義形式は例であって、この例に記載された更なる情報を含んでいて及び/又はいくつかの情報を含んでいない別の形式が使用され得ることを十分に理解されよう。
[0041]図1に戻ると、計算装置(100)上のソフトウェアコンポーネントを実行するためのソフトウェアコンポーネントが、計算装置(100)上にインストールされている。インストールプロセスは、典型的に、インストールコンポーネント又はモジュールによって実行され、典型的に、オペレーティングシステム(102)のファイルシステムの様々な場所にファイルを格納することと、ソフトウェアコンポーネントを説明している様々な情報などを様々なストアに格納することと、を含む。計算装置(100)にソフトウェアコンポーネントをインストールするプロセスの一部として、拡張子管理モジュール(104)は、ソフトウェアコンポーネントの宣言部に含まれている拡張子レジストリ情報宣言を知っている。
[0042]拡張子管理モジュール(104)は、様々な異なる方法でソフトウェアコンポーネントの宣言部に含まれている拡張子レジストリ情報宣言を知ることができる。1つ以上の実施形態において、宣言部(又は少なくとも拡張子レジストリ情報、宣言)はモジュール(104)にアクセス可能な場所に保持されている。したがって、モジュール(104)は、所望されたときに拡張子レジストリ情報宣言をリトリーブし得、拡張子レジストリ情報宣言を拡張子レジストリ情報データベース(106)へ追加し得る。代替として、モジュール(104)によって公開されているアプリケーションプログラミングインターフェース(API)のメソッドを呼び出すインストールコンポーネント又はモジュール、拡張子レジストリ情報宣言をモジュール(104)に渡すための別の動作又は技法を使用したインストールコンポーネント又はモジュールなど別の方法によってモジュール(104)は、拡張子レジストリ情報宣言を知ることができる。
[0043]図3は、1つ以上の実施形態による拡張子レジストリ情報データベースの例(300)を示している。拡張子レジストリ情報データベース(300)は、例えば、図1の拡張子レジストリ情報データベース(106)であり得る。拡張子レジストリ情報データベース(300)は、複数の拡張子レジストリ情報(302)及び(304)を含む。図3の例において、拡張子レジストリ情報はカテゴリーによって統合化されている。複数(x個)の拡張子レジストリ情報(302)が第1のカテゴリー(312)に含まれていて、例えば、複数(z個)の拡張子レジストリ情報(304)が第2のカテゴリー(314)に含まれている。複数(y個)のカテゴリーが拡張子レジストリ情報データベース(300)に含まれ得る。ソフトウェアコンポーネントの宣言部(例えば図2の宣言部(204))から拡張子レジストリ情報宣言が、拡張子管理モジュール(例えば、図1のモジュール(104))によって取得され、拡張子レジストリ情報として拡張子レジストリ情報データベース(300)へ追加される。例えば、ソフトウェアコンポーネントの宣言部における拡張子レジストリ情報宣言の情報が、拡張子レジストリ情報データベースの拡張子レジストリ情報に複製され得る。
[0044]図3の例において、拡張子レジストリ情報(302)、(304)は、カテゴリーによって統合化されている。カテゴリーそれぞれは、カテゴリー識別子(例えば、図2に関するカテゴリー識別子(212))に対応している。(図1のモジュール(104)のような)拡張子管理モジュールが、拡張子レジストリ情報をデータベース(300)へ追加したとき、拡張子管理モジュールが、追加される拡張子レジストリ情報に関するカテゴリー識別子を取得する。カテゴリー(312)、(314)が既にそのカテゴリー識別子に関するデータベース(300)に存在している場合、拡張子レジストリ情報がそのカテゴリーへ追加される。しかしながら、上記カテゴリーがまだデータベース(300)に存在していない場合、そのカテゴリー識別子に関する新しいカテゴリーがデータベース(300)に生成される。
[0045]拡張子レジストリ情報(302)それぞれが拡張子メタデータ(324)及び拡張子データ(326)を含んでいる。同様に、拡張子レジストリ情報(304)それぞれが拡張子メタデータ(334)及び拡張子データ(336)を含んでいる。拡張子メタデータ(324)及び(334)は、図2の拡張子メタデータ(214)に類似している。拡張子データ(326)及び(336)は図2の拡張子データ(216)に類似している。したがって、拡張子管理モジュールが、拡張子レジストリ情報をデータベース(300)へ追加したとき、ソフトウェアコンポーネントの宣言部(例えば、図2の宣言部(204))の拡張子レジストリ情報宣言から取得された拡張子メタデータ及び拡張子データ双方が、データベース(300)内の拡張子レジストリ情報に複製され得る。拡張子メタデータ(214)に含まれている拡張子レジストリ情報宣言名又は識別子が、拡張子メタデータ(324)又は(334)内の拡張子レジストリ情報名又は識別子になる。拡張子レジストリ情報名又は識別子によって拡張子レジストリ情報が、データベース(300)内の他の拡張子レジストリ情報から区別可能になる。
[0046]拡張子レジストリ情報がデータベース(300)に統合化されているので、宣言部における拡張子レジストリ情報宣言から取得されたカテゴリー識別子が、カテゴリーによるデータベース(300)内の拡張子レジストリ情報に保持されている必要がないことに留意されたい。代替として、拡張子レジストリ情報(302)、(304)は、ソフトウェアコンポーネントの宣言部における拡張子レジストリ情報宣言から複製されたカテゴリー識別子を含み得る。データベース(300)内の拡張子レジストリ情報がカテゴリー識別子を含んでいる状況においては、データベース(300)がカテゴリーによって統合化されている必要はないが、代替として、データベース(300)が、データベース(300)内の拡張子レジストリ情報にまだ含まれているカテゴリー識別子を用いたカテゴリーによって統合化され得る。
[0047]加えると、拡張子レジストリ情報がデータベース(300)へ追加されたとき、その拡張子レジストリ情報に対応しているソフトウェアコンポーネント(例えば、その拡張子レジストリ情報に関する拡張子レジストリ情報宣言を含むソフトウェアコンポーネント)の指標が保持されている。この指標は、拡張子レジストリ情報が対応しているソフトウェアコンポーネント識別子を拡張子メタデータへ追加すること、どのソフトウェアコンポーネントがどの拡張子レジストリ情報に対応しているかそれに関する別個のリスト又はレコードを保持すること、異なるソフトウェアコンポーネントに関する拡張子レジストリ情報を別の場所に格納することなど、様々な異なる方法で保持され得る。
[0048]図1に戻ると、拡張子消費部(112)が拡張子レジストリ情報データベース(106)内の拡張子レジストリ情報に関する情報を所望したとき、拡張子消費部(112)は、情報を求めるリクエストを拡張子管理モジュール(104)へ送信する。このリクエストは、例えば、拡張子消費部(112)によって所望されているカテゴリーの指標(拡張子タイプ)を含んでいる。このリクエストは、カテゴリーに関する付加情報も含み得る(例えば、ファイルの関連付けに関すると「.jpg」ファイルに対する拡張子レジストリ情報に関連する情報がリクエストされているという指標をリクエストが含み得る)。
[0049]1つ以上の実施形態において、ソフトウェアコンポーネントの複数の異なるバージョンが計算装置(100)にインストールされ得る。前述したソフトウェアコンポーネントは、異なる2つのバージョン番号である契約バージョン番号及びサービスバージョン番号を有し得る。オペレーティングシステム(102)は、同一のソフトウェアコンポーネント識別子であるがしかし、異なるソフトウェアコンポーネントとして異なる契約バージョン番号を有するソフトウェアコンポーネントを識別し得る。したがって、異なる契約バージョン番号を有する異なる2つのソフトウェアコンポーネントが計算装置(100)に同時にインストールされ得る。これらの2つの異なるソフトウェアコンポーネントそれぞれが拡張子供給部(114)であり得、拡張子レジストリ情報データベース(106)に含まれる拡張子レジストリ情報を有し得る。
[0050]しかしながら、オペレーティングシステム(102)は、たとえサービスバージョン番号が異なっていても同一のソフトウェアコンポーネントである同一のソフトウェアコンポーネント識別子及び契約バージョン番号を有するソフトウェアコンポーネントを識別し得る。上記2つのソフトウェアコンポーネントバージョンは、計算装置(100)上に同時にインストールされ得るが、ソフトウェアコンポーネントの1つは、アクティブソフトウェアコンポーネントとして選択される。これらの2つのソフトウェアコンポーネントバージョンは、拡張子供給部(114)であり得、アクティブソフトウェアコンポーネントは、拡張子レジストリ情報データベース(106)内に含まれている拡張子レジストリ情報を有し得る。別の非アクティブソフトウェアコンポーネントは、拡張子レジストリ情報データベース(106)に含まれている拡張子レジストリ情報を有していない。拡張子供給部(114)であるソフトウェアコンポーネントの新しいバージョンが、計算装置(100)にインストールされたとき、ソフトウェアコンポーネントの旧バージョンの拡張子レジストリ情報が拡張子レジストリ情報データベース(106)から除去され、ソフトウェアコンポーネントの新しいバージョンの拡張子レジストリ情報が拡張子レジストリ情報データベース(106)へ追加される。
[0051]ソフトウェアコンポーネント宣言部内の拡張子レジストリ情報宣言から取得された拡張子レジストリ情報は、静的拡張子レジストリ情報としても参照され得る。加えると、拡張子管理モジュール(104)は、動的拡張子レジストリ情報も支援し得る。動的拡張子レジストリ情報は、計算装置(100)上にインストールされた後にソフトウェアコンポーネントによって実行される拡張子レジストリ情報である。レジストリ情報は、ユーザーリクエストに応答するか又は代替としてソフトウェアコンポーネント従った設定若しくはルールに対応して、又は別のコンポーネント若しくはモジュールからのリクエストに応答して、実行され得る。
[0052]動的拡張子レジストリ情報は、拡張子レジストリ情報を拡張子レジストリ情報データベース(106)へ追加するためのリクエストをサブミットするソフトウェアコンポーネント(典型的に、拡張子供給部(114))によって実行される。リクエストは、前述された宣言部における拡張子レジストリ情報宣言に類似していて、対応するソフトウェアコンポーネントに関する識別子及びカテゴリー識別子双方を含む拡張子レジストリ情報に関するメタデータ及びデータを含んでいる。拡張子管理モジュール(104)は、モジュール(104)が静的拡張子レジストリ情報をデータベース(106)へ追加する同一の方法によってリクエストを受信し、拡張子レジストリ情報データベース(106)へ拡張子レジストリ情報を追加する。
[0053]例として、特定の拡張子供給部(114)は、JPEG形式及びTagged Image File Format(TIFF)形式双方の画像ファイルを解釈し作動し得る。しかしながら、拡張子供給部(114)に関するデフォルト設定は、JPEG形式の画像に関する機能性だけを提供することであり得る。したがって、静的拡張子レジストリ情報は、拡張子供給部(114)を計算装置(100)にインストールしたとき、JPEG形式へのファイル関連付けを示している静的拡張子レジストリ情報が実行される。JPEG形式のファイルを解釈し作動する機能性を提供する拡張子レジストリ情報に関する情報を求める次のリクエストは、拡張子供給部(114)に関する情報を返すが、TIFF形式のファイルを解釈し作動するための機能性を提供する拡張子レジストリ情報に関する情報を求めるリクエストは、拡張子供給部(114)に関する情報を返しない。
[0054]この例を続けると、拡張子供給部(114)のユーザーが、拡張子供給部(114)にもTIFF形式の画像を作動させるリクエストを後で入力することを仮定されたい。拡張子供給部(114)が、拡張子管理モジュール(104)に対するリクエストを実行し、拡張子レジストリ情報を拡張子レジストリ情報データベース(106)へ追加する。データベース(106)へ追加されるこの拡張子レジストリ情報は、TIFF形式への拡張子供給部(114)のファイル関連付けを示している。したがって、JPEG形式又はTIFF形式のファイルを解釈し作動するための機能性を提供する拡張子レジストリ情報に関する情報を求める次のリクエストが、拡張子供給部(114)に関連する情報を返す。
[0055]拡張子レジストリ情報を拡張子レジストリ情報データベース(106)へ追加する拡張子管理モジュール(104)に加えて、モジュール(104)もデータベース(106)から拡張子レジストリ情報を除去又は削除し得る。拡張の削除又は除去は、典型的に、ソフトウェアコンポーネントが計算装置(100)からアンインストールされているとき、コンポーネント又はモジュールによるリクエストに応答して(例えば、アンインストーラーコンポーネントによって)実行される。ソフトウェアコンポーネントをアンインストールしたとき、拡張子管理モジュール(104)は、そのソフトウェアコンポーネントに対応している拡張子レジストリ情報をデータベース(106)から削除する。拡張子レジストリ情報それぞれが対応しているソフトウェアコンポーネントを示す情報は、前述した様々な異なる方法で保持され得る。したがって、拡張子管理モジュール(104)は、ソフトウェアコンポーネントが計算装置(100)からアンインストールされたとき、ソフトウェアコンポーネントに対応している拡張子レジストリ情報が、データベース(106)から除去されることを確実にする支援をし得る。モジュール(104)は、そのソフトウェアコンポーネントに対応している拡張子レジストリ情報を計算装置(100)から除去するソフトウェアコンポーネント自体(又はそのソフトウェアコンポーネントに関連付けられたアンインストーラーコンポーネント)を頼りにする必要はない。
[0056]1つ以上の実施形態において、様々な動作が拡張子管理モジュール(104)によって支援されていて、拡張子消費部(112)(及び/又は別のコンポーネント又はモジュール)が、拡張子レジストリ情報データベース(106)にアクセス可能になる。これらの動作はAPIの方法で公開され得るか、又は代替として、これらの動作が実行されるように求めているリクエストが、別の方法でコントロールモジュール(104)に対し実行され得る。1つ以上の実施形態において、拡張子レジストリ情報をデータベース(106)へ追加及び/又はそこから除去する上記APIも拡張子供給部(114)によって使用され得る。代替として拡張子レジストリ情報は、APIを介するよりもむしろ別の宣言的方法でデータベース(106)へ追加され得る。以下の表Iは、拡張子レジストリ情報データベース(106)にアクセスするときに拡張子管理モジュール(104)によって支援される上記の動作例を説明している。
Figure 2012530972
[0057]表Iは、カテゴリーに関する変更番号への参照を含む。1つ以上の実施形態において、拡張子管理モジュール(104)は、拡張子レジストリ情報データベース(106)内のカテゴリーそれぞれに関して異なる変更番号を保持している。拡張子レジストリ情報が拡張子レジストリ情報データベース(106)へ追加されるか又はそこから除去されるたびに、モジュール(104)がこの変更番号を修正する(例えば増やす)。呼び出し側は、異なる方法でこの変更番号を使用し得る。例えば、拡張子消費部(112)は、拡張子管理モジュール(104)からカテゴリーに関する変更番号を取得し得る。変更番号が、拡張子消費部(112)が取得した以前の変更番号と同一である場合、拡張子消費部は、拡張子消費部(112)が変更番号を最後に取得してからカテゴリーに何も変更が実行されていないことを知る。しかしながら、変更番号が、以前の変更番号と同一でない場合、拡張子消費部(112)は、拡張子消費部(112)が変更番号を最後に取得してから拡張子レジストリ情報がカテゴリーへ追加され、及び/又はそこから除去されていることを知る。
[0058]代替として、カテゴリーに関する変更番号を使用するというよりもむしろ、呼び出し側(例えば、拡張子消費部(112))は、拡張子レジストリ情報が、いつ別の方法でカテゴリーへ追加され及び/又はそこから除去されたか決定し得る。例えば、タイムスタンプがカテゴリーと関連付けられ得る。このタイムスタンプは、拡張子レジストリ情報がカテゴリーへ追加され、及び/又はそこから除去されるたびに更新される。呼び出し側は、このタイムスタンプを取得し得、拡張子消費部が最後にタイムスタンプを取得してからカテゴリーに変更が実行されたか否か決定し得る−タイムスタンプが同一である場合、カテゴリーにどんな変更も実行されていないがしかし、タイムスタンプが異なっている場合、カテゴリーに変更が実行されている。
[0059]かくして、様々な異なるタイプの拡張子機能は、拡張子レジストリ情報データベース(106)に格納されている拡張子レジストリ情報とともに拡張子供給部(114)によって提供され得ることが理解され得る。計算装置(100)上で利用可能な異なる拡張子機能は、(データベース(106)に格納されている拡張子レジストリ情報に順次アクセスする)拡張子管理モジュール(104)を介し、拡張子消費部(112)によって容易に識別され得る。
[0060]拡張子管理モジュール(104)が中央の権限として作動し、それを介し拡張子供給部(114)が、それらが提供する拡張子機能を登録し得、それを介し拡張子消費部(112)が、複数の拡張子供給部(114)によって提供される拡張子機能にアクセスし得ることも理解され得る。拡張子消費部(112)が、拡張子供給部(114)が修正可能な特定の場所(例えば、特定のファイル、レジストリ情報などの特定の部分)を提供しているというよりもむしろ、消費部(112)及び供給部(114)双方がモジュール(104)と対話する。拡張子供給部(114)が計算装置(100)からアンインストールされた場合、この集中型の権限によって、モジュール(104)は、例えば、計算装置(100)上にインストールされた様々な拡張子供給部(114)に関する知識を保持可能になり、拡張子レジストリ情報を容易に除去可能にする。この集中型権限によって、供給部(114)及び消費部(112)は、異なる順番かつ異なる時間に、インストールしアンインストールされることも可能になり、供給部(114)及び消費部(112)のインストールもアンインストールの順番に関するどんな制約もモジュール(104)によって強制される必要がない。
[0061]本明細書に論述した管理されたシステム拡張子機能が、様々な異なるシステム拡張子機能のシナリオを提供することを十分に理解されよう。例えば、拡張子消費部(112)は、オペレーティングシステム(102)に関するユーザーインターフェースを計算装置(100)のユーザーへ表示するオペレーティングシステムシェルプログラム又はモジュールであり得る。ユーザーによって実行され得る異なるソフトウェアコンポーネントが、拡張子供給部(114)として含まれ得る。拡張子供給部それぞれは、ユーザーインターフェース上にショートカットとして表示されるアイコンへのパス又は場所、ユーザーインターフェースのメニューエントリーなどを識別するレジストリ情報パラメーターを持った1つ以上の拡張子レジストリ情報を有し得る。加えると、1つ以上の拡張子レジストリ情報は、対応するソフトウェアコンポーネントに関する実行可能なファイルが格納されている場所へのパスを識別するレジストリ情報パラメーターを含み得る。上記ユーザーのアイコン又はメニューエントリーの選択に応答して、対応するソフトウェアコンポーネントに関する実行可能ファイルへのパスが容易に識別され得、実行可能ファイルが実行する。
[0062]図4は、1つ以上の実施形態による管理されたシステム拡張子機能を実装するためのプロセスの例(400)を示す流れ図である。プロセス(400)は、ソフトウェア、ファームウェア、ハードウェア、又はその組み合わせで実装され得る図1の拡張子管理モジュール(104)のような、機器上で実行しているオペレーティングシステムの拡張子管理モジュールによって実行される。プロセス(400)は、管理されたシステム拡張子機能を実装するためのプロセスの例であって、異なる図面を参照した管理されたシステム拡張子機能を実装する更なる論述が本明細書に含まれている。
[0063]プロセス(400)において、複数のソフトウェアコンポーネントそれぞれに関する1つ以上の拡張子レジストリ情報が受信される(動作402)。前述したこれら複数のソフトウェアコンポーネントは、拡張子供給部としても参照される。前述したこれらの拡張子レジストリ情報が、拡張子レジストリ情報宣言としてソフトウェアコンポーネント宣言部から受信され得る。これらの拡張子レジストリ情報も、呼び出される拡張子管理モジュールAPIを介した拡張子レジストリ情報宣言の宣言部又は他の宣言にアクセスする拡張子管理モジュールなどによる前述した異なる方法で受信され得る。
[0064]受信された拡張子レジストリ情報レコードが保持される(動作404)。このレコードは、図1のデータベース(106)又は図3のデータベース(300)など前述した拡張子レジストリ情報データベースである。前述した拡張子レジストリ情報は、何度も拡張子レジストリ情報データベースへ追加され得及び/又はそれから削除され得る。
[0065]加えると、リクエストが、特定の機能性を提供する複数のソフトウェアコンポーネント情報に関するソフトウェアコンポーネントから受信される(動作406)。これらのリクエストは、特定の機能性を識別する。前述したこれらのソフトウェアコンポーネントから受信されるリクエストは、拡張子消費部としても参照される。リクエストは、拡張子レジストリ情報が動作(402)で受信されたソフトウェアコンポーネントから及び/又は別のソフトウェアコンポーネントから受信され得る。リクエストされた情報は、前述されたレジストリ情報動作の列挙を実行するためにレジストリ情報列挙リクエストをサブミットするなど、様々な異なる方法でリクエストされ得る。例えば、上記いくつかの例に従って、動作(406)で受信されるリクエストは、JPEG形式で格納された画像ファイルを解釈し作動し得る拡張子供給部(114)を識別する情報を求めるリクエストであり得る。
[0066]上記リクエストに応答して、特定の機能性を提供する複数のソフトウェアコンポーネントに関する情報が、呼び出し側に返される(動作408)。返される情報が、受信した拡張子レジストリ情報の保持されているレコードから拡張子管理モジュールによって取得される。動作(408)で呼び出し側に返される情報は変化し得る。1つ以上の実施形態において、返される情報は、リクエストされた特定の機能性を提供する拡張子レジストリ情報である。別の実施形態において、返される情報は、リクエストされた特定の機能性を提供する拡張子レジストリ情報に対応している1つ以上のオブジェクト又はハンドルであって、これら1つ以上のオブジェクト又はハンドルが、後で呼び出し側によって使用され得、拡張子レジストリ情報からデータ又はメタデータを(後で拡張子管理モジュールへのリクエストを介し)リトリーブする。
[0067]1つ以上の実施形態において、動作(406)で受信されるリクエストが、カテゴリー識別子をリクエストに含めることによって特定の機能性を識別する。上記リクエストに対応して、識別された拡張子レジストリ情報データベースのカテゴリー内の(又はカテゴリー識別子を有する)拡張子レジストリ情報すべてに関する情報が、動作(408)において返される。例えば、リクエストは、ショートカット項目に関するカテゴリー識別子を含み得、ショートカット項目すべてに関する情報に応答して、拡張子レジストリ情報データベース内の拡張子レジストリ情報が、動作(408)において返される
[0068]別の実施形態において、動作(406)で受信されたリクエストは、1つ以上のレジストリ情報パラメーター名及び対応している値の指標を含む(及び任意としてカテゴリー識別子を含む)ことによって特定の機能性を識別する。上記リクエストに応答して、動作(408)において、識別された1つ以上のレジストリ情報パラメーター名及び対応している値を有している拡張子レジストリ情報すべてに関する情報が(カテゴリー識別子がリクエストに含まれていて、識別されたカテゴリーにも存在しているか又はカテゴリー識別子を有している場合)返される。例えば、リクエストは、ファイル関連付けに関するカテゴリー識別子、レジストリ情報パラメーター名、及びファイル関連付け「.jpg」の名前の値を含み得る。動作(408)において、上記リクエストに応答して、拡張子レジストリ情報データベース内のレジストリ情報パラメーター名及びファイル関連付け「jpg」の名前の値を有するファイル関連付け拡張子レジストリ情報すべてに関する情報が、返される。
[0069]図5は、1つ以上の実施形態による管理されたシステム拡張子機能を実装するためのプロセスの例(500)を示す流れ図である。プロセス(500)は、ソフトウェア、ファームウェア、ハードウェア、又はその組み合わせによって実装され得る図1の拡張子管理モジュール(104)のような、装置上で実行しているオペレーティングシステムの拡張子管理モジュールによって実行される。プロセス(500)は、管理されたシステム拡張子機能を実装するためのプロセスの例であって、異なる図面を参照した管理されたシステムの拡張子機能を実装する更なる論述が本明細書に含まれている。
[0070]プロセス(500)において、拡張子レジストリ情報に関するリクエストが受信される(動作502)。これらのリクエストは、前述した宣言部又は拡張子管理モジュールのAPIを介し呼び出される拡張子レジストリ情報宣言の別の宣言にアクセスする拡張子管理モジュールなど、異なる方法で受信され得る。
[0071]受信されたリクエストのタイプが識別される(動作504)。様々な異なるタイプのリクエストが受信され得る。1つ以上の実施形態において、受信され得るリクエストのタイプは、追加リクエスト、削除リクエスト、及び情報リクエストを含む。
[0072]追加リクエストは、ソフトウェアコンポーネントがプロセス(500)を実装している計算装置にインストールされたとき、又はソフトウェアコンポーネントが拡張子レジストリ情報を動的に登録したときなど、異なるタイミングで受信され得る。追加リクエストに応答して、リクエストに関する拡張子レジストリ情報の内容が取得される(動作506)。拡張子レジストリ情報の内容は、拡張子レジストリ情報データベースへ追加される拡張子レジストリ情報に関するデータ及びメタデータを参照している。拡張子レジストリ情報の内容が、リクエストの一部として受信され得るか、又は代替として、拡張子レジストリ情報の内容を含む宣言部又は別の宣言などにアクセスする別の方法で取得され得る。
[0073]拡張子レジストリ情報の内容に関するカテゴリーが識別される(動作508)。このカテゴリー識別子は、前述した拡張子レジストリ情報の内容に含まれている。
[0074]拡張子レジストリ情報の内容が、識別されたカテゴリー配下の拡張子レジストリ情報として拡張子レジストリ情報データベースへ追加される(動作510)。代替として、拡張子レジストリ情報データベースが、カテゴリーによって統合化されていない場合、カテゴリー識別子を含む拡張子レジストリ情報の内容が、拡張子レジストリ情報データベースへ追加される。前述した(動作510)の拡張子レジストリ情報の内容の追加の一部として、拡張子レジストリ情報に関するカテゴリーの変更番号が更新され得る。加えると、リクエストされた拡張子レジストリ情報データベースへの変更通知を有する別のコンポーネント又はモジュールにも前述したこの追加された拡張子レジストリ情報が通知され得る。プロセス(500)は、その後、拡張子レジストリ情報に関する更なるリクエストを受信するための(動作502)へ進む。
[0075]動作(504)に戻ると、削除リクエストは、ソフトウェアコンポーネントがプロセス(500)を実装している計算装置からアンインストールされたときなど、異なるタイミングで受信され得る。削除リクエストに応答して、拡張子レジストリ情報データベースから削除される1つ以上の拡張子レジストリ情報が決定される(動作512)。削除される拡張子レジストリ情報は異なる方法で決定され得る。例えば、削除リクエストは、削除される特定の拡張子レジストリ情報を識別するレジストリ情報名を含み得る。別の例として、削除される特定の拡張子レジストリ情報を識別する宣言部又は別の宣言がアクセスされ得る。更に別の例として、削除リクエストは、アンインストールされるソフトウェアコンポーネントの指標を含み得る。拡張子レジストリ情報データベースが、削除される特定の拡張子レジストリ情報、ソフトウェアコンポーネントに対応する拡張子レジストリ情報として識別するために検索され得る。拡張子レジストリ情報それぞれが対応しているソフトウェアコンポーネント示している情報は、前述した様々な異なる方法で保持され得る。
[0076]動作(512)で決定された1つ以上の拡張子レジストリ情報が、拡張子レジストリ情報データベースから削除される(動作514)。前述した動作(514)の拡張子レジストリ情報の削除の一部として、拡張子レジストリ情報に関するカテゴリーの変更番号が更新され得る。加えると、前述した拡張子レジストリ情報データベースへの変更通知をリクエストしている別のコンポーネント又はモジュールにもこの削除された拡張子レジストリ情報が通知され得る。プロセス(500)は、その後、拡張子レジストリ情報に関する更なるリクエストを受信するための動作(502)へ進む。
[0077]動作(504)に戻ると、情報リクエストは、拡張子消費部が、特定の機能性を提供する拡張子供給部を識別することを所望しているときなど、異なる時間に受信され得る。情報のリクエストに応答して、拡張子管理モジュールは、リクエストに応答する1つ以上の拡張子レジストリ情報を識別する(動作516)。リクエストに応答する1つ以上の拡張子レジストリ情報は、特定のリクエストに基づく異なる方法で識別され得る。リクエストは、例えば、特定のカテゴリー識別子、特定の拡張子レジストリ情報、特定のレジストリ情報パラメーターなど、を指定し得る。動作(516)において、リクエストに含まれているパラメーターを満たす拡張子レジストリ情報データベース内の1つ以上の拡張子レジストリ情報が識別される。
[0078]動作(516)で識別された1つ以上の拡張子レジストリ情報が、拡張子レジストリ情報データベースからリトリーブされる(動作518)。リトリーブされた1つ以上の拡張子レジストリ情報に関する情報が、リクエスターへ返される(動作520)。動作(520)で返される情報は変化し得る。1つ以上の実施形態において、返される情報は、動作(518)でリトリーブされた1つ以上の拡張子レジストリ情報か、又は動作(518)でリトリーブした1つ以上の拡張子レジストリ情報から特にリクエストされたデータ又はメタデータである。別の実施形態において、動作(518)でリトリーブされた1つ以上の拡張子レジストリ情報に対応している1つ以上のオブジェクト及びハンドルのような別の情報が返され、これら1つ以上のオブジェクト又はハンドルが(後で情報リクエストを介し)拡張子レジストリ情報からデータ又はメタデータをリトリーブするために、後でリクエスターによって使用され得る。プロセス(500)は、その後、拡張子レジストリ情報に関する更なるリクエストを受信するための動作(502)へ続く。
[0079]図6は、1つ以上の実施形態による特定のファイル拡張子に関連付けられている拡張子供給部を識別する管理されたシステム拡張子機能を使用するためのプロセスの例(600)を示す流れ図である。プロセス(600)は、ソフトウェア、ファームウェア、ハードウェア、又はその組み合わせで実装され得る図1の拡張子管理モジュール(104)のような、機器上で実行しているオペレーティングシステムの拡張子管理モジュールによって実行される。プロセス(600)は、管理されたシステム拡張子機能を使用するためのプロセスの例であって、異なる図面を参照した管理されたシステム拡張子機能を使用する更なる論述が、本明細書に含まれている。
[0080]プロセス(600)において、特定のファイル拡張子に関連付けられた拡張子供給部を求めるリクエストが受信される(動作602)。動作(602)で受信されたリクエストは(例えば、レジストリ情報パラメーターとして)特定のファイル拡張子、「.jpg」拡張子、「.gif」、「.mp3」拡張子などを指定している。リクエストは、典型的に、プロセス(600)を実装している機器上のオペレーティングシステムのコンポーネント又はモジュールである拡張子消費部から受信されるが、代替としてリクエストが別のコンポーネント及びモジュールから受信され得る。
[0081]リクエストに応答して、拡張子レジストリ情報データベースがアクセスされる(動作604)。拡張子レジストリ情報データベースは、ファイル関連付け拡張子カテゴリーを含む。拡張子レジストリ情報データベースが、カテゴリーによって統合化され得、及び/又は拡張子レジストリ情報それぞれが、前述したカテゴリー識別子を含み得る。
[0082]動作(602)で受信したリクエストに応答する、拡張子レジストリ情報データベース内の1つ以上の拡張子レジストリ情報が識別される(動作606)。拡張子レジストリ情報データベースのファイル関連付けに関する拡張子レジストリ情報それぞれが、(例えばレジストリ情報パラメーターとして)ファイル拡張子の識別子を含む。動作(602)で受信したリクエストに指定されたファイル拡張子を含む拡張子レジストリ情報それぞれが、動作(606)において識別される。
[0083]動作(606)で識別されたレジストリ情報に関連付けられた1つ以上の拡張子供給部を識別する情報が、リクエスターへ返される(動作608)。動作(606)において、この(例えば、拡張子データ及び/又はメタデータ)情報が、1つ以上の拡張子レジストリ情報から取得される。この情報は、例えば、1つ以上の拡張子供給部の識別又は記述、1つ以上の拡張子供給部を実行する実行可能ファイルへのファイルパスなど、を含み得る。リクエスターは、その後、(例えば、動作(602)のリクエストにおいて識別された特定のファイル拡張子を有するファイルに対し実行され得、解釈し作動する拡張子供給部へのファイルパスを識別する)所望に応じてこの情報を使用し得る。
[0084]加えると、前述した拡張子の一タイプがDLLである。特定のDLL(複数)を識別する拡張子レジストリ情報が、拡張子レジストリ情報データベースに含まれ得る。上記拡張子レジストリ情報それぞれは、典型的に、対応するソフトウェアコンポーネントの識別子と、DLLが格納されているオペレーティングシステムのファイルシステム内の場所を識別するデータと、を含む。
[0085]図7は、1つ以上の実施形態によるDLLの場所を取得するために、管理されたシステム拡張子機能を使用するためのプロセスの例(700)を示す流れ図である。プロセス(700)は、ソフトウェア、ファームウェア、ハードウェア、又はその組み合わせによって実装され得る装置上で実行している図1の拡張子管理モジュール(104)のようなオペレーティングシステムの拡張子管理モジュールによって実行される。プロセス(700)は、管理されたシステム拡張子機能を使用するためのプロセスの例であって、異なる図面を参照した、管理されたシステム拡張子機能の使用に関する更なる論述が、本明細書に含まれている。
[0086]プロセス(700)において、DLLへのパスを求めるリクエストが受信される(動作702)。DLLは、ソフトウェアコンポーネントのリソースファイル(例えば、図2のリソースファイル(202))として含まれている。(動作702)で受信されたリクエストが、所望されている特定のDLL及びDLLを含む対応しているソフトウェアコンポーネントを(例えば、レジストリ情報パラメーターとして)指定する。リクエストは、典型的に、プロセス(700)を実装している装置上のオペレーティングシステムのコンポーネント又はモジュールである拡張子消費部から受信されるが、代替として、リクエストが別のコンポーネント又はモジュールから受信され得る。
[0087]リクエストに応答して拡張子レジストリ情報データベースがアクセスされる(動作704)。拡張子レジストリ情報データベースは、DLLの拡張子カテゴリーを含む。前述した拡張子レジストリ情報データベースは、カテゴリーによって統合化され得、拡張子レジストリ情報それぞれは、カテゴリー識別子を含み得る。
[0088]動作(702)で受信されたリクエストに応答する拡張子レジストリ情報データベース内の拡張子レジストリ情報が識別される(動作706)。拡張子レジストリ情報データベース内のDLLに関する拡張子レジストリ情報それぞれは、(例えば、レジストリ情報パラメーターとしての)DLL識別子、DLLを含む対応する(例えばメタデータとしての)ソフトウェアコンポーネント識別子、及びDLLが格納されているファイルシステムの(例えばレジストリ情報パラメーターとしての)場所を含む。動作(702)で受信されたリクエストにおいて指定されるDLL識別子と、動作(702)で受信されたリクエストにおいて対応するソフトウェアコンポーネントとして指定されたソフトウェアコンポーネント識別子と、の双方を含む拡張子レジストリ情報が(動作706)において識別される。
[0089]ファイルシステム内のDLLの場所は、動作(706)で識別された拡張子レジストリ情報から取得される(動作708)。動作(706)で取得されたこのDLLの場所がリクエスターへ返される(動作710)。リクエスターは、その後、識別された場所のDLLにアクセスし得、ロードし得、又は代替として所望に応じてDLLを使用し得る。
[0090]プロセス(700)において見られ得るように、特定のDLLを検索するためのファイルシステムの1つ以上のディレクトリ又はフォルダーを介した検索が実行される必要はない。むしろ、DLLの場所は、拡張子レジストリ情報データベースに保持されている拡張子レジストリ情報に基づいて、拡張子管理モジュールによって容易に決定される。
[0091]本明細書の論述において、拡張子管理モジュールは、拡張子レジストリ情報データベース(例えば、図1のデータベース(106)又は図3のデータベース(300))に1つ以上の拡張子レジストリ情報レコードを保持しているように記述されている。代替として、そのような個別レコードもデータベースも保持されている必要はない。むしろ、計算装置上にインストールされたソフトウェアコンポーネントそれぞれの宣言部(例えば、図2の宣言部(204))が、保持され得、拡張子消費部からのリクエストに応答して検索される。
[0092]加えると、拡張子レジストリ情報データベース(例えば、図1に関するデータベース(106)又は図3に関するデータベース(300))が、別の装置によって直接アクセスされる状況が生じ得ることに留意されたい。上記アクセスは、拡張子管理モジュール(例えば、図1のモジュール(104))によって管理される必要はない。例えば、図1を参照すると、記憶装置(100)と接続された(図1に示されていない第2の計算装置)は、拡張子レジストリ情報データベース(106)が格納されている計算装置(100)の記憶装置にアクセスし得る。この第2の計算装置は、例えば、システム管理者又はネットワーク管理者、計算装置(100)を更新又は管理する第三者などによって実行される計算装置であり得る。この第2の計算装置は、拡張子管理モジュール(104)を迂回してデータベース(106)に直接アクセスし得、データベース(106)への変更を実行し得る。これによって、例えば、第2の計算装置は、拡張子管理モジュール(104)の実行を必要とせずに、拡張子レジストリ情報をデータベース(106)へ追加し、データベース(106)から拡張子レジストリ情報を除去し、及び/又はさもなければ、データベース(106)内の拡張子レジストリ情報にアクセス可能になる。したがって、拡張子レジストリ情報データベース(106)は、「オフライン」のとき(例えば、どのユーザーも計算装置(100)にログインしていないとき及び/又は拡張子管理モジュール(104)が実行していないとき)であっても更新され得る。
[0093]前述において、拡張子管理モジュールは、拡張子供給部と拡張子消費部との間の仲介者として作動する。拡張子供給部及び拡張子消費部双方は、拡張子管理モジュール及び拡張子管理モジュールとどのように通信するかに関する知識を有する。しかしながら、レガシー供給部及び/又はレガシー消費部が計算装置上で実行される状況が生じ得る。レガシー供給部又はレガシー消費部は、拡張子管理モジュールを利用せずに作動するプログラム又はモジュールを参照している。したがって、レガシー供給部及びレガシー消費部は、拡張子管理モジュールとどのように通信するかに関する知識を有していない。
[0094]上記状況を解決するために、レガシー管理システムが使用される。レガシー管理システムは、どのように拡張子管理モジュールと通信するか理解している新しいモデルへのレガシー供給部の変換を支援する。レガシー管理システムは更に、レガシーレジストリ情報ストア、コンフィギュレーション、及び通信を支援し、拡張子管理モジュールを介して拡張子供給部によって実行されるレジストリ情報をレガシー消費部が利用可能にする。
[0095]図8は、1つ以上の実施形態によるレガシー管理システムの例(800)を示している。レガシー管理システム(800)は、図1のオペレーティングシステム(102)のようなオペレーティングシステムの一部として実装される。レガシー管理システム(800)は、アダプター管理モジュール(802)及び1つ以上のアダプターモジュール(804)を含む。拡張子管理モジュール(812)は、前述した(例えば、図1のモジュール(104))のような拡張子管理モジュールである。コンポーネント管理モジュール(814)は、モジュール(812)によって管理された拡張子機能以外の別のソフトウェアコンポーネントの態様を管理する。例えば、モジュール(814)は、ソフトウェアコンポーネントに関する状態情報の格納を管理し得る。
[0096]前述した拡張子レジストリ情報は、モジュール(812)のような拡張子管理モジュールによって拡張子レジストリ情報データベースへ追加される。これは、ソフトウェアコンポーネントが計算装置にインストールされたとき、及び別のタイミングで生じ得る。アダプター管理モジュール(802)は、モジュール(812)による変更が、拡張子レジストリ情報データベースに実行されたタイミングを検出する。アダプター管理モジュール(802)は、様々な異なる方法で上記変更を検出し得る。1つ以上の実施形態において、モジュール(802)は、上記変更通知を受信するために拡張子管理モジュール(812)に登録する。上記レジストリ情報に応答して、モジュール(812)は、モジュール(812)による変更が拡張子レジストリ情報データベースに実行されたとき、モジュール(802)へ通知を送信する。代替として、モジュール(802)が拡張子レジストリ情報データベース内のレジストリ情報に関するモジュール(812)をポーリングし、最新のポーリングモジュール(812)が、別のコンポーネント又はモジュールによる上記変更を通知されてから何か変更が生じたか否かチェックするなど異なる方法で上記の変更を検出し得る。
[0097]モジュール(812)によって拡張子レジストリ情報データベースに実行された変更を、アダプター管理モジュール(802)が検出したとき、モジュール(802)は、1つ以上のアダプターモジュール(804)へ変更を通知する。アダプターモジュール(804)それぞれが、対応しているレガシーストア(820)と通信する。アダプターモジュール(804)それぞれは、対応しているレガシーストア(820)とどのように通信するか、及び拡張子レジストリ情報データベースから、対応しているレガシーストア(820)によって使用されるフォーマットへ拡張子レジストリ情報をどのように変換するかに関する知識を有する。1つ以上の実施形態において、アダプターモジュール(804)それぞれの開発者は、特定の拡張子タイプに関するこの通信及び変換をどのように実行するかに関する知識を用いて、アダプターモジュール(804)を構成する。代替として、1つ以上のレガシー拡張子レジストリ情報宣言(822)が、直接か又はアダプター管理モジュール(802)を介し、アダプターモジュール(804)に提供され得る。上記レガシー拡張子レジストリ情報宣言(822)それぞれが、特定の拡張子タイプに関するこの通信及び変換をどのように実行するか記述している。
[0098]レガシーストア(820)は、レガシー拡張子消費部及び/又はレガシー拡張子供給部によって使用されるストアであって、拡張子機能に関する情報を格納する。様々な異なるタイプのストアが、レガシーストア(820)として含まれ得る。例えば、レガシーストア(820)は、オペレーティングシステムレジストリ、サービスコントロールマネージャーストア、ファイアウォール、ファイルシステム、コンフィギュレーションファイルなどを含み得る。
[0099]したがって、拡張子供給部であるソフトウェアコンポーネントに関する拡張子レジストリ情報が、モジュール(812)によって拡張子レジストリ情報データベースへ追加されたとき、この追加がモジュール(802)によって検出される。モジュール(802)は、追加された拡張子レジストリ情報をモジュール(812)から取得し、拡張子レジストリ情報をアダプターモジュール(804)へ転送する。アダプターモジュール(804)は拡張子レジストリ情報を受信し、拡張子レジストリ情報を解析し、拡張子レジストリ情報に基づく適切な情報をレガシーストア(820)に格納する。ソフトウェアコンポーネントに関する拡張子レジストリ情報の内容が今、レガシーストア(820)に含まれているので、レガシー拡張子消費部は、拡張子供給部を識別し、呼び出すことができる。
[00100]拡張子レジストリ情報が転送される特定のアダプターモジュール(804)が、異なる方法で決定され得る。1つ以上の実施形態において、異なるアダプターモジュール(804)が異なるタイプの拡張子レジストリ情報を処理し、異なるこれらのタイプがモジュール(802)に知られている。代替として、モジュール(802)は、アダプターモジュール(804)が処理し得る拡張子レジストリ情報タイプに関してアダプターモジュール(804)にクエリーし得る。したがって、拡張子レジストリ情報の場合、モジュール(802)は、拡張子レジストリ情報を拡張子レジストリ情報タイプに基づいて適切なアダプターモジュール(804)へ転送し得る。代替として、モジュール(802)は、拡張子レジストリ情報が異なる方法で転送されるアダプターモジュール(804)を決定し得る。例えば、拡張子レジストリ情報は、アダプターモジュール(804)すべてに転送され得、アダプターモジュール(804)それぞれは、拡張子レジストリ情報から適切な情報を決定し得、もしあれば、レガシーストア(820)に格納し得る。
[00101]図9は、1つ以上の実施形態による管理されたシステム拡張子機能を用いてレガシー拡張子消費部を支援するためのプロセスの例(900)を示す流れ図である。プロセス(900)は、ソフトウェア、ファームウェア、ハードウェア、又はその組み合わせで実装され得る図8のレガシー管理システム(800)など、機器上で実行しているオペレーティングシステムのレガシー管理システムによって実行される。プロセス(900)は、レガシー拡張子消費部を支援するためのプロセスの例であって、異なる図面を参照したレガシー拡張子消費部を支援する更なる論述が、本明細書に含まれている。
[00102]プロセス(900)において、アダプター管理モジュールが、新しい拡張子レジストリ情報を検出する(動作902)。この拡張子レジストリ情報データベースに対する変更に関する検出は、拡張子管理モジュールに登録するなど前述した異なる様々な方法で実行され得る。
[00103]検出された新しい拡張子レジストリ情報に応答して、アダプター管理モジュールが、新しい拡張子レジストリ情報を取得する(904動作)。新しい拡張子レジストリ情報を拡張子管理モジュールからリクエストすることによって、新しい拡張子レジストリ情報が格納されることが知られた場所にアクセスすることによって、新しい拡張子レジストリ情報を変更通知とともに拡張子レジストリ情報データベースへ渡されるような様々な方法でアダプター管理モジュールが新しい拡張子レジストリ情報を取得し得る。
[00104]アダプター管理モジュールは、その後、新しい拡張子レジストリ情報をアダプターモジュールに送信する(動作906)。特定のアダプターモジュール又は新しい拡張子レジストリ情報が送信されるモジュールが、前述した様々な異なる方法で決定され得る。
[00105]アダプター管理のモジュールは、その後、新しい拡張子レジストリ情報に基づいて、対応するレガシーストアを更新する(動作908)。前述したアダプター管理モジュールは、レガシーストア及びレガシー拡張子消費部によって予測される方法でレガシーストアと通信し得、新しい拡張子レジストリ情報からレガシーストアに情報を格納し得る。
[00106]図10は、1つ以上の実施形態による管理されたシステム拡張子機能を実装するように構成され得る計算装置の例(1000)を示している。計算装置(1000)は、例えば、図1の計算装置(100)であり得る。
[00107]計算装置(1000)は、1つ以上のプロセッサー又は演算処理装置(1002)、1つ以上のメモリー及び/又はストレージコンポーネント(1006)を含み得る1つ以上の計算機可読媒体(1004)、1つ以上の入力/出力(I/O)装置(1008)、及び様々なコンポーネント及び機器が相互に通信可能なバス(1010)を含む。計算機可読媒体(1004)及び/又は1つ以上のI/O装置(1008)は、計算装置(1000)の一部として含まれ得るか又は代替として機器と接続され得る。バス(1010)は、メモリーバス又はメモリーコントローラーバス、周辺機器用バス、アクセラレイティッドグラフィックスポート、プロセッサーパス又はローカルバスなど、を含む様々な異なるバスアーキテクチャを利用するいくつかのタイプのバス構造の1つ以上を示している。バス(1010)は、有線バス及び/又は無線バスを含み得る。
[00108]メモリー/ストレージコンポーネント(1006)は、1つ以上の計算機記憶媒体を表す。コンポーネント(1006)は、(ランダムアクセスメモリー(RAM)などの)揮発性媒体及び/又は(読み出し専用メモリー(ROM)、フラッシュメモリー、光ディスク、磁気ディスクなどの)不揮発性媒体を含み得る。コンポーネント(1006)は、(例えばRAM、ROM、固定のハードドライブなどの)固定の媒体及び(例えばフラッシュメモリードライブ、取り外し可能ハードドライブ、光学式ディスクなどの)取り外し可能媒体を含み得る。
[00109]本明細書に論述した技法は、1つ以上の演算処理装置(1002)によって実行される命令を有するソフトウェアに実装され得る。異なる命令が、演算処理装置(1002)、演算処理装置(1002)内の様々なキャッシュメモリー、計算装置(1000)の(示されていない)別のキャッシュメモリー、又はその他の計算機可読媒体など、計算装置(1000)の異なるコンポーネントにストアされ得ることを十分に理解されよう。加えると、命令が計算装置(1000)にストアされる場所は、時間が経つにつれて変化し得ることを十分に理解されよう。
[00110]1つ以上の入力/出力装置(1008)によって、ユーザーは計算装置(1000)にコマンド及び情報を入力可能になり、情報がユーザー、及び/又はその他のコンポーネント又は機器に提示されることも可能になる。入力装置の例は、キーボード、カーソル制御装置(例えばマウス)、マイクロフォン、スキャナーなどを含む。出力装置の例は、表示装置(例えば、モニター又はプロジェクター)、スピーカー、プリンター、ネットワークカードなどを含む。
[00111]様々な技法が、一般的なソフトウェア又はプログラムモジュールの文脈で本明細書に記載され得る。通常、ソフトウェアは、特定のタスクを実行するか又は特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。これらのモジュール及び技法の実装は、いくつかの計算機可読媒体形式を介しストア又は送信され得る。計算機可読媒体は、計算装置によってアクセスされ得る利用可能な単一媒体又は複数媒体のいずれかであり得る。非限定の例として、計算機可読媒体は、「計算機記憶媒体」及び「通信媒体」を含み得る。
[00112]「計算機記憶媒体は」、計算機読込可能命令、データ構造、プログラムモジュール、又はその他のデータのような情報の記憶に関する任意の方法若しくは技術で実装された揮発性媒体及び不揮発性媒体、並びに取り外し可能媒体及び媒体取り外し不可能媒体を含む。計算機記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリー、若しくはその他のメモリー技術、CD−ROM、デジタル多用途ディスク(DVD)、若しくはその他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、若しくはその他の磁気記憶装置、又は所望した情報を格納するために利用され得、計算機によってアクセスされ得る別の任意の媒体、を含むがこれらに限定しない。
[00113]「通信媒体」は典型的に、計算機可読命令、データ構造、プログラムモジュール、又はその他のデータを、搬送波又はその他の移送機構のような変調されたデータ信号で具体化する。通信媒体は、任意の情報伝達媒体も含む。用語「変調データ信号」は、信号内の情報を符号化する方法によって設定又は変更されたその1つ以上の特性を有する信号を意味している。非限定の例として、通信媒体は、有線ネットワーク又は直接有線接続のような有線媒体、及び音響、RF、赤外線、及びその他のワイヤレス媒体のような無線媒体などを含む。上記のうち、任意の組み合わせも計算機可読媒体の範囲内に含まれる。
[00114]通常、本明細書に記載した機能又は技法のどれもソフトウェア、ファームウェア、ハードウェア(例えば固定論理回路)、手動処理、又はこれらの実装の組み合わせを利用し、実装され得る。本明細書に使用されている用語「モジュール」及び「コンポーネント」は通常、ソフトウェアを表しているが、代替として、ファームウェア及び/又はハードウェアの組込みも表している。ソフトウェア実行の場合、モジュール又はコンポーネントは、プロセッサー(例えば、CPU又は複数のCPU)上で実行されるとき、指定されたタスクを実行するプログラムコードを表している。プログラムコードは1つ以上の計算機可読記憶媒体にストアされ得、更に、それに関する図10を参照した説明が見出され得る。本明細書に記載された管理されたシステム拡張機能はプラットフォームに独立であって、本技法が、様々なプロセッサーを有する様々な商用計算プラットフォームにおいて実装され得ることを意味している。
[00115]対象項目は、構造的機能及び/又は方法論的動作に対し特定の言語で記述されているが、添付の請求項に定義されている対象項目が、必ずしも前述した特定の機能又は動作に限定されるわけではないことを理解されよう。もっと具体的に言うと、前述した特定の機能及び動作は、本請求項の実装形式の例として開示されている。
100 計算装置の例
102 オペレーティングシステム
104 拡張子管理モジュール
106 拡張子レジストリ情報データベース
112 拡張子消費部
114 拡張子供給部
200 ソフトウェアコンポーネントの例
202 リソースファイル
204 宣言部
206(1) 拡張子レジストリ情報宣言
206(m) 拡張子レジストリ情報宣言
212(1) カテゴリー識別子
212(m) カテゴリー識別子
214(1) 拡張子メタデータ
214(m) 拡張子メタデータ
216(1) 拡張子データ
216(m) 拡張子データ
300 拡張子レジストリ情報データベースの例
302(1) 拡張子レジストリ情報
302(x) 拡張子レジストリ情報
304(1) 拡張子レジストリ情報
304(z) 拡張子レジストリ情報
312 第1のカテゴリー
314 第2のカテゴリー
324(1) 拡張子メタデータ
324(x) 拡張子メタデータ
326(1) 拡張子データ
326(x) 拡張子データ
334(1) 拡張子メタデータ
334(z) 拡張子メタデータ
336(1) 拡張子データ
336(z) 拡張子データ
800 レガシー管理システムの例
802 アダプター管理モジュール
804 アダプターモジュール
812 拡張子管理モジュール
814 コンポーネント管理モジュール
820 レガシーストア
822 レガシー拡張子レジストリ情報宣言
1000 計算装置の例
1002 演算処理装置
1004 計算機可読媒体
1006 ストレージコンポーネント
1008 入力/出力(I/O)装置
1010 バス

Claims (15)

  1. プロセッサー(1002)と、
    前記プロセッサーに接続された1つ以上の計算機可読媒体(1004)と、を含んでいて、その上にストアされたオペレーティングシステムの複数の命令を有していて、前記プロセッサーによって実行されるとき、
    前記計算装置にインストールされた複数のソフトウェアコンポーネントそれぞれに関し、前記ソフトウェアコンポーネントを機能性供給部として識別する1つ以上の拡張子レジストリ情報を受信するステップ(402)と、
    前記複数のソフトウェアコンポーネントそれぞれに関し、前記1つ以上の拡張子レジストリ情報レコードを保持するステップ(404)と、
    前記計算装置にインストールされた別のソフトウェアコンポーネントから、特定の機能性を識別するリクエストを受信するステップ(406)と、
    前記リクエストに応答して、前記レコードに基づいて、前記特定の機能性を提供する前記複数のソフトウェアコンポーネントの1つ以上に関する情報を前記別のソフトウェアコンポーネントへ返すステップ(408)と、
    を前記プロセッサーに実行させることを特徴とする計算装置(1000)。
  2. ソフトウェアコンポーネントに関する前記1つ以上の拡張子レジストリ情報を受信するステップが、前記ソフトウェアコンポーネントが前記計算装置にインストールされたとき前記ソフトウェアコンポーネントの宣言部から前記1つ以上の拡張子レジストリ情報を取得すること、を特徴とする請求項1記載の計算装置。
  3. ソフトウェアコンポーネントに関する前記1つ以上の拡張子レジストリ情報を受信するステップが、前記ソフトウェアコンポーネントによって呼び出されるアプリケーションプログラミングインターフェースを介し、前記ソフトウェアコンポーネントから前記1つ以上の拡張子レジストリ情報を受信すること、を特徴とする請求項1記載の計算装置。
  4. 前記リクエストを別のソフトウェアコンポーネントから受信するステップが、前記オペレーティングシステムの拡張子管理モジュールによって公開されたアプリケーションプログラミングインターフェースを介し、前記別のソフトウェアコンポーネントからリクエストを受信すること、を特徴とする請求項1記載の計算装置。
  5. 前記複数の命令が更に、
    前記複数のソフトウェアコンポーネントの1つが前記計算装置からアンインストールされた指標を受信するステップと、
    前記複数のソフトウェアコンポーネントの前記1つに対応する前記レコード内の前記1つ以上の拡張子レジストリ情報を識別するステップと、
    前記複数のソフトウェアコンポーネントの前記1つに対応している前記1つ以上の拡張子レジストリ情報を前記レコードから削除するステップと、を前記プロセッサーに実行させることを特徴とする請求項1記載の計算装置。
  6. 前記1つ以上の拡張子レジストリ情報それぞれが、前記拡張子レジストリ情報を記述しているメタデータと、前記拡張子レジストリ情報に関する1つ以上のレジストリ情報パラメーターと双方を含んでいて、前記1つ以上のレジストリ情報パラメーターそれぞれが、レジストリ情報パラメーターの名称、レジストリ情報パラメーターのタイプ、及びレジストリ情報パラメーターの値を含むことを特徴とする請求項1記載の計算装置。
  7. 前記複数の命令が更に、前記1つ以上の拡張子レジストリ情報の少なくとも1つをレガシーストアによって使用される形式へ変換し、前記変換された少なくとも1つの拡張子レジストリ情報を前記レガシーストアに格納するステップ、を前記プロセッサーに実行させることを特徴とする請求項1記載の計算装置。
  8. 前記レコードに保持されている前記1つ以上の拡張子レジストリ情報が、複数の異なるタイプの拡張子を含むことを特徴とする請求項1記載の計算装置。
  9. 前記1つ以上の拡張子レジストリ情報が、少なくとも1つのファイル関連付け、少なくとも1つのメニュー項目、及び少なくとも1つのショートカット項目を含むことを特徴とする請求項8記載の計算装置。
  10. 前記1つ以上の拡張子レジストリ情報それぞれが、前記拡張子レジストリ情報の拡張子タイプを示すカテゴリー識別子を有していて、前記1つ以上の拡張子レジストリ情報それぞれが、前記拡張子レジストリ情報の前記カテゴリー識別子に関し定義されているカテゴリー定義に従っていることを特徴とする請求項1記載の計算装置。
  11. 前記複数の命令が更に、前記1つ以上の拡張子レジストリ情報レコードに対する変更通知を前記計算装置の別のモジュールへ送信するステップを前記プロセッサーに実行させることを特徴とする請求項1記載の計算装置。
  12. 計算装置上で実行しているオペレーティングシステムに実装される方法であって、
    拡張子レジストリ情報データベースに対するアクセスを管理している拡張子管理モジュールから新しい拡張子レジストリ情報を取得するステップ(904)であって、前記新しい拡張子レジストリ情報が、前記拡張子管理モジュールと通信する拡張子供給部に対応しているものと、
    前記新しい拡張子レジストリ情報に基づいて拡張子情報をレガシーストアに格納するステップ(908)と、を含む方法。
  13. 更に、
    前記拡張子レジストリ情報データベースに対する変更通知を受信するために、前記拡張子管理モジュールに登録するステップを含み、
    前記取得するステップが、拡張子管理モジュールから受信された前記拡張子レジストリ情報データベースに対する変更通知に応答して、新しい拡張子レジストリ情報を取得するステップを含むことを特徴とする請求項12記載の方法。
  14. 更に、
    拡張子レジストリ情報が、前記拡張子レジストリ情報データベースから除去された時間に関する通知を前記拡張子管理モジュールから受信するステップと、
    前記拡張子レジストリ情報に対応している拡張子情報を前記レガシーストアから削除するステップと、を含む請求項12記載の方法。
  15. 更に、前記新しい拡張子レジストリ情報を前記レガシーストアによって使用される形式へ変換する方法を決定するために、レガシー拡張子レジストリ情報宣言にアクセスするステップを含む請求項12記載の方法。
JP2012516325A 2009-06-19 2010-06-18 管理されたシステム拡張子機能 Withdrawn JP2012530972A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/488,164 2009-06-19
US12/488,164 US8627284B2 (en) 2009-06-19 2009-06-19 Managed system extensibility
PCT/US2010/039117 WO2010148274A2 (en) 2009-06-19 2010-06-18 Managed system extensibility

Publications (1)

Publication Number Publication Date
JP2012530972A true JP2012530972A (ja) 2012-12-06

Family

ID=43355149

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012516325A Withdrawn JP2012530972A (ja) 2009-06-19 2010-06-18 管理されたシステム拡張子機能

Country Status (6)

Country Link
US (1) US8627284B2 (ja)
EP (1) EP2443550A2 (ja)
JP (1) JP2012530972A (ja)
KR (1) KR101682738B1 (ja)
CN (1) CN102804133B (ja)
WO (1) WO2010148274A2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120150898A1 (en) * 2010-12-09 2012-06-14 International Business Machines Corporation Dynamic Collection Of System Support Files In A Data Processing Environment
US8813060B2 (en) * 2011-06-17 2014-08-19 Microsoft Corporation Context aware application model for connected devices
US10235147B2 (en) 2011-08-26 2019-03-19 Microsoft Technology Licensing, Llc Discovery and activation of application extensions
US9058201B2 (en) * 2011-12-28 2015-06-16 Intel Corporation Managing and tracking thread access to operating system extended features using map-tables containing location references and thread identifiers
CN103309700B (zh) * 2012-03-16 2016-05-18 腾讯科技(深圳)有限公司 一种插件管理控制方法及装置
CN102681850B (zh) * 2012-05-07 2015-05-20 北京奇虎科技有限公司 一种基于Webkit内核提供网页浏览的方法及装置
US20150113498A1 (en) * 2013-10-21 2015-04-23 Microsoft Corporation Modeling customizations to a computer system without modifying base elements
KR101528406B1 (ko) * 2013-11-07 2015-06-11 중소기업은행 데모버전 변환 장치 및 방법
CN106462428B (zh) * 2014-04-30 2021-04-16 施耐德电器工业公司 用于传送和访问软件组件的系统与方法
EP3405864A4 (en) * 2016-01-22 2019-08-21 Sony Interactive Entertainment Inc. CPUID MYSTIFICATION FOR RETROCOMPATIBILITY
US10552124B2 (en) 2016-09-16 2020-02-04 Oracle International Corporation Systems and methods for building applications using building blocks linkable with metadata
US10602353B1 (en) * 2018-12-31 2020-03-24 Microsoft Technology Licensing, Llc Extensible device identity attestation

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0559222A2 (en) 1992-03-06 1993-09-08 Microsoft Corporation Improved method for loading programs
US5831606A (en) 1994-12-13 1998-11-03 Microsoft Corporation Shell extensions for an operating system
US5903753A (en) 1995-08-18 1999-05-11 International Business Machines Corporation Name space registry with backward compatibility for older applications
US7275063B2 (en) * 2002-07-16 2007-09-25 Horn Bruce L Computer system for automatic organization, indexing and viewing of information from multiple sources
US6976029B2 (en) * 2004-02-10 2005-12-13 Microsoft Corporation System and method for providing user defined types in a database system
KR100616157B1 (ko) * 2005-01-11 2006-08-28 와이더댄 주식회사 애플리케이션 연동 방법 및 그 시스템
US20060161582A1 (en) * 2005-01-18 2006-07-20 Microsoft Corporation Application object as primitive of operating system
US20060230396A1 (en) * 2005-04-07 2006-10-12 International Business Machines Corporation Deployment of reusable software components to be hosted in a container running on a modular code runtime platform through a runtime platform extension point
CN100552629C (zh) 2005-04-18 2009-10-21 捷讯研究有限公司 实现基于数据兼容性的版本计划
US20070156913A1 (en) 2005-12-30 2007-07-05 Hiroyuki Miyamoto Method for enabling extension points through plug-ins
US8132188B2 (en) * 2006-04-21 2012-03-06 International Business Machines Corporation Method and system for extension registry filtering
US8041863B2 (en) * 2006-11-16 2011-10-18 International Business Machines Corporation Automated solution to provide personalized user environment on any public computer using portable storage devices with personalized user settings uploaded to local registry of public computer
US20080256095A1 (en) * 2007-04-10 2008-10-16 Apertio Limited Adaptation in network data repositories
US20090141110A1 (en) * 2007-11-30 2009-06-04 Xerox Corporation Ink-jet printer using phase-change ink for direct on paper printing
KR100953094B1 (ko) * 2007-12-11 2010-04-19 한국전자통신연구원 호스트 소프트웨어 관리 시스템 및 방법

Also Published As

Publication number Publication date
CN102804133B (zh) 2014-10-29
EP2443550A2 (en) 2012-04-25
US8627284B2 (en) 2014-01-07
KR101682738B1 (ko) 2016-12-05
KR20120042762A (ko) 2012-05-03
WO2010148274A3 (en) 2011-03-31
CN102804133A (zh) 2012-11-28
US20100325085A1 (en) 2010-12-23
WO2010148274A2 (en) 2010-12-23

Similar Documents

Publication Publication Date Title
KR101682738B1 (ko) 관리 시스템 확장성
JP5075920B2 (ja) ウェブデータ使用のプラットフォーム
RU2398266C2 (ru) Использование механизма привязки данных для выполнения привязки команд
US8549514B2 (en) Distributing customized software products
CN102754073B (zh) 用于虚拟化的扩展点声明性注册的方法和系统
KR20070049166A (ko) 목표 기기 상에서의 종속 소프트웨어 패키지의 검출 및이용을 자동화하기 위한 방법 및 소프트웨어 리포지터리를생성하기 위한 시스템
US20100250730A1 (en) Automated license reconciliation for deployed applications
US20170161511A1 (en) Database public interface
JPH09507318A (ja) オブジェクト指向システムにおけるサービスの作成
EP2443549A2 (en) Catalog-based software component management
MX2007015887A (es) Flujos de trabajos centricos de datos.
JP2008269136A (ja) モデル駆動型開発を支援する装置及び方法
CN112685020B (zh) 动态创建服务接口的方法、装置、电子设备及存储介质
WO2010144374A2 (en) Software extension analysis
CN102132267B (zh) 动态元数据
US10552233B2 (en) Application convergence method and apparatus
JP2014123249A (ja) 情報処理装置、プログラム、及び情報処理方法
US9037542B2 (en) Reducing programming complexity in client applications when interfacing with database servers operating with different programming interfaces
US8719704B2 (en) Seamless integration of additional functionality into enterprise software without customization or apparent alteration of same
WO2011157105A2 (zh) 组件扩展方法和装置
JP2013164879A (ja) 情報処理装置、互換性評価方法、及びプログラム
JP5942508B2 (ja) サーバ装置、検索方法及びプログラム
JP2000267915A (ja) ファイル処理装置およびそのプログラム記録媒体
JPH11327913A (ja) サービス機能提供装置および提供方法
JP2016126591A (ja) ソフトウェア導入判定プログラム、ソフトウェア導入判定方法、およびソフトウェア導入判定装置

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20130903