JP2012529711A - ソフトウェア拡張子解析方法及びシステム - Google Patents

ソフトウェア拡張子解析方法及びシステム Download PDF

Info

Publication number
JP2012529711A
JP2012529711A JP2012515023A JP2012515023A JP2012529711A JP 2012529711 A JP2012529711 A JP 2012529711A JP 2012515023 A JP2012515023 A JP 2012515023A JP 2012515023 A JP2012515023 A JP 2012515023A JP 2012529711 A JP2012529711 A JP 2012529711A
Authority
JP
Japan
Prior art keywords
registry information
data
namespace
information store
extension
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
JP2012515023A
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 JP2012529711A publication Critical patent/JP2012529711A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

それぞれが1つ以上のカテゴリーに対応していて、それぞれがソフトウェア拡張子言語で書かれた複数の構造化拡張子定義が、取得され得る。レジストリ情報ストアにとってネイティブなフォーマットで保持されている1つ以上のレジストリ情報を表すデータが、アクセスされ得、このデータが複数の構造化定義の少なくとも一部に基づいて解析され得る。別の態様において、ソフトウェア拡張子言語で書かれた構造化拡張子定義が取得される。レジストリ情報ストアは、レジストリ情報ストアに対しネイティブであってソフトウェア拡張子言語と異なるフォーマットでストアされているレジストリ情報を含んでいて、レジストリ情報ストアが、取得された構造化拡張子定義に基づいて修正される。
【選択図】図1

Description

本発明は、計算機システムに関し、具体的には、オペレーティングシステムレジストリに関する。
[0001]計算機は、典型的に、別のアプリケーションを計算機にインストールし、実行可能にすることを含む様々な機能性を提供するオペレーティングシステムを実行している。上記のオペレーティングシステムは、多くの場合、アプリケーション及びオペレーティングシステムがアプリケーションの多重実行全域で持続されるべき様々なタイプの情報をストアし得る場所を提供している。この場所が、例えば、オペレーティングシステムレジストリであり得る。しかしながら、上記情報をストアするとき、ストアされたデータにアクセスし修正し得る異なるプログラムが多いために問題が発生し得る。上記情報がストアされる方法は時間が経つにつれて変化し得、そのような変化は、多くの場合、データをストアし及び/又はリトリーブする他のプログラムに適切に伝達されない。したがって情報が容易に不適切にストアされ得、プログラム及び/又はオペレーティングシステムが、適切に作動することに失敗する不安定性をもたらす。
本発明の目的は、レジストリ情報が、レジストリ情報データストア内の複数の構造化定義に基づいてアクセスされ解析され得る方法及びシステムを提供することである。
[0002]この「課題を解決するための手段」は、更に「発明を実施するための形態」に後述される概念のいくつかを簡易形式で紹介するために提供される。この「課題を解決するための手段」は、請求項記載対象の主要因も本質的な特徴も特定することを意図されておらず、請求項記載対象の範囲を限定するために使用されることも意図されていない。
[0003]1つ以上の態様に従って複数の構造化拡張子定義が取得される。構造化拡張子定義それぞれが1つ以上のカテゴリーに対応していて、構造化拡張子定義それぞれがソフトウェア拡張子言語で書かれている。レジストリ情報ストアにとってネイティブなフォーマットで保持されている1つ以上のレジストリ情報を表しているデータがアクセスされ、このデータが、複数の構造的定義の少なくとも一部に基づいて解析される。
[0004]1つ以上の態様に従ってソフトウェア拡張子言語で書かれた構造化拡張子定義が取得される。レジストリ情報ストアが、構造化拡張子定義に基づいて修正される。レジストリ情報ストアが、レジストリ情報ストアにとってネイティブであって、ソフトウェア拡張子言語と異なるフォーマットでストアされたレジストリ情報を含んでいる。
[0005]同様の機能を参照するために、同一の番号が図面内で使用されている。
[0006]1つ以上の実施形態によるソフトウェア拡張子解析を実装している計算装置の例を示している。 [0007]1つ以上の実施形態による構造化拡張子定義に関するフォーマットの例を示している。 [0008]1つ以上の実施形態によるソフトウェア拡張子解析を実装するためのプロセスの例を示す流れ図である。 [0009]1つ以上の実施形態によるソフトウェア拡張子を解析するためのプロセスの例を示す流れ図である。 [0010]1つ以上の実施形態によるレジストリ情報ストアにソフトウェア拡張子レジストリ情報を挿入するためのプロセスの例を示す流れ図である。 [0011]1つ以上の実施形態によるレジストリ情報ストアからソフトウェア拡張子レジストリ情報を削除するためのプロセスの例を示す流れ図である。 [0012]1つ以上の実施形態による特定の場所に示されたレジストリ情報カテゴリーを識別するためのプロセスの例を示す流れ図である。 [0013]1つ以上の実施形態に従って使用され得る構造化拡張子定義に関するトライ木の例を示している。 [0014]1つ以上の実施形態によるソフトウェア拡張子解析を実装するように構成され得る計算装置の例を示している。
[0015]ソフトウェア拡張子解析が、本明細書に論述される。ネイティブレジストリ情報は、構造化拡張子定義で書かれていて、ソフトウェア拡張子言語で記述されたカテゴリーに関連付けられている。ネイティブレジストリ情報は、機器のストア内に保持されていて、機器においてソフトウェア拡張子を管理する一部として解析され得る。この管理は、ネイティブレジストリ情報内の問題を検出すること、ストアに示されているレジストリ情報目録を生成すること、レジストリ情報をそれらのネイティブレジストリ情報フォーマットでストアに挿入すること、ストアからレジストリ情報のすべて又は一部を削除することなど、様々な機能性を含み得る。加えると、構造化拡張子定義は、ストア内の特定の場所、及びストア内の少なくともの一部データ、その場所に表されている特定のレジストリ情報カテゴリーを決定するために活用され得る。
[0016]図1は、1つ以上の実施形態によるソフトウェア拡張子解析を実装している計算装置の例(100)を示している。計算装置(100)は、ソフトウェア及び/又はファームウェアプログラムを実行可能な様々な異なる機器であり得る。例えば、計算装置(100)は、デスクトップコンピューター、ラップトップコンピューター、通信移動局、娯楽電化製品、表示装置と通信可能に接続されるセットトップボックス、テレビ、携帯電話、又はその他の無線電話、携帯情報端末(PDA)、ゲーム端末、自動車用コンピューターなどであり得る。かくして計算装置(100)は、大容量メモリー及びプロセッサー資源を有する大きなリソース機器(例えば、パーソナルコンピューター、ゲーム端末)から限られたメモリー及び/又は処理資源を有する小さなリソース装置(例えば、従来のセットトップボックス、携帯用ゲーム端末)と多岐に渡り得る。
[0017]計算装置(100)は、拡張子レジストリ情報仲介部(102)、レジストリ情報ストア(104)、及びオペレーティングシステム(106)を含む。オペレーティングシステム(106)が、1つ以上の消費者プログラム(108)及び1つ以上の供給者プログラム(110)を含む計算装置(100)上のソフトウェア及び/又はファームウェアの動作を管理する。オペレーティングシステム(106)自体も、典型的に、ソフトウェア及び/又はファームウェアで実装される。オペレーティングシステム(106)は、レジストリ情報ストア(104)を管理及び保持していて、プログラム(108)及び(110)が、様々な情報をレジストリ情報ストア(104)にストア可能にし、そこからリトリーブ可能にする。1つ以上の実施形態によって処理される、そのようなレジストリ情報ストア(104)の1つがオペレーティングシステムレジストリである。
[0018]レジストリ情報ストア(104)は、プログラム(108)及び(110)に関する様々なデータ及び設定情報をストアし得、プログラムの多重実行全域で維持される。このデータ又は設定情報は、実行時、プログラム(108)及び(110)によって使用される設定値、一定のイベントに応答して実行される特定のプログラム(110)を識別するためのデータ、プログラム(108)又は(110)が実行している間、表示されるか又は別の方法で提示される制御情報又はその他の情報を記述しているデータなど、を含み得る。1つのレジストリ情報ストア(104)が図1に例示されているが、代替として、異なる2つ以上のレジストリ情報ストア(104)が計算装置(100)に含まれ得る。プログラム(108)及び(110)は、直接か又は代替としてオペレーティングシステム(106)を介し、レジストリ情報ストア(104)にアクセスし得る。
[0019]レジストリ情報ストア(104)に含まれている(前述されたようなレジストリ情報ストア(104)に含まれ得る別の非レジストリ情報データも加えた)ある特定タイプのデータがネイティブレジストリ情報である。供給者プログラム(110)は、実行中、消費者プログラム(108)によって提供される機能性をプログラム(110)が実質的に拡張可能にする様々な機能性を提供し得る。機能性は、異なるタイプのカテゴリーを使用し様々な異なる方法で拡張され得る。供給者プログラム(110)が計算装置(100)にインストールされたとき、プログラム(110)によって提供されるソフトウェア拡張子機能性を通知するネイティブレジストリ情報が、レジストリ情報ストア(104)にストアされる。これらのネイティブレジストリ情報は、供給者プログラム(110)(又は計算装置(100)にプログラム(110)をインストールするインストーラープログラム)によって、直接か又は代替としてオペレーティングシステム(106)を介しレジストリ情報ストア(104)にストアされ得る。
[0020]例えば、供給者プログラム(110)は、それが、特定のファイルフォーマット(例えば、特定のフォーマットのミュージックファイル、特定のフォーマットのイメージファイルなど)を解釈し、管理するための機能性を提供可能なことを示し得る。計算装置(100)に供給者プログラム(110)をインストールする間、プログラム(110)がその特定のファイルフォーマットを解釈し管理するための機能性を提供可能なことを示すレジストリ情報が、ネイティブレジストリ情報フォーマットでレジストリ情報ストア(104)にストアされ得る。供給者プログラム(110)がインストールされた後、消費者プログラム(108)(又は代替としてオペレーティングシステム(106))が、供給者プログラム(110)によって提供されるユーティリティを取得するためにレジストリ情報を起動し得る。消費者プログラム(108)は、オペレーティングシステム(106)を使用し得、ソフトウェア拡張子に依存するタスクを実行し得る。例えば、ウェブブラウザープログラムは、電子メールアドレスへのリンクを表示し得る。ユーザーがリンク上でクリックしたとき、ウェブブラウザープログラムは、電子メールアドレス用のUniform Resource Identifier(URI)(例えば「mailto://name@domain.com」)をオープンするようにオペレーティングシステム(106)に依頼する。それに応答してオペレーティングシステム(106)が「プロトコル」カテゴリーの「mailto」レジストリ情報を起動する。
[0021]消費者プログラム(108)及び供給者プログラム(110)が別個のプログラムとして例示されているが、単一プログラムが供給者プログラム及び消費者プログラム双方であり得ることに留意されたい。加えると、オペレーティングシステム(106)も消費者プログラム及び/又は供給者プログラムであり得ることに留意されたい。
[0022]拡張子レジストリ情報仲介部(102)もレジストリ情報ストア(104)にストアされたネイティブレジストリ情報にアクセスし得、ソフトウェア拡張子管理のために、これらのネイティブレジストリ情報を解析し得る。拡張子レジストリ情報仲介部(102)は、1つ以上のレジストリ情報が従うカテゴリーを記述している構造化拡張子定義(112)を取得する。これらの構造化拡張子定義(112)は、消費者プログラム(108)、開発者、消費者プログラム(108)の配布者、消費者プログラム(108)の代替アクター又は別のエンティティなど、様々なソースから取得され得る。
[0023]構造化拡張子定義(112)それぞれは、それらが消費者プログラム(108)によって起動され得る1つ以上のカテゴリーを記述している。構造化拡張子定義(112)は、拡張子レジストリ情報仲介部(102)によって既知のフォーマット又は言語を使用し実装される。しかしながら、このフォーマット又は言語は、レジストリ情報をストアするときレジストリ情報ストア(104)によって使用されるネイティブなフォーマットと異なる。したがって、仲介部(102)が、構造化拡張子定義(112)で示されている様々なカテゴリーを評価し得、それらのカテゴリーに基づいてレジストリ情報ストア(104)のネイティブレジストリ情報を解析し得る。拡張子レジストリ情報仲介部(102)は、かくして、供給者プログラムによって(又は供給者プログラムの開発者によって)発行されレジストリ情報ストア(104)にストアされたものと、(定義(112)で識別される)消費者プログラム(108)によって予測されたものと、を比較し、ネイティブレジストリ情報が整合しているか否か決定し得る。拡張子レジストリ情報仲介部(102)は、レジストリ情報ストア(104)のネイティブレジストリ情報もカテゴリーに基づいて解析し得、レジストリ情報の目録も生成し得る。
[0024]1つ以上の実施形態において、構造化拡張子定義(112)それぞれは、ソフトウェア拡張子言語に従って書かれた拡張可能マークアップ言語(XML)ドキュメントである。このソフトウェア拡張子言語は、定義(112)が拡張子レジストリ情報仲介部(102)によって使用され得るように構造化拡張子定義(112)が、どのように書かれているか記述している。
[0025]図2は、1つ以上の実施形態による構造化拡張子定義に関するフォーマットの例(200)を示している。フォーマット(200)は、ソフトウェア拡張子言語に関する特定のエレメント及び属性を定義しているソフトウェア拡張子言語の例によって使用されるフォーマットである。フォーマット(200)は、拡張性エレメント(202)、カテゴリーエレメント(204)、ルートエレメント(206)、パラメーターエレメント(208)、制約エレメント(210)、使用エレメント(212)、変化エレメント(214)、マージルートエレメント(216)、及び付随資料(ドキュメンテーション)エレメント(218)を含む。構造化拡張子定義は、1つの拡張性エレメント(202)を含む。拡張性エレメント(202)それぞれは、1つ以上のカテゴリーエレメント(204)を含み得る。カテゴリーエレメント(204)それぞれは、0個以上のルートエレメント(206)、1つ以上のパラメーターエレメント(208)、0個以上の制約エレメント(210)、及び0個以上のマージルートエレメント(216)を含み得る。拡張性エレメント(202)は、0個以上の使用エレメント(212)、0個以上の変化エレメント(214)、及び0個以上のドキュメンテーションエレメント(218)も含み得る。実施形態において、構造化拡張子定義はXMLドキュメントであって、これらのエレメント(202〜218)がタグとしても参照され得ることを十分に理解されよう。
[0026]拡張性エレメント(202)は、1つ以上のカテゴリー(典型的に、相互に論理関係がある1つ以上のカテゴリー)に分類されるか又は一緒に集められた集約エレメントである。エレメント(202)それぞれは、エレメント(202)を互換性があるように設計されているプログラムの指標、特定のプログラム又はエレメント(202)を互換性があるように設計されているオペレーティングシステムバージョンの範囲など、様々な属性も定義し得る。
[0027]カテゴリーエレメント(204)は、レジストリ情報の内容及びネイティブレジストリ情報が、レジストリ情報ストアにどのように形成されているか定義している。カテゴリーエレメント(204)は、レジストリ情報毎にデータを有しているか、それがどこにストアされているか、それがどのタイプであり得るか定義する1つ以上のパラメーターエレメントを含んでいる。カテゴリーエレメント(204)それぞれも様々な属性を含み得る。表Iは、カテゴリーエレメントに含まれ得る属性の例を含んでいる。表Iの属性は例であって、代替として別の属性がカテゴリーエレメントに含まれ、及び/又は表Iの1つ以上の属性がカテゴリーエレメントから除外され得ることを十分に理解されよう。加えると(この明細書において、ここと別のところで論述される)様々な属性は、属性として含まれるというよりもむしろ、一緒に入れ子にされ得、子供のタグエレメントとして含まれ得る。
Figure 2012529711
[0028]ルートエレメント(206)は、ストア(例えば図1のレジストリ情報ストア(104))内の場所の指標であって、レジストリ情報ストア(104)においてカテゴリーに関するレジストリ情報が見出され得る。レジストリ情報ストア(104)内部のレジストリ情報ごとのフォーマットが、ネイティブレジストリ情報ごとに呼び出される。ルートエレメント(206)は、例えば、レジストリ内の場所を識別するパス名であって、このカテゴリーに関するネイティブレジストリ情報がストアされている。1つ以上の実施形態において、単一のネイティブレジストリ情報が、レジストリ情報ストア内の1つ以上の複数のネームスペースに存在し得、ストアそれぞれが、0個以上のレジストリ情報パラメーターを提供している。この場合、マージルートエレメント(216)が、レジストリ情報を形成するために協働する一連のネームスペースを識別し得る。
[0029]パラメーターエレメント(208)は、カテゴリーパラメーターである。パラメーターエレメント(208)は、特定のカテゴリーパラメーターと、対応するレジストリ情報パラメーターが従うべきデータタイプと、レジストリ情報パラメーターとして許可されるデータに対する付加的な制約と、及びネイティブレジストリ情報からこのパラメーターをどのように取得するかに関する命令と、を識別するデータを含む。1つ以上の実施形態において、省略されたとき、これらの命令を推論するためのルールが使用され得る。異なるパラメーターエレメントは、カテゴリーのレジストリ情報が含み得るデータタイプを識別する。例えば、ツールバーボタンカテゴリーは、「リソース」タイプのbuttonIconに関するパラメーターと、「記述」タイプのbuttonTextパラメーターと、を有し得る。ツールバーボタンカテゴリーに関するレジストリ情報はその後、「myIcon.ico」のbuttonIcon及び「ここをクリック」のbuttonTextを含むことが可能になる。
[0030]パラメーターエレメント(208)は、パラメーターを記述している名前属性と、エレメントの使用が任意であるか否か示している使用属性と、を含む。パラメーターの使用が任意である場合、このパラメーターはレジストリ情報から省略され得る。パラメーターの使用が任意でない場合、レジストリ情報を利用可能にするためにレジストリ情報は、カテゴリーパラメーターに従うレジストリ情報パラメーターを有している必要がある。パラメーターエレメント(208)は任意に、レジストリ情報パラメーターに関するデフォルト値も含み得る。
[0031]パラメーターエレメント(208)それぞれは、レジストリ情報パラメーターが解釈される方法である1つのパラメータータイプを含む。表IIは、パラメーターエレメントに含まれ得るパラメータータイプの例を含む。表IIにおけるパラメータータイプは例であって、代替として別のパラメータータイプがパラメーターエレメントに含まれ得ることを十分に理解されよう。
Figure 2012529711
[0032]制約エレメント(210)は、レジストリ情報パラメーターが、カテゴリーに関し利用可能なレジストリ情報になるために従うべき1つ以上の追加的ルールの集まりである。制約エレメント(210)は、制約を記述している名前属性、制約の深刻さを示している深刻度属性、及び制約ルールを示しているルールエレメントを含んでいる。制約の深刻度は、制約がどのくらい重要か示している。ルールが、値を製造するためのレジストリ情報パラメーター及び別のルールに対し作用する。制約ルールは、レジストリ情報が利用可能になるための真の値を製造する。これらのルール又は制約違反は、レジストリ情報ストア(104)内のネイティブレジストリ情報を解析したとき(又はレジストリ情報をストア(104)に挿入したときなど別の時間に)より詳細に後述されるログに記録され得る。この記録によって管理者又は他のユーザーは、彼らがこれらの違反に応答して、適当と思われる適切な行動を順次、実行可能になる。
[0033]エレメント(212)の使用によって、別のページの定義(例えば別の構造化拡張子定義)への参照が実行可能になる。エレメントの使用は、別の定義を含むページを識別している題目の子供エレメントを含む。エレメントの使用は、(例えば、この構造化拡張子定義に含まれている)このページ内で参照され得る1つ以上のカテゴリータグも子供エレメントとして含む。
[0034]変化エレメント(214)によって特定のカテゴリーが優先されることが可能になる。変化エレメントは、優先されたカテゴリーを識別する属性と、レジストリ情報ごとのデータを定義している1つ以上のパラメーターエレメントと、を含んでいて、それは、ストアされている場所、そのタイプ(カテゴリーエレメント(204)と類似しているタイプ)を有し得る。
[0035]マージルートエレメント(216)によって、レジストリ情報ストア内のネームスペース毎の複製が可能になる。マージルートエレメント(216)によって、複数のネームスペースは、レジストリ情報を形成するために結合又はマージされることが可能になる。マージルートエレメント(216)は、結合された複数のネームスペースを識別する複数の子供エレメントを含む。
[0036] ドキュメンテーションエレメント(218)は、親エレメントの子供であってその親エレメントを記述していて、様々なエレメント(202〜216)の子供であり得る。例えば、ドキュメンテーションエレメントは、カテゴリーの目的をカテゴリーエレメント(204)の子供として記述している。別の例として、ドキュメンテーションエレメントは、パラメーターの目的をパラメーターエレメント(208)の子供として記述している。更に別の例として、ドキュメンテーションエレメントは、制約によってチェックされる目的/ものを制約エレメント(210)の子供として記述している。
[0037]図1に戻ると、拡張子レジストリ情報仲介部(102)、レジストリ情報ストア(104)、及び1つ以上の構造化拡張子定義(112)が、同一の計算装置(100)の一部であるように例示されているが、代替として別個の装置に実装され得ることに留意されたい。例えば、拡張子レジストリ情報仲介部(102)が一計算装置に実装され得るが一方、レジストリ情報ストア(104)及びオペレーティングシステム(106)は別の計算装置に実装される。この例において、構造化拡張子定義(112)は、これらの計算装置か又は代替として更に別の計算装置どちらか一方に存在し得る。別の例として、レジストリ情報ストア(104)は、拡張子レジストリ情報仲介部(102)によってアクセスされる仮想イメージとして実装され得るか、又はレジストリ情報ストア(104)は、ある動作が実行された場合の実際のレジストリ情報ストアに対する結果として実装され得る。
[0038]構造化拡張子定義(112)は、拡張子レジストリ情報仲介部(102)によって様々な異なる方法で取得され得る。1つ以上の実施形態において、仲介部(102)が実行可能コードにコンパイルされたとき、構造化拡張子定義(112)が拡張子レジストリ情報仲介部(102)に組み込まれる静的発見技法が使用される。上記の実施形態において、構造化拡張子定義(112)が仲介部(102)に組み込まれ、新しい構造化拡張子定義(112)が利用可能になるたびに仲介部(102)が再コンパイルされる。
[0039]別の実施形態において、拡張子レジストリ情報仲介部(102)が、直接か又はデータソースを介し特定のネームスペースにアクセスし、構造化拡張子定義(112)がどこに位置付けられているか識別する動的発見技法が使用され得る。このネームスペースは、それ自体、前の段落に記述した技法を使用して発見されるカテゴリールートか又は代替として別のフォーマットを取り得る。動作中、拡張子レジストリ情報仲介部(102)が、この特定のネームスペースにアクセスし、構造化拡張子定義(112)がどこに位置付けられているか識別し、その後、識別された場所から構造化拡張子定義(112)を取得する。第2のネームスペースを識別する第1のネームスペースにアクセスし、第3のネームスペースを識別するように、構造化拡張子定義(112)が位置付けられているネームスペースがアクセスされるまで仲介部(102)が、類似の方法でネームスペースの複数のレイヤ又はレベルにもアクセスし得ることを十分に理解されよう。上記の実施形態において、構造化拡張子定義(112)が実行中に仲介部(102)によって取得されるため、仲介部(102)は、新しい構造化拡張子定義(112)が利用可能になるたびに再コンパイルされる必要はない。
[0040]加えると、1つ以上の実施形態において、拡張子レジストリ情報仲介部(102)とレジストリ情報ストア(104)との間のインターフェースとして作動するインターフェースモジュールが含まれる。この(データソースとしても参照される)インターフェースモジュールが、拡張子レジストリ情報仲介部(102)の一部として、レジストリ情報ストア(104)の一部として、又は代替として別個のモジュール若しくはコンポーネントとして、含まれ得る。このインターフェースモジュールは、拡張子レジストリ情報仲介部(102)から一般的又は均質な形式のコマンド又はリクエストを受信し、これらコマンド又はリクエストをレジストリ情報ストア(104)に特定の形式のコマンド又はリクエストへ変換するように構成される。異なるレジストリ情報ストア(104)は、異なる方法で実装され得、及び/又は異なる通信タイプを支援する。異なるこれらのレジストリ情報ストア(104)と通信するための別のインターフェースモジュールが生成され得、適切なインターフェースモジュールを単に使用することによって、異なるこれらのレジストリ情報ストアを有している同一の拡張子レジストリ情報仲介部(102)が使用可能になる。
[0041]図3は、1つ以上の実施形態によるソフトウェア拡張子解析を実装するためのプロセスの例(300)を示す流れ図である。プロセス(300)は、ソフトウェア、ファームウェア、ハードウェア、又はその組み合わせによって実装され得る図1の仲介部(102)のような拡張子レジストリ情報仲介部によって実行される。プロセス(300)は、ソフトウェア拡張子解析を実装するためのプロセスの例であって、更に別の図面を用いて、ソフトウェア拡張子解析を実装する論述が本明細書に含まれる。
[0042]プロセス(300)において、ソフトウェア拡張子カテゴリーに対応する構造化拡張子定義が取得される(動作302)。前述したように、これらの定義は、以下の動的及び/又は静的発見技法を含む様々な異なる方法で取得され得る。
[0043]レジストリ情報ストア内のネイティブレジストリ情報が識別され(動作304)、アクセスされる(動作306)。前述したように、このレジストリ情報ストアは、同一の装置又はシステム又は代替として別の装置若しくはシステム上にプロセス(300)を実装する拡張子レジストリ情報仲介部として実装され得る。ネイティブレジストリ情報、ソフトウェア状態、ソフトウェア設定値など、を含む様々な異なる情報が、レジストリ情報ストアに含まれ得る。動作(304)において、ネイティブレジストリ情報であるレジストリ情報ストア内の特定の情報が、様々な異なる方法で識別され得る。ネイティブレジストリ情報が識別され得る一方法例が、図7を参照してより詳細に後述される。
[0044]動作(306)でアクセスされたネイティブレジストリ情報はその後、本システムのソフトウェア拡張子を管理するときに解析される(動作308)。ネイティブレジストリ情報が管理されるこのシステムは、動作(306)でアクセスされるレジストリ情報ストアが実装されているシステムであって、プロセス(300)を実装する拡張子レジストリ情報仲介部を実装している同一システムであり得る(がしかし同一である必要はない)。この解析は、問題検出及び/又は目録識別を含む様々な異なる形式を取り得る。以下、図4を参照した問題検出及び目録識別分析の更なる論述が含まれている。
[0045]動作(308)における解析に加えてレジストリ情報ストア上の動作又はレジストリ情報ストアへの修正も実行され得ることに留意されたい。例えば、ソフトウェア拡張子レジストリ情報がレジストリ情報ストアに挿入され得、ソフトウェア拡張子レジストリ情報がストアから除去され得る。これらの挿入及び除去プロセスは、図5及び図6を参照してより詳細に後述される。これら挿入及び除去プロセスは、図3の動作(302〜308)の追加として実行され得るか又は代替として動作(302〜308)の1つ以上と無関係に実行され得る。例えば、挿入又は除去プロセスは、動作(302〜308)が実行された後、実行され得る。別の例として、動作(304又は308)が(場合によっては動作(306)も)実行されずに挿入又は除去プロセスが実行され得る。
[0046]図4は、1つ以上の実施形態によるソフトウェア拡張子を解析するためのプロセスの例(400)を示している流れ図である。プロセス(400)は、ソフトウェア、ファームウェア、ハードウェア、又はその組み合わせによって実装され得る図1の仲介部(102)のような拡張子レジストリ情報仲介部によって実行される。プロセス(400)は、ソフトウェア拡張子を解析するためのプロセスの例であって、異なる図面を参照したソフトウェア拡張子を解析する更なる論述が本明細書に含まれている。プロセス(400)は、更に図1を参照して論述される。
[0047]プロセス(400)において、ネームスペースリストが生成される(動作402)。ネームスペースリストは、カテゴリー定義の提示がネイティブレジストリ情報のネームスペースであり得るネームスペースに関する一覧である。これらカテゴリー定義が、構造化拡張子定義(112)から取得される。動作(402)で生成されるネームスペースリストは、構造化拡張子定義(112)で識別されたネームスペースすべての一覧か、又は定義(112)で識別されたネームスペースすべてのサブセットであり得る。1つ以上の実施形態おいて、カテゴリーの属性「aggregated」が真に設定されると、ネームスペースリスト内のネームスペースは、カテゴリー内のそれらの子供になる。例えば、ルートはカテゴリーのレジストリ情報が見つかる場所であって、レジストリ情報が集約された場合、そのネームスペースのエレメントは、1つのレジストリ情報が見つかる場所である。
[0048]ネームスペースリストからネームスペースが選択される(動作404)。ネームスペースは、ネームスペースリスト内のネームスペースの順番、アルファベット順、ランダムなど、に従う様々な異なる規準に基づいて選択され得る。
[0049]選択されたネームスペースがネイティブレジストリ情報であり得る1つ以上のカテゴリーが識別される(動作406)。これらのカテゴリーが様々な異なる方法で識別され得る。カテゴリーが識別され得る一方法例が、図7を参照してより詳細に後述される。
[0050]識別されたカテゴリーのうち1つが選択される(動作408)。カテゴリーは、動作(406)で識別されたカテゴリーの順番、アルファベット順、ランダムなど、に従う様々な異なる規準に基づいて選択され得る。
[0051]その後、識別されたカテゴリーのデータからレジストリ情報を生成するための試みが実行される(動作410)。この試みは、レジストリ情報ストアから識別されたカテゴリーのデータと構造化拡張子定義(112)とを比較することと、識別されたカテゴリーのデータがどのくらいよく構造化拡張子定義(112)と一致しているか調べることと、を含む。例えば、この試みは、拡張子定義において義務的であるように識別された特定のデータがカテゴリーデータに含まれているか否か、拡張子定義において任意であるように識別された特定のデータがカテゴリーデータに含まれるか否かなど、を決定することを含み得る。
[0052]動作(410)の試みに基づいて問題ログも更新される(動作412)。この問題ログは、カテゴリー定義が、1つ以上の拡張子定義とどのくらいよく一致するかを示しているリストである。このログは、例えば、拡張子定義において義務的であるように識別されたデータが、カテゴリーデータからなくなっていることと、カテゴリーパラメーターが、拡張子定義において識別された特定のカテゴリーパラメータータイプに従っていないことと、カテゴリーデータが、拡張子定義において識別された特定の制約に失敗することと、などを示し得る。
[0053]加えると、動作(412)において更新される問題ログは、拡張子定義に基づいて予測されるが、カテゴリーデータにおいて見つからないネームスペース構成要素と、カテゴリーデータにおいて見つかるが、カテゴリー定義において定義されていないネームスペース構成要素と、の間の相関関係に関する指標を含み得る。この相関関係は、レジストリ情報ストア(104)に表されたレジストリ情報における、例えば、小さな問題(例えば誤字)を識別することを支援し得る。例えば、定義(112)に従って予測されるネームスペース構成要素をレジストリ情報ストアのデータのネームスペース構成要素へ変換するときのコスト(又は逆も同様)を決定するための様々な異なる従来技法のいくつかを使用し、定義(112)がレジストリ情報ストア(104)内のカテゴリーデータと比較され得る。文字又は空白の除去、文字の交換、文字の挿入など、あるものを別のものに変換するときのコストを生成するような上記技法は、一定の動作に異なる重みを付け得る。上記技法を使用し、また、構造化拡張子定義(112)において識別されたネームスペース構成要素の文字列のサイズを、レジストリ情報ストアのネームスペース構成要素の文字列のサイズへ変換する最大可能性コスト(又は逆も同様)も決定される。定義(112)に従って予測されたネームスペース構成要素を、レジストリ情報ストア(104)内のあるサイズの文字列を別のサイズの文字列へ変換する最大可能性コストによって分割された非属性化データネームスペース構成要素へ変換するコストである値がその後、生成される。生成されるこの値が小さければ小さいほど、予測されるネームスペース構成要素及び非属性化ネームスペース構成要素がお互いにより近似にある。
[0054]生成されるこの値が閾値よりも小さい場合、定義(112)において識別されるネームスペース構成要素及びレジストリ情報ストア(104)内のネームスペース構成要素は、ネームスペース構成要素が、1つ以上のレジストリ情報パラメーターに対するパスの一部であることが決定されるのに十分に近いことが決定され得る。この決定に関する指標が問題ログ(412)に含まれている。
[0055]未定義構成要素リストも更新される(動作414)。この未定義構成要素リストは、拡張子定義(112)の中で見出されるネームスペース構成要素リストであるが、動作(406)で識別されたカテゴリーによってどこにも定義されていない。
[0056]動作(408)でまだ選択されていない、動作(406)で識別された更なるカテゴリーが存在するか否かに関するチェックがその後、動作(416)において実行される。更なるカテゴリーが識別されているが、まだ選択されていない場合、それらのカテゴリーのうち1つが選択される(動作408)。
[0057]しかしながら、動作(406)で識別されたカテゴリーそれぞれが、動作(408)で選択されていた場合、拡張子定義に基づいて識別されたカテゴリーに完全に適合したレジストリ情報が選択される(動作418)。この完全な適合は、動作(410)の試みに基づいている。完全な適合は、動作(412)で識別された問題ログ内に含まれている1つ以上の問題の深刻さ、動作(412)で識別された問題ログに含まれ得る問題の数、場合により動作(412)において問題ログに含まれている問題の数、動作(414)において未定義構成要素リストに含まれているネームスペース構成要素数など、様々な異なる規準に基づいて決定され得る。これらの規準は、動作(412)で識別された問題ログ内の最小の深刻な問題を有するカテゴリー、動作(412)で識別された問題ログ内の最小数の問題を有するカテゴリー、動作(412)で識別された問題ログ内のネームスペース構成要素への密接な相関関係を有するカテゴリー、などを選択する様々な異なる方法で使用され得る。
[0058]その後、動作(420)において、動作(404)でまだ選択されていない更なるネームスペースが、動作(402)のネームスペースリスト内に存在しているか否かに関するチェックが実行される。まだ選択されていない更なるネームスペースが、ネームスペースリスト内に存在している場合、それらのネームスペースのうち1つが選択される(動作404)。
[0059]しかしながら、ネームスペースリスト内の動作(402)で生成されたネームスペースそれぞれが、動作(404)で選択されていた場合、その結果が返却される(動作422)。これらの結果は、動作(418)で選択されたレジストリ情報を返却すること、動作(412)で更新された問題ログのすべて又は一部を返却すること、動作(414)で更新された未定義構成要素リストのすべて又は一部を返却することなど、様々な異なる形式を取り得る。
[0060]目録の識別及び問題の検出を含む様々な異なるレジストリ情報ストア解析を提供するために、プロセス(400)が使用され得る。例えば、動作(418)で選択されたレジストリ情報は、動作(422)で返却され得、実質上、動作(422)において返却されるレジストリ情報ストア目録をもたらす。別の例として、単一のネームスペースは、動作(402)において単一のネームスペースを有するネームスペースリストを生成することによって解析され得る。
[0061]プロセス(400)は、レジストリ情報ストア内の様々な問題の検出も支援し得る。例えば、動作(418)で選択されたカテゴリー(又は代替として複数のカテゴリー)に関して動作(412)で更新された問題ログに含まれている問題が、動作(422)において、レジストリ情報ストアに関するエラーレポートとして返却され得る。別の例として、動作(402)において、単一のネームスペースが、ネームスペースリストを生成するときに使用され得、動作(418)において選択されたカテゴリー(又は代わりに複数のカテゴリー)に関して動作(412)において更新された問題ログに含まれている問題が動作(422)において、単一のレジストリ情報に関するエラーレポートとして返却され得る。
[0062]動作(422)において返却される結果もプロセス(400)及び/又は別のコンポーネント又はモジュールを実装する拡張子レジストリ情報仲介部によって任意に表示され得るか又は代替として提示され得る。例えば、問題がプロセス(400)によって検出されたか否かに関する通知が、拡張子レジストリ情報仲介部(102)によって表示され得るか若しくは代替として提示され得るか又は記録され得る。例えば、特定のネイティブレジストリ情報を用いた問題が検出されたという指標が、計算装置(100)のユーザーに表示され得る。
[0063]加えると、また、拡張子レジストリ情報仲介部(102)は、検出された問題を表示するか又は代替として報告するとき、構造化拡張子定義が書かれているソフトウェア拡張子言語も活用し得る。解析は、レジストリ情報ストアに保持されている1つ以上のネイティブレジストリ情報のカテゴリーに対応する複数の構造化拡張子定義の少なくとも一部に基づいている。動作(410)及び(412)において前述したように、構造化拡張子定義に記述されている期待がレジストリ情報によって満たされない状況が識別され、問題ログに含まれる。これらの差が、レジストリ情報とともに検出された問題としてユーザーに表示され得る。加えると、構造化拡張子定義は、異なる問題に関連付けされた異なるメッセージ及び/又は注釈(例えば、拡張子定義において義務的として識別されたデータが、カテゴリーデータからなくなっている、カテゴリーパラメーターが、拡張子定義において識別された特定のカテゴリーパラメータータイプに従っていない、カテゴリーデータが、拡張子定義において識別された特定の制約を履行していないなど)を含み得る。レジストリ情報と構造化拡張子定義との間の差に基づいて、これら1つ以上の異なるメッセージ及び/又は注釈が、識別され得、表示され得、検出された問題が、ユーザーによってより容易に理解される方法で表示されることを可能にする。
[0064]図5は、1つ以上の実施形態によるレジストリ情報ストアにソフトウェア拡張子レジストリ情報を挿入するためのプロセスの例(500)を例示している流れ図である。プロセス(500)が、ソフトウェア、ファームウェア、ハードウェア、又はその組み合わせで実装され得る図1の仲介部(102)のような拡張子レジストリ情報仲介部によって実行される。プロセス(500)は、ソフトウェア拡張子レジストリ情報をレジストリ情報ストアに挿入するためのプロセスの例である。本明細書の異なる図面を参照したソフトウェア拡張子レジストリ情報をレジストリ情報ストアに挿入する更なる論述が含まれている。プロセス(500)は、更に図1を参照して論述される。
[0065]プロセス(500)において、レジストリ情報が取得される(動作502)。このレジストリ情報は、様々な異なる方法で取得され得る。1つ以上の実施形態において、レジストリ情報は、(例えば、別の装置又はシステム上で図4のプロセス(400)を実行し)別の機器又はシステム上のレジストリ情報ストアを解析した結果として取得されるレジストリ情報であり得る。代替として、レジストリ情報が別の方法で取得され得る。例えば、供給者プログラム(110)又は供給者に代わる別のアクターが、特定のタイプのファイルを処理するための供給者プログラム(110)の能力を宣言する1つ以上のレジストリ情報を拡張子レジストリ情報仲介部(102)に提示し得る。これらのレジストリ情報は、供給者プログラム(110)が実行し得る動作、供給者プログラム(110)に動作を実行するためにどのようにリクエストするかなど、を定義している。
[0066]レジストリ情報カテゴリーからルートが選択される(動作504)。このルートは、レジストリ情報に関するネームスペースのルートである。加えると、集約カテゴリーに関しては(例えば、カテゴリーの属性「aggregated」が真に設定されたとき)レジストリ情報名も選択される。
[0067]レジストリ情報からレジストリ情報パラメーターが選択される(動作506)。レジストリ情報パラメーターは、レジストリ情報内のレジストリ情報パラメーターの順番、レジストリ情報パラメータータイプ、アルファベット順、ランダムなど、に従う様々な異なる規準に基づいて選択され得る。
[0068]選択されたレジストリ情報パラメーターに関するデータは、ネイティブレジストリ情報フォーマットに適切であるように修正される(動作508)。プロセス(500)を実装している拡張子レジストリ情報仲介部は、ネイティブレジストリ情報フォーマットと、動作(602)で取得されたレジストリ情報によって使用されるフォーマットからネイティブレジストリ情報へデータをどのように変換する(又は方法を記述している情報へのアクセスを有する)ことと、を知っている。これは、例えば、ネームスペース構成要素を追加すること又は変更すること、ある文字を別のタイプ(例えば「\」文字、「|」文字)への変換することなど、を含み得る。
[0069]修正されたデータが、ネイティブレジストリ情報フォーマットに従って、1つ以上のネームスペースに書き込まれる(動作510)。(プロセス(500)を実装している拡張子レジストリ情報仲介部に知られているか又はアクセス可能な)ネイティブレジストリ情報フォーマットは、動作(510)においてデータが、その1つの場所に書き込まれる場合、データが一箇所に書かれることを示し得る。代替として、ネイティブレジストリ情報フォーマットは、動作(510)においてデータが、それら複数の場所に書き込まれる場合、データが複数の場所に書かれることを示し得る。
[0070]その後、動作(512)において、動作(506)でまだ選択されていないレジストリ情報の更なるレジストリ情報パラメーターが存在するか否かに関するチェックが実行される。まだ選択されていない更なるレジストリ情報パラメーターが存在する場合、それらのレジストリ情報パラメーターのうち1つが選択される(動作506)。
[0071]しかしながら動作(506)おいて、それぞれレジストリ情報のレジストリ情報パラメーターが選択された場合、プロセス(500)を終了する(動作514)。かくして、プロセス(500)を実装している拡張子レジストリ情報仲介部は、レジストリ情報に関するレジストリ情報パラメーターそれぞれをネイティブレジストリ情報フォーマットでレジストリ情報ストア(104)にストアする。
[0072]図1に戻ると、システム拡張子レジストリ情報の除去は、レジストリ情報と一致する、レジストリ情報ストア(104)にストアされているネイティブレジストリ情報又はそのパラメーターを参照している。例えば、供給者プログラム(110)が、消費者プログラム(108)を拡張するためのその機能通知を中止したい場合(例えば、供給者プログラム(110)がアンインストールされている場合)、供給者プログラム(110)又は供給者プログラムの別の代替アクターが、レジストリ情報ストア(104)から除去されるようなレジストリ情報をソフトウェア拡張仲介部に提供し得る。ソフトウェア拡張仲介部はその後、レジストリ情報ストア内のネイティブレジストリ情報を含むデータをレジストリ情報ストア(104)から除去する。
[0073]1つ以上のレジストリ情報ストアに常駐しているレジストリ情報を用いた1つ以上のカテゴリーにおいて、ネイティブレジストリ情報は不明瞭か又は相互に優先し得る。1つ以上の実施形態において、除去アルゴリズムは、ストアからそのデータを除去する前に、レジストリ情報パラメーターのデータが、レジストリ情報ストア(104)内の対応するデータと一致する(例えば等価である)ことをレジストリ情報パラメーターごとに検証することによって、この挙動を補償し得る。
[0074]図6は、1つ以上の実施形態によるレジストリ情報ストアからソフトウェア拡張子レジストリ情報を除去するためのプロセスの例(600)を例示している流れ図である。プロセス(600)は、ソフトウェア、ファームウェア、ハードウェア、又はその組み合わせで実装され得る図1の仲介部(102)のような拡張子レジストリ情報仲介部によって実行される。プロセス(600)は、レジストリ情報ストアからソフトウェア拡張子レジストリ情報を除去するためのプロセスの例であって、本明細書の別の図面を参照したレジストリ情報ストアからソフトウェア拡張子レジストリ情報を除去する更なる論述が含まれている。プロセス(600)は、更に図1の参照を用いて論述される。
[0075]プロセス(600)において、レジストリ情報が取得される(動作602)。このレジストリ情報は、消費者プログラム(108)を拡張するために、その機能通知を供給者プログラム(110)から停止するなど、様々な異なる方法で取得され得る。
[0076]レジストリ情報カテゴリーからルートが選択される(動作604)。このルートは、レジストリ情報に関するネームスペースルートである。
[0077]レジストリ情報パラメーターが、レジストリ情報から選択される(動作606)。レジストリ情報パラメーターは、レジストリ情報内のレジストリ情報パラメーターの順番、レジストリ情報パラメータータイプ、アルファベット順、ランダムなど、に従う様々な異なる規準に基づいて選択され得る。
[0078]選択されたレジストリ情報パラメーターのデータが、ネイティブレジストリ情報フォーマットに適切であるように修正される(動作608)。図5の動作(508)を参照し前述したように、プロセス(600)を実装している拡張子レジストリ情報仲介部は、ネイティブレジストリ情報フォーマット及び動作(602)で取得されたデータをレジストリ情報によって使用されるフォーマットからネイティブレジストリ情報へ変換する(又は方法を記述している情報へのアクセスを有する)方法を知っている。
[0079]データは、挿入動作がデータを書き込んだ1つ以上のネームスペースからも読み出される(動作610)。レジストリ情報がレジストリ情報ストアに挿入されていた場合、これらのネームスペースは、例えば、修正されたデータが図5の動作(510)でレジストリ情報に関して書き込まれる1つ以上のネームスペースである。
[0080]動作(608)から修正されたデータが動作(610)で読み出されたデータと比較され(動作612)、(612)で比較されたデータが同一である否かに関する決定が実行される(動作614)。比較されたデータが同一でない場合、動作(616)において、動作(606)でレジストリ情報がまだ選択されていない、更なるレジストリ情報パラメーターがあるか否かに関するチェックが実行される。まだ選択されていない更なるレジストリ情報パラメーターがある場合、それらのレジストリ情報パラメーターのうち1つが選択される(動作606)。
[0081]しかしながら、動作(606)でレジストリ情報のレジストリ情報パラメーターそれぞれが選択されていた場合、プロセス(600)を終了する(動作618)。
[0082]動作(614)に戻ると、比較されたデータが同一であった場合、1つ以上のネームスペースから読み出されたデータが消去される(動作620)。動作(608)から修正されたデータと同一である動作(610)で読み出されたデータが、動作(620)で消去される場合に限って、動作(610)でネームスペースから読み出されたネームスペースすべてよりも少ないデータが、動作(608)から修正されたデータと同一であり得ることを十分に理解されよう。かくして、プロセス(600)を実装している拡張子レジストリ情報仲介部が、レジストリ情報ストア(104)内のレジストリ情報に関するレジストリ情報パラメーターそれぞれを消去又は代替として除去する。
[0083]プロセス(600)は、ネイティブレジストリ情報フォーマットに変換されるレジストリ情報パラメーターを参照して説明される。代替として、動作(610)で読み出されたレジストリ情報パラメーターは、動作(602)で取得されたレジストリ情報によって使用されるフォーマットへ変換され得る。
[0084]1つ以上の実施形態において、本明細書に論述されるソフトウェア拡張子解析の様々な態様はトライ木構造を利用し得る。様々な異なるトライ木構造は、本明細書に論述されたソフトウェア拡張子解析を用いて使用され得る。加えると、従来の様々な別の木構造が代替として使用され得る。
[0085]1つ以上の態様に従って特定の場所に表されるレジストリ情報カテゴリーが、トライ木構造に基づいて決定される。通常、トライ木構造は、構造化拡張子定義に記述されたネームスペース及び制限から生成される。トライ木のノードそれぞれは、親よりも次第により特化したネームスペース構成要素を含んでいて、ネイティブレジストリ情報が、そのネームスペースか又はある状態においてネームスペースの直接の子供として見つかる0個以上のカテゴリーを示し得る。それぞれのカテゴリーは、特定のカテゴリーのネイティブレジストリ情報になるために満たされるべき、ネームスペースに対する0個以上の付加的制限を有する。ストア内のレジストリ情報データのカテゴリーを決定しようとするとき、(もしあれば)トライ木構造の1つ以上のこれらのノードがチェックされ、ストア内のデータを正確に記述し得る一連のカテゴリーをリトリーブする。ストア内のデータがその後、これらのカテゴリーそれぞれと比較され、データをレジストリ情報パラメーターとして解釈することを試みる。ストア内のデータがレジストリ情報パラメーターとして解釈され得る精度が使用され、データを0個又は1個のカテゴリーとして解釈するよう発見的に選択する。このプロセスは、より詳細に後述される。
[0086]図7は、1つ以上の実施形態による、特定の場所に表されたレジストリ情報カテゴリーを識別するためのプロセスの例(700)を示している流れ図である。プロセス(700)は、図1の仲介部(102)のようなソフトウェア拡張仲介部によって実行され、図1のストア(104)のようなレジストリ情報ストア内のネイティブレジストリ情報を解析する。プロセス(700)は、ソフトウェア、ファームウェア、ハードウェア、又はその組み合わせで実装され得る。プロセス(700)は、レジストリ情報ストア(104)内部の一様でないデータの収集部にストアされているネイティブレジストリ情報を識別し抽出するためのプロセスの例であって、本明細書の別の図面を参照したレジストリ情報ストア内にストアされたデータからレジストリ情報を抽出する更なる論述が含まれる。
[0087]プロセス(700)の例において、レジストリ情報ストアは、1つ以上のキー及び値としてレジストリ内に実装されている。レジストリは、1つ以上のキーが、別のキー内部にストアされ得る階層構造を含む。加えると、0個以上の値がキーそれぞれに含まれ得、これらの値は、(例えば、数字又はテキスト)タイプを有し得、データを有し得る。ネイティブレジストリ情報は、単一の値として又はキーの内容全体として存在し得る。場合によっては、レジストリ情報が、1つのキーよりも優先する内容結合で存在することもある。単一のレジストリ情報パラメーターが、レジストリ内の0個以上のキーへマッピングされる。レジストリ内の場所はパス名によって識別され、典型的に、前もって定められた一連のルートキーの1つで始まる、レジストリ階層構造を介した1つ以上のキー名を含んでいて、特定のキーは名前値で終了するパス名値に達する。パスの構成要素は、区切り文字で分割されていて、1つ以上の実施形態において、この区切り文字は「\」であるが、代替として別の文字が使用され得る。
[0088]プロセス(700)において、特定のネームスペースが表し得る、レジストリ情報の既知の一連のカテゴリーが生成される。構造化拡張子定義(例えば図1の定義(112))が読み出され(動作702)、使用され得、トライ木構造を生成する(動作704)。構造化拡張子定義は、この例において、レジストリ情報ストア内のネイティブレジストリ情報がストアされているレジストリ場所に関するネームスペースを識別する。これらのネームスペースは、レジストリの最初の子供がルートキーであり、1つ以上の別のキーを介し続くトライ木を生成するために使用され得る。トライ木は、フォルダーそれぞれに関し異なるノードをパス名に含んでいる。そのようなトライ木の例が、図8を参照してより詳細に後述される。
[0089]カテゴリーがトライ木のノードそれぞれに関連付けられていて、カテゴリーに対するルートのネームスペースを表している。単一ノードが0個以上のカテゴリーとの関連付けを保持していて、この関連付けのレコードが(例えば、プロセス(700)を実装しているモジュールによって)保持され得る。したがって、トライ木の特定のノードを考えると、そのノードによって表されるネームスペースに関連付けられている0個以上のカテゴリーは容易に識別され得ない。より詳細に後述されるように、この関連付けによって、それらのネイティブレジストリ情報のネームスペースに対する付加的なカテゴリー場所の制約がネームスペースによって容易に識別され、識別プロセス(700)の一部として使用されることを可能になる。
[0090]ネームスペースが可能性のあるレジストリ情報を表し得るカテゴリーを決定するためのリクエストが受信される(動作706)。上記のリクエストは、ネームスペースを解釈するためのリクエストとしても参照される。特定の場所はパス名によって識別される。このリクエストは典型的に、プロセス(700)を実装している同一装置において実行している別のコンポーネント又はモジュールから受信されるが、代替として別の装置から受信され得る。
[0091]リクエストに応答してネームスペースが、その特定の構成要素へ徐々に分解される(動作708)。例えば、ネームスペースが、HKLM¥Software¥Classes¥の場合、ネームスペースが、「HKLM」、「Software」、「Classes」の構成要素に分解される。
[0092](動作708)から提供された最初の構成要素が現在の構成要素として使用され、トライ木のルートが現在のノードとして使用される(動作710)。動作(710)において、例えば、ネームスペースがHKLM¥Software¥Classes¥の場合、現在の構成要素は「HKLM」である。この時点において、現在、結果として得られたネームスペースも結果として得られたカテゴリーも存在しない(例えば、結果として得られたネームスペース及び結果として得られたカテゴリーは、それらがまだ識別されていないことを示す空の値又は別のある値に設定される)。
[0093]その後、ネームスペース内に次のネームスペース構成要素が存在するか否かに関するチェックが、実行される(動作712)。ネームスペース内に次のネームスペース構成要素が存在する場合、現在のノードが、次のネームスペース構成要素と一致する子供を有しているか否かに関するチェックが実行される(動作714)。例えば、ネームスペースがHKLM¥Software¥Classes¥であって、現在のノードが「HKLM」であって、現在の構成要素が「HKLM」である場合、動作(714)において、トライ木の現在のノードが「Software」である子供を有しているか否かに関するチェックが実行される。
[0094]現在のノードが、次のネームスペース構成要素と一致する子供を有している場合、その子供が現在のノードとして選択され、ネームスペース内の次の構成要素が、現在の構成要素として設定される(動作716)。その後、現在のノードがネームスペースによって満たされる任意のカテゴリーを有している否かに関するチェックが実行される(動作718)。現在の構成要素が、現在のノードと一致する(同一である)1つ以上のカテゴリーを有している場合、現在のノードは、ネームスペースによって満たされるカテゴリーを有している。例えば、現在のノードが、現在のネームスペースの子供がピリオドで始まるコンテナーである限りそれらを受け入れる「FileAssociation」カテゴリーを有している場合であって、かつ、現在のノードが「.mp3」の子供を有する「classes」である場合、現在のノードの子供は「.mp3」によって表されるネームスペースによって満たされたカテゴリー「FileAssociation」を有している。
[0095]現在のノードが、ネームスペースによって満たされる任意のカテゴリーを有している場合、ネームスペースによって満たされるこれらのカテゴリーが、結果として得られたカテゴリーとして識別され、現在のノードによって表されるネームスペースが、結果として得られたネームスペースとして識別される(動作720)。集約カテゴリーに関すると、(例えば、カテゴリー属性「aggregated」が真に設定されたとき)動作(718)のチェック及び動作(720)の結果として得られたカテゴリーが、ネームスペースの子供を参照していることに留意されたい。例えば、「FileAssociation」が、HKLM¥Software¥Classes¥のルートを有している場合、レジストリ情報は、ネームスペース内部の次のキーとして存在していて、このレジストリ情報カテゴリーが、動作(718)及び(720)において参照されるカテゴリーである。
[0096]プロセス(700)はその後、次のネームスペース構成要素が存在するか否かチェックするための動作(712)に戻る。次のネームスペース構成要素が存在しない場合、結果として得られたネームスペース及び結果として得られたカテゴリーが、ネームスペースによって識別された特定の場所において表されるカテゴリー又はレジストリ情報カテゴリーとして報告される(動作722)。
[0097]動作(718)に戻ると、現在のノードが、ネームスペースによって満たされるどんなカテゴリーも有していない場合、プロセス(700)は、次のネームスペース構成要素が存在するか否かチェックするための動作(712)へ戻る。次のネームスペース構成要素が存在しない場合、結果として得られたネームスペース及び結果として得られたカテゴリーが、ネームスペースによって識別された特定の場所において表されるカテゴリー又はレジストリ情報カテゴリーとして報告される(動作722)。
[0098]動作(714)に戻ると、現在のノードが次のネームスペース構成要素と一致する子供を有していない場合、結果として得られたネームスペース及び結果として得られたカテゴリーが、ネームスペースによって識別された特定の場所において表されるカテゴリー又はレジストリ情報カテゴリーとして報告される(動作722)。
[0099]動作(720)が実行されない状況が生じ得るので、動作(722)において報告された結果として得られたネームスペース及び結果として得られたカテゴリーが、それらがまだ識別されていないことを示す空の値か又は別のある値に設定されることに留意されたい。ネームスペースに関する動作(720)が複数回実行される状況も生じ得ることに留意されたい。上記の状況において、動作(720)で、最も新しく設定されたカテゴリー及びネームスペースが、動作(722)において報告される。
[00100]1つ以上の実施形態において、レジストリ情報ストア内のネームスペース構成要素が、構造化拡張子定義において記述されている構成要素にどのくらい近いかに関する決定が実行される。この近似に関する決定は、構成要素の1つを別のものに変換するときのコストを決定する従来の様々な異なる技法のいくつかを使用し、2つのネームスペース構成要素を比較することによって実行され得る。ネームスペース構成要素の1つを別のものに変換するときのコストを生成するための上記技法は、文字又はスペースの除去、文字の交換、文字の挿入など、いくつかの動作を別に重み付け得る。上記技法を使用し、2つのネームスペース構成要素のうちあるサイズの文字列を2つのネームスペース構成要素のうち別のサイズの文字列への変換に可能性がある大きなコストも決定される。構成要素の一方を分割された他方に変換するコストである値はその後、あるサイズの文字列を別のサイズの文字列へ変換する大きな可能性があるコストによって生成される。生成されるこの値が低ければ低いほど、2つの構成要素はお互いにより近くある。生成されるこの値が、閾値よりも小さい場合、2つのパス名が、ネイティブレジストリ情報を発行した時の誤りであることに十分に近いことが決定され得る。したがって、生成された値が閾値よりも小さい場合、2つのパス名は同一として見なされ得る(例えば動作(714)において、2つがたとえ同一でなくても、現在のノードが、次のネームスペース構成要素と一致する子供を有していることが決定され得る)。
[00101]図8は、1つ以上の実施形態に従って使用され得る構造化拡張子定義に関するトライ木の例(800)を示している。トライ木(800)は、例えば、図7の動作(704)で生成されるトライ木構造であり得る。トライ木(800)は、複数のレベル(802)、(804)、(806)、(808)、及び(810)を含む。それぞれのレベルにおいて、「HKLM」、「HKCU」、「software」、「classes」などのような1つ以上のノードが例示されている。
[00102]トライ木のルートは、レベル(802)にあって、どんな値も有していない。ルートの子供がレベル(802)に例示されていて、図1の拡張子レジストリ情報仲介部(102)がどのように解析するか知っている、レジストリ情報ストアすべてのルートを表している。レベル(804)のネームスペース構成要素の子供はレベル(806)に例示され、レベル(806)のネームスペース構成要素の子供はレベル(808)などに例示されている。レベル(804〜810)のノードによって表されるネームスペースは、ネームスペース構成要素間にバックスラッシュを有する、ノードといくつかの親ノードとの名前である。例えば、レベル(808)のノード「classes」は、ネームスペース「HKLM¥software¥class」を表している。
[00103]それぞれのレベル(802〜810)が1つ以上のカテゴリーとも関連付けられ得、そのレベルのネームスペースに関連付けられている。例えば、レベル(808)は、ネームスペース「HKLM¥software¥classes」と関連付けられている1つ以上のカテゴリー(822)を含み得る。別の例として、レベル(810)は、ネームスペース「HKLM¥software¥classes¥CLSID」と関連付けられている1つ以上のカテゴリー(824)と、ネームスペース「HKLM¥software¥classes¥APPID」と関連付けられている1つ以上のカテゴリー(826)と、を含み得る。
[00104]1つ以上の実施形態において、特定の場所に示されたレジストリ情報カテゴリーを識別するための図7のプロセス(700)のようなプロセスを実装するとき、パス名は、トライ木構造内のエレメントへのポインターとしてストアされる。トライ木のエレメント又はノードそれぞれ(図8に例示された例えばそれぞれキー)は、特定の記憶場所にストアされる。特定の場所に表されるレジストリ情報カテゴリーを識別するためのプロセスの一部としてのパス名は、対応するトライ木の記憶場所へのポインターとして表される。例えば、レベル(808)のノードは対応する記憶場所を有していて、パス名「HKLM¥software¥classes」が「classes」に対応するその記憶場所へのポインターである。
[00105]このパス名表現は、効率的なメモリー使用を提供する。パス名をオーバーラップするための複製情報は保持される必要はない。むしろ、単に正しい記憶場所へのポインターが保持され得る。更に、それぞれの記憶場所に存在しているポインター数のレコードが保持され得る。トライ木の特定の場所へのポインター数が0になったとき、(トライ木のその場所の子供へのポインターが存在していないと見なして)トライ木のその場所がメモリーから除去され得る。
[00106]このパス名表現を記憶場所へのポインターとして使用すると、パスの同等性が容易に決定され得る。2つのパス名が同一の記憶場所へのポインターである場合、2つのパス名は同一である。しかしながら、2つのパス名が異なる記憶場所へのポインターである場合、2つのパス名は同一でない。この特性は、非常に効率的な順番付け又はハッシュも可能にし、ノードへのポインターをハッシュ値として使用してパスが、連想コンテナーのキーとして非常に効率的にストアされ得る。
[00107]図9は、1つ以上の実施形態によるソフトウェア拡張子解析を実装するように構成され得る計算装置の例(900)を示している。計算装置(900)は、例えば、図1の計算装置(100)であり得る。
[00108]計算装置(900)は、1つ以上のプロセッサー又は演算処理装置(902)、1つ以上のメモリー及び/又はストレージコンポーネント(906)を含み得る1つ以上の計算機可読媒体(904)、1つ以上の入力/出力(I/O)装置(908)、及び様々なコンポーネント及び機器が相互に通信可能なバス(910)を含む。計算機可読媒体(904)及び/又は1つ以上のI/O装置(908)は、計算装置(900)の一部として含まれ得るか又は代わりに機器に接続され得る。バス(910)は、メモリーバス又はメモリーコントローラーバス、周辺機器用バス、アクセラレイティッドグラフィックスポート、プロセッサーパス又はローカルバスなど、を含む様々な異なるバスアーキテクチャを利用するいくつかのタイプのバス構造の1つ以上を示している。バス(910)は、有線バス及び/又は無線バスを含み得る。
[00109]メモリー/ストレージコンポーネント(906)は、1つ以上の計算機記憶媒体を表す。コンポーネント(906)は、(ランダムアクセスメモリー(RAM)などの)揮発性媒体、及び/又は(読み出し専用メモリー(ROM)、フラッシュメモリー、光ディスク、磁気ディスクなどの)不揮発性媒体を含み得る。コンポーネント(906)は、(例えばRAM、ROM、固定のハードドライブなどの)固定の媒体及び(例えばフラッシュメモリードライブ、取り外し可能ハードドライブ、光学式ディスクなどの)取り外し可能媒体を含み得る。
[00110]本明細書に論述した技法は、1つ以上の演算処理装置(902)によって実行される命令を有するソフトウェアに実装され得る。異なる命令が、演算処理装置(902)、演算処理装置(902)内の様々なキャッシュメモリー、計算装置(900)の(示されていない)別のキャッシュメモリー、又はその他の計算機可読媒体など、計算装置(900)の異なるコンポーネントにストアされ得ることを十分に理解されよう。加えると、命令が計算装置(900)にストアされる場所は、時間が経つにつれて変化し得ることを十分に理解されよう。
[00111]1つ以上の入力/出力装置(908)によって、ユーザーは計算装置(900)にコマンド及び情報を入力可能になり、情報がユーザー、及び/又はその他のコンポーネント又は機器に提示されることも可能になる。入力装置の例は、キーボード、カーソル制御装置(例えばマウス)、マイクロフォン、スキャナーなどを含む。出力装置の例は、表示装置(例えば、モニター又はプロジェクター)、スピーカー、プリンター、ネットワークカードなどを含む。
[00112]様々な技法が、一般的なソフトウェア又はプログラムモジュールの文脈で本明細書に記載され得る。通常、ソフトウェアは、特定のタスクを実行するか又は特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。これらのモジュール及び技法の実装は、いくつかの計算機可読媒体形式を介しストア又は送信され得る。計算機可読媒体は、計算装置によってアクセスされ得る利用可能な単一媒体又は複数媒体のいずれかであり得る。非限定の例として、計算機可読媒体は、「計算機記憶媒体」及び「通信媒体」を含み得る。
[00113]「計算機記憶媒体は」、計算機読込可能命令、データ構造、プログラムモジュール、又はその他のデータのような情報の記憶に関する任意の方法若しくは技術で実装された揮発性媒体及び不揮発性媒体、並びに取り外し可能媒体及び媒体取り外し不可能媒体を含む。計算機記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリー、若しくはその他のメモリー技術、CD−ROM、デジタル多用途ディスク(DVD)、若しくはその他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、若しくはその他の磁気記憶装置、又は所望した情報をストアするために利用され得、計算機によってアクセスされ得る別の任意の媒体、を含むがこれらに限定しない。
[00114]「通信媒体」は典型的に、計算機可読命令、データ構造、プログラムモジュール、又はその他のデータを、搬送波又はその他の移送機構のような変調されたデータ信号で具体化する。通信媒体は任意の情報伝達媒体も含む。用語「変調データ信号」は、信号内の情報を符号化する方法によって設定又は変更されたその1つ以上の特性を有する信号を意味している。非限定の例として、通信媒体は、有線ネットワーク又は直接有線接続のような有線媒体、及び音響、RF、赤外線、及びその他のワイヤレス媒体のような無線媒体などを含む。上記のうち任意の組み合わせも計算機可読媒体の範囲内に含まれる。
[00115]通常、本明細書に記載した機能又は技法のどれもソフトウェア、ファームウェア、ハードウェア(例えば固定論理回路)、手動処理、又はこれらの実装の組み合わせを利用し、実装され得る。本明細書に使用されている用語「モジュール」及び「コンポーネント」は通常、ソフトウェア、ファームウェア、ハードウェア、又はその組み合わせを表している。ソフトウェア実行の場合、モジュール、機能性、又はロジックは、プロセッサー(例えば、CPU又は複数のCPU)上で実行されるとき、指定されたタスクを実行するプログラムコードを表している。プログラムコードは1つ以上の計算機可読記憶媒体にストアされ得、更に、それに関する図9を参照した説明が見出され得る。本明細書に記載されたソフトウェア拡張子解析技法の特性はプラットフォームに独立であって、本技法が、様々なプロセッサーを有する様々な商用計算プラットフォームにおいて実装され得ることを意味している。
[00116]対象項目は、構造的機能及び/又は方法論的動作に対し特定の言語で記述されているが、添付の請求項に定義されている対象項目が、必ずしも前述した特定の機能又は動作に限定されるわけではないことを理解されよう。もっと具体的に言うと、前述した特定の機能及び動作は、本請求項の実装形式の例として開示されている。
100 計算装置の例
102 拡張子レジストリ情報仲介部
104 レジストリ情報ストア
106 オペレーティングシステム
108 消費者プログラム
110 供給者プログラム
112 構造化拡張子定義
200 フォーマットの例
202 拡張性エレメント
204 カテゴリーエレメント
206 ルートエレメント
208 パラメーターエレメント
210 制約エレメント
212 使用エレメント
214 変化エレメント
216 マージルートエレメント
218 ドキュメンテーションエレメント
800 トライ木の例
802 ルートレベルのノード
804 最初のレベルのノード
806 第2のレベルのノード
808 第3のレベルのノード
810 第4のレベルのノード
822 「HKLM¥software¥classes」に関連付けられたカテゴリー
824 「HKLM¥software¥classes¥CLSID」に関連付けられたカテゴリー
826 「HKLM¥software¥classes¥APPID」に関連付けられたカテゴリー
900 計算装置の例
902 プロセッサー
904 計算機可読媒体
906 メモリー/ストレージ
908 I/O装置
910 バス

Claims (15)

  1. プロセッサー(902)と、
    前記プロセッサーに接続された1つ以上の計算機可読媒体(904)と、を含んでいて、前記計算機可読媒体はその上にストアされた複数の命令を有していて、当該命令が前記プロセッサーによって実行されるとき、
    複数の構造化拡張子定義を取得するステップ(302)であって、構造化拡張子定義それぞれが、1つ以上のカテゴリーに対応していて、かつソフトウェア拡張子言語で書かれているものと、
    レジストリ情報ストアにとってネイティブなフォーマットでストアされているレジストリ情報を表すデータにアクセスするステップ(306)と、
    前記複数の構造化拡張子定義の少なくとも一部に基づいて、前記レジストリ情報ストア内の前記データを解析するステップ(308)と、を前記プロセッサーに実行させることを特徴とする計算装置(900)。
  2. 前記命令が更に、
    前記複数の構造化拡張子定義からトライ木構造を生成するステップであって、前記トライ木構造が、それぞれの構造化拡張子定義内のカテゴリーそれぞれのパス名中のネームスペース構成要素それぞれに関するノードを含んでいるものと、
    レジストリ情報ストア内のデータをレジストリ情報として解釈するためのリクエストを受信するステップと、
    前記トライ木構造の前記1つ以上のノードをチェックし、前記リクエストを満たすネームスペースに対応するノードを決定するステップと、
    前記ノードに対応するカテゴリーを使用し、前記レジストリ情報の適切なカテゴリーを識別するステップと、を前記プロセッサーに実行させることを特徴とする請求項1記載の計算装置。
  3. それぞれの構造化拡張子定義内のカテゴリーそれぞれのパス名中のネームスペース構成要素それぞれが関連付けられる記憶場所を有していて、ネームスペース構成要素の各パス名が、前記ネームスペース構成要素に対し関連付けられた前記記憶場所へのポインターによって参照されることを特徴とする請求項1記載の計算装置。
  4. 前記解析が、前記レジストリ情報ストアに保持されている1つ以上のネイティブレジストリ情報の前記カテゴリーに対応する、前記複数の構造化拡張子定義の少なくとも一部に基づいていることを特徴とする請求項1記載の計算装置。
  5. 前記1つ以上のネイティブレジストリ情報を解析することが、ネームスペースに関連付けられた前記カテゴリーそれぞれと、前記レジストリ情報ストア内の対応する前記データとを比較し、前記レジストリ情報ストア内のどのデータが、前記カテゴリーによって定義されているルールに従っているか決定して、前記レジストリ情報ストアに対してネイティブなフォーマットのレジストリ情報を発見すること、を特徴とする請求項1記載の計算装置。
  6. 前記レジストリ情報ストアのデータを解析することが、前記レジストリ情報ストア内に提示されるレジストリ情報のリストを生成することを特徴とする請求項1記載の計算装置。
  7. 前記レジストリ情報ストアのデータを解析することが、前記レジストリ情報のネイティブ表現を有する問題リストを生成することを特徴とする請求項1記載の計算装置。
  8. 前記レジストリ情報ストアのデータにアクセスすることが、あるフォーマットのコマンドを受信し、前記コマンドを前記レジストリ情報ストアに特有のフォーマットへ変換するように構成されたインターフェースモジュールを介し、前記レジストリ情報ストアにアクセスすることを特徴とする請求項1記載の計算装置。
  9. 前記レジストリ情報ストアが、前記レジストリ情報に加えて非レジストリ情報データを含んでいることを特徴とする請求項1記載の計算装置。
  10. 機器上に実装される方法であって、
    ソフトウェア拡張子言語で書かれた構造化拡張子定義を取得するステップ(502,602)と、
    前記構造化拡張子定義に基づいてレジストリ情報ストアを修正するステップ(510,620)と、を含んでいて、前記レジストリ情報ストアが、前記レジストリ情報ストアにとってネイティブであって前記ソフトウェア拡張子言語と異なるフォーマットでストアされたレジストリ情報を含んでいることを特徴とする方法。
  11. 更に、
    前記構造化拡張子定義の1つ以上のレジストリ情報パラメーターのデータをネイティブレジストリ情報へ変換するステップを含んでいて、
    前記レジストリ情報ストアを修正するステップが、前記変換されたデータを前記レジストリ情報ストアの1つ以上のネームスペースへ書き込むステップを含んでいることを特徴とする請求項10記載の方法。
  12. 更に、
    前記構造化拡張子定義の1つ以上のレジストリ情報パラメーターのデータをネイティブレジストリ情報へ変換するステップと、
    前記レジストリ情報ストアのネームスペースからデータを読み出すステップと、
    前記変換されたデータと前記読み出されたデータとを比較するステップと、
    前記変換されたデータ及び前記読み出されたデータが同一の場合に限り、前記レジストリ情報ストアの前記ネームスペースから読み出されたデータを消去するステップと、を含む請求項10記載の方法。
  13. 更に、
    データを前記レジストリ情報ストアのネームスペースから読み出すステップと、
    前記データを前記構造化拡張子定義の1つ以上のレジストリ情報パラメーターと同一のフォーマットへ変換するステップと、
    前記変換されたデータと前記1つ以上のレジストリ情報パラメーターとを比較するステップと、
    前記比較が、前記変換されたデータと前記1つ以上のレジストリ情報パラメーターとが同一であることを示している場合に限り、前記レジストリ情報ストアの前記ネームスペースから読み出されたデータを消去するステップと、を含む請求項10記載の方法。
  14. 前記ソフトウェア拡張子言語が、
    カテゴリー関するデータタイプをそれぞれ識別している1つ以上の第1エレメントと、
    前記1つ以上の第1エレメントを識別する第2エレメントと、
    前記カテゴリーに関するデータがストアされている前記レジストリ情報ストア内の場所を示している第3エレメントと、を定義していることを特徴とする請求項10記載の方法。
  15. 更に、
    1つ以上のカテゴリーにそれぞれ対応する更なる複数の構造化拡張子定義を取得するステップであって、それぞれが、前記ソフトウェア拡張子言語で書かれているものと、
    前記レジストリ情報ストアにとってネイティブなフォーマットでストアされたレジストリ情報を表しているデータにアクセスするステップと、
    前記更なる複数の構造化拡張子定義の少なくとも一部に基づいて前記レジストリ情報ストア内の前記データを解析するステップと、を含む請求項10記載の方法。
JP2012515023A 2009-06-12 2010-06-07 ソフトウェア拡張子解析方法及びシステム Withdrawn JP2012529711A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/483,600 US20100318964A1 (en) 2009-06-12 2009-06-12 Software extension analysis
US12/483,600 2009-06-12
PCT/US2010/037655 WO2010144374A2 (en) 2009-06-12 2010-06-07 Software extension analysis

Publications (1)

Publication Number Publication Date
JP2012529711A true JP2012529711A (ja) 2012-11-22

Family

ID=43307523

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012515023A Withdrawn JP2012529711A (ja) 2009-06-12 2010-06-07 ソフトウェア拡張子解析方法及びシステム

Country Status (6)

Country Link
US (1) US20100318964A1 (ja)
EP (1) EP2440997A2 (ja)
JP (1) JP2012529711A (ja)
KR (1) KR20120037393A (ja)
CN (1) CN102460381A (ja)
WO (1) WO2010144374A2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101571348B1 (ko) * 2009-09-01 2015-12-04 삼성전자주식회사 호스트 디바이스, 워크폼 실행 디바이스, 워크폼 생성방법 및 워크폼 실행 방법
US8769105B2 (en) 2012-09-14 2014-07-01 Peaxy, Inc. Software-defined network attachable storage system and method
US20140106165A1 (en) * 2012-10-12 2014-04-17 Georgia-Pacific Chemicals Llc Paper with higher oil repellency
US20150113498A1 (en) * 2013-10-21 2015-04-23 Microsoft Corporation Modeling customizations to a computer system without modifying base elements
US9930095B2 (en) * 2014-03-26 2018-03-27 Google Llc System for managing extension modifications to web pages
JP2016035714A (ja) * 2014-08-04 2016-03-17 キヤノン株式会社 情報処理装置、情報処理装置におけるプログラム管理方法、プログラム、およびシステム
US10768820B2 (en) * 2017-11-16 2020-09-08 Samsung Electronics Co., Ltd. On-demand storage provisioning using distributed and virtual namespace management

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092053A (en) * 1998-10-07 2000-07-18 Cybercash, Inc. System and method for merchant invoked electronic commerce
US7908602B2 (en) * 1999-06-30 2011-03-15 Blackboard Inc. Internet-based education support system, method and medium providing security attributes in modular, extensible components
US20020032768A1 (en) * 2000-04-10 2002-03-14 Voskuil Erik K. Method and system for configuring remotely located applications
US7000230B1 (en) * 2000-06-21 2006-02-14 Microsoft Corporation Network-based software extensions
US7058656B2 (en) * 2002-04-11 2006-06-06 Sun Microsystems, Inc. System and method of using extensions in a data structure without interfering with applications unaware of the extensions
US8335779B2 (en) * 2002-08-16 2012-12-18 Gamroe Applications, Llc Method and apparatus for gathering, categorizing and parameterizing data
US7406695B2 (en) * 2003-01-17 2008-07-29 Sap Aktiengesellschaft Automatically upgradeable extension of software
TWI337310B (en) * 2003-08-21 2011-02-11 Microsoft Corp Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
US7434157B2 (en) * 2003-12-09 2008-10-07 Microsoft Corporation Programmable object model for namespace or schema library support in a software application
US20050172282A1 (en) * 2004-01-30 2005-08-04 Michael Shenfield System and method for publishing and accessing application APIs on a generic terminal
US20060122820A1 (en) * 2004-12-03 2006-06-08 The Mitre Corporation Scripting language for domain-specific modification of a simulation model
US7392259B2 (en) * 2004-12-14 2008-06-24 Electronics And Telecommunications Research Institute Method and system for supporting XQuery trigger in XML-DBMS based on relational DBMS
US7600028B2 (en) * 2005-01-10 2009-10-06 Google Inc. Methods and systems for opportunistic cookie caching
US20060265508A1 (en) * 2005-05-02 2006-11-23 Angel Franklin J System for administering a multiplicity of namespaces containing state information and services
GB0509738D0 (en) * 2005-05-12 2005-06-22 Cambridge Consultants Processor and interface
US8074231B2 (en) * 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
US7836439B2 (en) * 2006-02-03 2010-11-16 Research In Motion Limited System and method for extending a component-based application platform with custom services
US8132188B2 (en) * 2006-04-21 2012-03-06 International Business Machines Corporation Method and system for extension registry filtering
US8224772B2 (en) * 2006-12-08 2012-07-17 Nec Corporation Data management apparatus, method and program
US20080301290A1 (en) * 2007-06-01 2008-12-04 Slipstream Data Inc. Method and apparatus for management of common side information
US7930273B1 (en) * 2007-07-30 2011-04-19 Adobe Systems Incorporated Version management for application execution environment

Also Published As

Publication number Publication date
US20100318964A1 (en) 2010-12-16
EP2440997A2 (en) 2012-04-18
KR20120037393A (ko) 2012-04-19
WO2010144374A2 (en) 2010-12-16
WO2010144374A3 (en) 2011-03-03
CN102460381A (zh) 2012-05-16

Similar Documents

Publication Publication Date Title
US10546035B2 (en) System and method for data-driven web page navigation control
US10228933B2 (en) Resource deployment based on conditions
US8112738B2 (en) Apparatus and method of customizable model import and export to and from XML schema formats
RU2611966C2 (ru) Рекомендательная система для пополнения данных
US9495371B2 (en) Unified access to resources
US20120317561A1 (en) Automatic recognition of web application
US20090094609A1 (en) Dynamically providing a localized user interface language resource
JP2012529711A (ja) ソフトウェア拡張子解析方法及びシステム
US10572278B2 (en) Smart controls for user interface design and implementation
US7865481B2 (en) Changing documents to include changes made to schemas
US9141344B2 (en) Hover help support for application source code
US8875093B2 (en) Instantiating a coding competition to develop a program module in a networked computing environment
US9244706B2 (en) Command line shell command generation based on schema
JP2006294019A (ja) 汎用ソフトウェア要件アナライザ
CA2539962A1 (en) Method and apparatus for processing electronic data
US20130007707A1 (en) Using the Z/OS Load Module System Status Index to Distinguish Product Tag Files
US20090216801A1 (en) Service Registry Document Loader
US8615736B2 (en) Module facility for JAVASCRIPT language
Hirsch et al. Spotting and removing wsdl anti-pattern root causes in code-first web services: a thorough evaluation of impact on service discoverability
US9038049B2 (en) Automated discovery of resource definitions and relationships in a scripting environment
US20110246870A1 (en) Validating markup language schemas and semantic constraints
Hirsch Jofré et al. Spotting and Removing WSDL Anti-pattern Root Causes in Code-first Web Services Using NLP Techniques: A Thorough Validation of Impact on Service Discoverability
US20080307071A1 (en) Retrieving specific hierarchical information using web services
US8521753B2 (en) Unified formats for resources and repositories for managing localization
Giaretta et al. Preservation of intelligibility of digital objects

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