(57)【要約】【課題】コンピュータ・システムの設定情報ＤＢを適切に管理する。【解決手段】システムの設定情報を格納する設定情報ＤＢ５０と管理用ＤＢ１０１を含む。書き込み処理部１１１は、リクエスタ５９から設定情報ＤＢに対する書き込み要求を受けるたびに、管理用ＤＢに書き込み要求されたデータを書き込む。設定情報ＤＢに対して読み取り要求を受けたときに、読み取り処理部１１３は管理用ＤＢがデータを含む場合には管理用ＤＢから読み取り要求をしたプログラムに渡す。編集部１０５は信頼性のあるプログラムだけがデータを書き込むようにするためにホワイト・リスト１０３を利用して管理用ＤＢのクリーンアップを行う。【選択図】図２
2011053741.tif 000002
【特許請求の範囲】
【請求項１】
システムの設定情報を格納する設定情報データベースを利用するコンピュータに、
前記システムの設定情報を格納することが可能な管理用データベースを提供するステップと、
前記設定情報データベースに対する書き込み要求を受けるたびに、前記設定情報データベースに代えて前記管理用データベースに書き込みデータを追加的に書き込むステップと、
前記設定情報データベースに対する読み取り要求を受けたときに、読み取りデータを前記管理用データベースが含む場合に、前記読み取りデータを前記管理用データベースが提供するステップと
を含む処理を実行させるコンピュータ・プログラム。
【請求項２】
前記提供するステップは、前記読み取りデータを前記管理用データベースが含まない場合に前記設定情報データベースが提供する請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記設定情報データベースへのアクセスに関して信頼できるプログラムを登録したホワイト・リストを提供するステップを含み、
前記書き込むステップにおいて、書き込み要求をしたプログラムが前記ホワイト・リストに登録されているか否かを示す情報を前記管理用データベースに書き込む請求項１または請求項２に記載のコンピュータ・プログラム。
【請求項４】
前記ホワイト・リストの更新要求を受け取るステップと、
前記更新要求を受け取ったことに応答して、前記管理用データベースに書き込みデータを書き込んだ前記ホワイト・リストに登録されていないプログラムを前記ホワイト・リストに登録するステップと
を有する請求項３に記載のコンピュータ・プログラム。
【請求項５】
前記ホワイト・リストの更新要求を受け取るステップが、一定期間前記コンピュータを使用したユーザからの指示を受け取るステップを含む請求項４に記載のコンピュータ・プログラム。
【請求項６】
前記ホワイト・リストの更新要求を受け取るステップが、前記コンピュータの不安定な動作状態を監視するシステムから受け取るステップを含む請求項４または請求項５に記載のコンピュータ・プログラム。
【請求項７】
前記管理用データベースのクリーンアップ要求を受け取るステップと、
前記ホワイト・リストに登録されていないプログラムが書き込んだデータをすべて前記管理用データベースから削除するステップと
を有する請求項３から請求項６のいずれかに記載のコンピュータ・プログラム。
【請求項８】
前記クリーンアップ要求を受け取るステップが、一定期間前記コンピュータを使用したユーザからの指示を受け取るステップを含む請求項７に記載のコンピュータ・プログラム。
【請求項９】
前記クリーンアップ要求を受け取るステップが、前記コンピュータの不安定な動作状態を監視するシステムから受け取るステップを含む請求項７または請求項８に記載のコンピュータ・プログラム。
【請求項１０】
前記管理用データベースの初期化要求を受け取るステップと、
前記管理用データベースに書き込まれたデータのなかで特定のカテゴリーに分類されたデータのすべてを削除するステップと
を有する請求項１から請求項９に記載のコンピュータ・プログラム。
【請求項１１】
キー・パスと該キー・パスに対応する設定値を含むキー・データを格納する設定情報データベースと、
前記設定情報データベースのキー・データに対して更新されたキー・データを格納する管理用データベースと、
前記設定情報データベースにアクセスする複数のリクエスタと、
前記リクエスタが前記設定情報データベースに対して行った書き込み要求を受け取って前記管理用データベースにキー・データを書き込む書き込み処理部と
を有するコンピュータ・システム。
【請求項１２】
前記リクエスタが前記設定情報データベースのキー・パスに対して行った読み取り要求を受け取って前記管理用データベースに前記キー・パスに対応する設定値が存在するか否かを判断し、存在する場合には前記管理用データベースから読み取る読み取り処理部を有する請求項１１に記載のコンピュータ・システム。
【請求項１３】
前記設定情報データベースに対するアクセスに関して信頼できるリクエスタを登録したホワイト・リストを有し、
前記書き込み処理部は前記リクエスタが前記ホワイト・リストに登録されているか否かに関する情報を前記キー・データとともに前記管理用データベースに書き込む請求項１１または請求項１２に記載のコンピュータ・システム。
【請求項１４】
前記管理用データベースのクリーンアップ要求を受け取り、前記管理用データベースに前記ホワイト・リストに登録されていないリクエスタが書き込んだ設定値を削除する編集部を有する請求項１３に記載のコンピュータ・システム。
【請求項１５】
前記コンピュータの不安定な動作状態を監視し、前記編集部にクリーンアップ要求を送るシステム状態監視部を有する請求項１４に記載のコンピュータ・システム。
【請求項１６】
前記編集部は初期化要求を受け取り、ドライバ、サービス、セキュリティ、またはアプリケーションのいずれかのカテゴリーに属するキー・パスと設定値を削除する請求項１４に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・システムで使用する設定情報データベースを適切に管理する技術に関し、さらに詳細には、コンピュータ・システムの安定した動作を維持する技術に関する。
【背景技術】
【０００２】
Ｗｉｎｄｏｗｓ（登録商標）のオペレーティング・システム（ＯＳ）には、ハードウエアやソフトウエアの設定情報を登録したシステム・レジストリ（以下、単にレジストリという。）というデータベースが組み込まれている。Ｗｉｎｄｏｗｓ（登録商標）のレジストリは、５つのルート・キーの下にそれぞれ複数のサブ・キーが階層的に関連づけられており、各末端のサブ・キーには設定名と設定値で構成されたエントリが記述されている。
【０００３】
コンピュータ・システムは起動時または動作中にさまざまなプログラムがレジストリの設定情報を読み取ることで正しく動作できるようになる。レジストリは、アプリケーション・プログラムのインストールまたはアンインストール、ＯＳの更新、およびシステムの環境設定の変更などにより更新される。さらにユーザは、レジストリ・エディタというプログラムを利用してレジストリをカスタマイズすることができる。ユーザが誤ってレジストリを更新したり、悪意のあるプログラムがレジストリを書き換えたりするとコンピュータ・システムは動作が不安定になったり予想外の動作をしたりする。
【０００４】
レジストリに起因して動作が不安定になったコンピュータ・システムの機能を回復させるためにＷｉｎｄｏｗｓ（登録商標）では、時系列的にレジストリ全体のスナップ・ショットを生成しておき、レジストリ全体を過去の一時点である復元ポイントの状態に戻すシステムの復元という操作をすることができる。また、クリーンアップ・ソフトウエアまたはスパイウエア駆除ソフトウエアにより、ブラック・リストに登録されたプロセスが書き換えたデータを削除する方法もある。特許文献１は、レジストリに格納された情報へのアクセスを提供し、レジストリを動的に区分するシステムを開示する。同文献には動的パーティション・データ・ストアがレジストリとアプリケーションに関連付けられたリダイレクション情報を格納し、アプリケーションからの要求に対してリダイレクション情報に基づいてレジストリ情報を与えることが記載されている。特許文献２は、コンピュータのブートを常に成功させるためにレジストリの初期化および更新を行う方法を開示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−７８６２８号公報
【特許文献２】特開平７−５６７１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述のスナップ・ショットに基づいて復元ポイントの状態までレジストリ全体の設定値を戻す方法は処理に長い時間を費やすとともに、適切に更新されたエントリも元に戻すことになるため、ユーザにとっては不都合が生ずる場合がある。たとえば、図１１に示したように、レジストリキーＡが時間軸上で値Ａ１、値Ａ２、値Ａ３の順番に変更され、レジストリキーＢが値Ｂ１、Ｂ２の順番に変更されたものとする。そして、値Ａ２と値Ｂ２は悪意のあるソフトウエアによる不適切な書き込みであり、現在はシステムが値Ａ３と値Ｂ２を使用して動作している。レジストリキー全体のスナップ・ショットは時刻Ｔ１、Ｔ２、Ｔ３で作成されている。
【０００７】
ここで、値Ｂ２によりシステムが不安定な動作をするためユーザがいずれかの復元ポイントの状態にレジストリの値を戻すことを考えてみる。復元ポイントに時刻Ｔ１を選択するとレジストリキーＡは値Ａ１に変更されレジストリキーＢは値Ｂ１に変更される。この場合、レジストリキーＢは正しい設定値（値Ｂ１）に復元されるが、レジストリキーＡの設定値は最新の適切な値Ａ３ではなく過去に適切であった値Ａ１に復元されている。その結果、ユーザにとって値Ａ３が現在最も適切な設定値であるにもかかわらずその状態が損なわれてしまう。
【０００８】
復元ポイントに時刻Ｔ２を選択するとレジストリキーＡは値Ａ２に変更されレジストリキーＢは値Ｂ１に変更される。この場合、レジストリキーＢは正しい設定値（値Ｂ１）に復元されるが、レジストリキーＡは不適切な設定値（値Ａ２）に復元されている。時刻Ｔ２でスナップ・ショットを作成した瞬間にはシステムが正常に動作していたとしても、値Ａ２によりシステムは潜在的に不安定要因を抱えていたとも考えられるので、値Ａ２に戻すことは望ましくない。また、値Ａ２ではコンピュータ・システムが正常に動作しないため、ある種のアプリケーションでは、値Ａ３に設定するために再インストールする必要がでてくる。復元ポイントに時刻Ｔ３を選択するとレジストリキーＡは値Ａ３に変更されレジストリキーＢは値Ｂ２に変更される。この場合、レジストリキーＡもレジストリキーＢも復元する時点の値と変わらないことになる。ユーザは、復元ポイントを選択するだけなので、時刻Ｔ３を選択した場合には復元前と同じ状態が持続し問題が解決しないことになる。
【０００９】
このシステムでは、レジストリキーＡの設定値は値Ａ３で、レジストリキーＢの設定値は値Ｂ１にすることが望ましいが、スナップ・ショットによる方法ではレジストリキーごとに復元することはできない。また、問題のあるレジストリキーを選択して書き換えることは、専門的な知識のあるユーザ以外は困難である。さらに、コンピュータ・システムが稼働を開始してから時間が経過するほどレジストリが保有するデータ量は膨大になりコンピュータ・システムはスナップ・ショットを大量に保持することになる。スナップ・ショット方式でクリーンアップする方法は、すべての設定値を最新の適切な値に復元することができないだけでなく、一般に時間も長くなり専用のソフトウエアも必要になる。
【００１０】
ブラック・リスト方式では、すでに導入済みの設定値は正当であることを前提にして、その後に発覚した不正なプログラムが書き込んだ設定値を削除する。したがって、ブラック・リスト方式ではブラック・リストに記述されていないプログラムが書き込んだレジストリの値については対応できない。また、不正なプログラムがブラック・リストに記述されるまではコンピュータ・システムはその書き換えを受け入れることになり対応が遅れて被害が広がる恐れがある。さらにブラック・リスト方式により不正な書き換えを防ぐには、クリーンアップ・ソフトウエアが確実にブラック・リストの情報を更新しておく必要がある。さらにまた、クリーンアップ・ソフトウエアはどのプロセスがレジストリを書き換えたかを管理していないため、ブラック・リストに基づいて書き換えられた設定値を削除することはできるが適切な設定値に戻すことはできない。
【００１１】
そこで本発明の目的は、コンピュータ・システムの設定情報データベースを適切に管理するプログラムを提供することにある。さらに本発明の目的は、設定情報データベースを簡単に初期化できるプログラムを提供することにある。さらに本発明の目的は、設定情報データベースを適切にクリーンアップできるプログラムを提供することにある。さらに本発明の目的は、設定情報データベースの不正な書き換えによるシステムの不安定な動作を迅速に抑制するプログラムを提供することにある。さらに本発明の目的は、そのようなプログラムで実現するコンピュータ・システムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明にかかるコンピュータは、システムの設定情報を格納する設定情報データベースを利用して動作する。設定情報データベースは、それを利用するコンピュータの物理的な範囲に設けてもよいが、ネットワークでアクセスできる環境に設けてもよい。設定情報データベースはコンピュータ上で動作するさまざまなプログラムにより読み取りまたは書き込みなどのアクセスが可能となっている。設定情報データベースへのアクセスはタスク、プロセスまたはスレッドといったプログラムの実行単位を生成して行うことができる。本発明において設定情報データベースにアクセスするプログラムは、ＯＳの一部であったり、ＯＳ上で動作するプログラムとしてコンピュータに導入されたアプリケーションであったり、デバイスを制御するデバイス・ドライバであったりする。
【００１３】
本発明にかかるコンピュータ・プログラムは、設定情報データベースに追加されるシステムの設定情報を格納する管理用データベースをコンピュータに提供する。コンピュータ・プログラムは設定情報データベースに対する書き込み要求を受けるたびに、設定情報データベースに代えて管理用データベースに書き込みデータを追加的に書き込む。追加的に書き込むとは、それ以前のデータを上書きしないことを意味する。そしてコンピュータ・プログラムは、設定情報データベースに対するデータの読み取り要求を受けたときに、読み取りデータを管理用データベースが含む場合には管理用データベースから提供する。
【００１４】
本発明では設定情報データベースの更新はされないため、コンピュータが出荷直後であったり、完全な初期化を行った直後であったりといった製造者により保証された信頼できるシステム状態のときのデータを維持しておくことができる。書き込みデータは追加的に書き込むため、管理用データベースは更新前の古いデータも保管することができる。このような構成を備えることで、設定情報データベースの信頼性を維持し、かつ万一コンピュータの動作に不具合が生じたような場合には、管理用データベースのデータを削除することでコンピュータを容易に信頼できる初期の状態に戻すことができる。
【００１５】
プログラムは読み取りデータを管理用データベースが含まない場合には管理用データベースから返送する。管理用データベースは最初は一切のデータを格納しない状態でコンピュータに提供することができる。その場合、管理用データベースによる書き込みの開始直後においては、管理用データベースが読み取り要求に対するデータを格納していないが、設定情報データベースから返送することでコンピュータの動作に支障がでないようにすることができる。
【００１６】
本発明にかかるプログラムは、設定情報データベースへのアクセスに関して信頼できるプログラムまたはプロセスを登録したホワイト・リストを提供することができる。出荷時に実装されたプログラムは信頼できるものとすることができる。そして、ホワイト・リストの更新要求を受け取ったときに、管理用データベースに書き込んだホワイト・リストに登録されていないプログラムをホワイト・リストに登録することで、ホワイト・リストに記述するデータを拡大してゆくことができる。ホワイト・リストの更新要求は、たとえば、一定期間コンピュータを使用したユーザがシステムの状態に不具合がないことを確認したときや、コンピュータの動作状態を監視するシステムがコンピュータの不安定な動作を一定期間検出しないときにだすことができる。
【００１７】
本発明にかかるプログラムは、管理用データベースのクリーンアップ要求を受け取ったときに、ホワイト・リストに記述されていないプログラムが書き込んだデータを管理用データベースから削除することができる。具体的には、一定期間コンピュータを使用したユーザが、システムの状態に不具合があることを判断してクリーンアップ要求をすることができる。あるいは、コンピュータの不安定な動作状態を監視するプログラムがクリーンアップ要求をだすようにしてもよい。
【００１８】
本発明にかかるプログラムは、管理用データベースの初期化要求を受け取ったときに、管理用データベースに書き込まれ特定のカテゴリーに分類されたデータのすべてを削除することができる。特定のカテゴリーとは、ドライバ、サービス、セキュリティ、またはアプリケーションのいずれかとすることができる。こうすることで、コンピュータに異常が生じた場合に、良好なカテゴリーのデータは残し、特定の問題に関連するカテゴリーのデータだけを削除するっことができるので管理用データベースのすべてのデータを削除して初期化するよりも簡単に行うことができ、かつ、システムをより現在の良好なレベルに近づけた状態に維持することができる。
【発明の効果】
【００１９】
本発明により、コンピュータ・システムの設定情報データベースを適切に管理するプログラムを提供することができた。さらに本発明により、設定情報データベースを簡単に初期化できるプログラムを提供することができた。さらに本発明により、設定情報データベースを適切にクリーンアップできるプログラムを提供することができた。さらに本発明により、設定情報データベースの不正な書き換えによるシステムの不安定な動作を迅速に抑制するプログラムを提供することができた。さらに本発明により、そのようなプログラムで実現するコンピュータ・システムを提供することができた。
【図面の簡単な説明】
【００２０】
【図１】コンピュータ・システムの主要なハードウエア構成を示す機能ブロック図である。
【図２】コンピュータ・システムに実装されたソフトウエアの構成を示す機能ブロック図である。
【図３】オリジナルの設定情報ＤＢの構成を示す図である。
【図４】管理用の設定情報ＤＢの構成を示す図である。
【図５】管理用の設定情報ＤＢの構成を示す図である。
【図６】ホワイト・リストのデータ構造を示す図である。
【図７】オリジナルの設定情報ＤＢを管理する手順を示すフローチャートである。
【図８】書き込み処理の手順を示すフローチャートである。
【図９】読み取り処理の手順を示すフローチャートである。
【図１０】クリーンアップの手順を示すフローチャートである。
【図１１】従来のスナップ・ショット方式によるレジストリの更新方法を説明する図である。
【発明を実施するための形態】
【００２１】
［コンピュータ・システムの構成］
図１は、本実施の形態において例示するコンピュータ・システム１０の主要なハードウエア構成を示す機能ブロック図である。コンピュータ・システム１０は、ＯＳが導入されたサーバやクライアントなどである。コンピュータ・システム１０は、それぞれバス２３に接続されたＣＰＵ１１、メイン・メモリ１３、ネットワーク・カード１５、ＨＤＤ１７、液晶表示装置（ＬＣＤ）１９、およびキーボード２１などを含んでいる。これらのハードウエア・デバイスの機能は、本実施の形態に関しては周知であるため説明は省略する。
【００２２】
［ソフトウエア構成］
図２は、コンピュータ・システム１０に実装されたプログラム・モジュールの構成を示す機能ブロック図である。図２に示したソフトウエアの各モジュールは、管理プログラム・モジュール群１００とその他の周知のプログラム・モジュール群で構成されておりＨＤＤ１７に格納されている。なお図２のプログラム・モジュールには、データベースやファイルといった範疇のデータの集合体も含んでいる。図２に示した各プログラム・モジュールの機能は、プログラムがＨＤＤ１７からメイン・メモリ１３にロードされ、ＣＰＵ１１で実行されている状態または実行可能な状態として形成される。各プログラム・モジュールは、ＯＳの一部が直接、または、アプリケーションがＯＳのサービスを利用してＣＰＵ１１、メイン・メモリ１３、バス２３などに働きかけて実現される。周知のプログラム・モジュール群は、オリジナルの設定情報データベース（ＤＢ）５０、ＯＳモジュール５１、アプリケーション５３、データベース・エディタ（ＤＢエディタ）５５、およびＯＳモジュール６１を含んでいる。
【００２３】
設定情報ＤＢ５０はＯＳの一部として組み込まれており、ハードウエアの構成情報、デバイス・ドライバの設定情報、ＯＳの設定情報、アプリケーション・プログラムの環境情報、システムの管理情報、ファイル関連付け情報およびセキュリティ情報などを登録している。Ｗｉｎｄｏｗｓ（登録商標）のＯＳではこのような情報が登録されたデータベースをレジストリと称している。ただし、本発明にかかる設定情報ＤＢ５０はコンピュータ・システム１０にネットワークを経由して接続される形態で提供するようにしてもよい。ＯＳモジュール５１およびアプリケーション５３は設定情報ＤＢ５０にアクセスしてデータを更新したり参照したりする。
【００２４】
ＤＢエディタ５５は、ＬＣＤ１９に設定情報ＤＢ５０または設定情報ＤＢ１０１の編集画面を表示しユーザがそれらのデータを編集するためのプログラムである。ＯＳモジュール６１は、コンピュータ・システム１０に不安定な動作状態をもたらすエラーを検知してシステム状態監視部１０９に通知するプログラムである。不安定な動作状態をもたらすエラーは、たとえばブルースクリーンという画面で表示され、実行中のプロセスやドライバがアクセス許可の与えられていないメモリ領域にアクセスしたり、ＣＰＵが無効な命令を発行したり、セキュリティが保証できなくなったりといった障害が発生している状態を含む。
【００２５】
ＯＳモジュール５１はコンピュータ・システム１０の出荷当初から、あるいは出荷後に信頼できる環境下でＯＳの一部としてインストールされており、設定情報ＤＢ５０に対してデータの書き換え要求をする信頼のおけるプログラムとして扱う。アプリケーション５３は、コンピュータ・システム１０で動作するためにみずからに関連する設定情報を設定情報ＤＢ５０に登録し、動作時にはそれを参照する。アプリケーション５３は、ユーザの意図に反してコンピュータ・システム１０にインストールされ、設定情報ＤＢ５０に対してデータの不正な書き換え要求をするプログラムであることも想定している。以後の説明においては、ＯＳモジュール５１またはアプリケーション５３のいずれかをリクエスタ５９という場合もある。管理プログラム・モジュール群１００は、管理用設定情報データベース（ＤＢ）１０１、ホワイト・リスト１０３、編集部１０５、ユーザ・インターフェース１０７、システム状態監視部１０９、書き込み処理部１１１、読み取り処理部１１３、およびリクエスト処理部１１５で構成されている。
【００２６】
リクエスト処理部１１５は、リクエスタ５９が行った設定情報ＤＢ５０に対するアクセス要求の内容を判断して、その要求を書き込み処理部１１１、読み取り処理部１１３または設定情報ＤＢ５０のいずれかに渡す。具体的には、リクエスト処理部１１５は、リクエスタ５９による設定情報ＤＢ５０に対するキー・パスの作成、設定値の書き込みおよび設定値の削除に関する要求を書き込み処理部１１１に渡し、設定値の読み取りに関する要求を読み取り処理部１１３に渡しそれ以外の要求を設定情報ＤＢ５０に渡す。リクエスト処理部１１５のこのような機能はたとえば、リクエスタ５９が設定情報ＤＢ５０にアクセスするためのＯＳのサービス関数を監視して、キー・パスの作成、設定値の書き込み、および設定値の読み取りに関するサービス関数だけをフックして書き込み処理部１１１または読み取り処理部１１３に渡し、その他のサービス関数を設定情報ＤＢ５０に渡すことで実現することができる。したがって本発明の実施形態を実現する上で、リクエスタ５９が設定情報ＤＢ５０にアクセスするために利用していたサービス関数を変更する必要はない。フックするサービス関数としては、たとえばＷｉｎｄｏｗｓ（登録商標）では、RegCreateKeyEx、RegDeletekey、RegGetValue、RegQueryValueEx、RegSetKeyValueなどのサービス関数を挙げることができる。
【００２７】
書き込み処理部１１１は、リクエスト処理部１１５から受け取った設定情報ＤＢ５０に対する書き込み要求にかかるデータをすべて設定情報ＤＢ１０１に対して書き込む。なお、書き込み要求には、キー・パスおよび設定値の削除も含む。書き込み処理部１１１は、設定情報ＤＢ１０１にデータを書き込むときに、リクエスタ５９がホワイト・リスト１０３に登録されているか否かを確認してその結果も併せて書き込む。読み取り処理部１１３は、リクエスト処理部１１５から設定情報ＤＢ５０に対する設定値の読み取り要求を受け取った場合に、設定情報ＤＢ１０１に要求された設定値が存在するか否かを判断して、要求された設定値が時系列ユニット１５１ｎとして設定情報ＤＢ１０１に存在する場合は、そこから読み取った設定値を、リクエスト処理部１１５を経由してリクエスタ５９に返送する。
【００２８】
読み取り処理部１１３は、要求された設定値が設定情報ＤＢ１０１に存在しない場合はリクエスト処理部１１５にその旨を伝える。そして、リクエスト処理部１１５は、その要求を設定情報ＤＢ５０に渡す。設定情報ＤＢ１０１は、管理プログラム・モジュール群が動作を開始したあとの設定情報ＤＢ５０に対する書き込み要求をすべて反映させる。設定情報ＤＢ１０１は、当初は一切のデータが登録されていない空の状態でコンピュータ・システム１０に提供される。そして、リクエスタ５９から設定情報ＤＢ５０への書き込み要求があった場合にその都度書き込みデータおよびリクエスタに関する情報を登録する。また、設定情報ＤＢ１０１は、リクエスタ５９から設定情報ＤＢ５０に対する読み取り要求があった場合に、自らがその要求に合致したデータを保有するときはリクエスト処理部１１５を経由してリクエスタ５９に返送する。
【００２９】
ホワイト・リスト１０３は、信頼できるプログラムが生成したプロセスをプロセスの属性として登録するリストである。ホワイト・リスト１０３には当初、ＯＳの機能を実現するシステム・プロセスや、当初からＯＳの一部として組み込まれたモジュールや、ＯＳと同時にインストールされたアプリケーションなどの信頼のできる最小限のプログラムが生成したプロセスだけを登録する。ＤＢエディタ５５は、ユーザが誤ってレジストリを更新する場合に対処するために、つねにホワイト・リストへ登録しないようにすることができる。ホワイト・リスト１０３は、最初そこに登録されたプロセスまたはそれを生成したプログラムの信頼性をこのようにして保証する。それ以後にホワイト・リスト１０３に登録されたプロセスの信頼性を維持する方法については後に説明する。編集部１０５は、ユーザ・インターフェース１０７またはシステム状態監視部１０９からのクリーンアップ要求またはホワイト・リストの更新要求に基づいて、設定情報ＤＢ１０１をクリーンアップしたり初期化したりする。ユーザ・インターフェース１０７は、ユーザの意図または１週間といった定期的な頻度でＬＣＤ１９に操作画面を表示して、ユーザに設定情報ＤＢ１０１のクリーンアップ若しくは初期化またはホワイト・リスト１０３の更新をするか否かを確認させて実行するプログラムである。
【００３０】
ユーザは、たとえばネットワークから新しいプログラムをコンピュータ・システム１０にダウンロードしたあとに、プログラムの反応速度が遅くなったり、ブート時間が遅くなったり、あるいはシステムが不審な挙動をすることに気づくことがある。そのような場合にユーザは、設定情報ＤＢ１０１をクリーンアップしたり初期化したりしてコンピュータ・システムが安定していたときの状態に戻すことができる。また、ユーザはコンピュータ・システム１０の動作を一定期間の間確認して、設定情報ＤＢ１０１にデータを書き込んだプロセスのプログラムが安全であると判断したときに、そのプロセスをホワイト・リスト１０３に登録するようにユーザ・インターフェース１０７に指示することができる。
【００３１】
ユーザ・インターフェース１０７は、ユーザが設定情報ＤＢ１０１のクリーンアップ要求をしたときに、その旨を編集部１０５に伝える。システム状態監視部１０９は、コンピュータ・システム１０のブート時間や特定のプログラムの実行時間を監視して、それらが所定値以上長くなった場合に、編集部１０５に設定情報ＤＢ１０１のクリーンアップ要求をする。システム状態監視部１０９はまた、ＯＳモジュール６１からコンピュータ・システム１０が不安定な動作をしているとの通知を受け取った場合に、編集部１０５に設定情報ＤＢ１０１のクリーンアップを要求する。システム状態監視部１０９はまた、ＯＳモジュール６１からコンピュータ・システム１０が不安定な動作をしているとの通知を所定期間受け取らなかった場合に、編集部１０５にホワイト・リスト１０３の更新要求をする。例えば、特定のプログラムのＣＰＵ使用率が１００％になったまま所定の時間を経過したことが観測された場合や、不安定なプログラムとしてユーザが認識したプログラムをタスクマネージャ等から停止動作を繰り返した履歴なども、このような通知を自動的に行うための判断材料として利用できる。
【００３２】
図２に示した管理プログラム・モジュール群１００の構成は一例であり、例示したモジュールを統合したり分割したりして構成することができる。また、各モジュールの動作環境はユーザ・モードであったり、カーネル・モードであったりする。また、各モジュールはＯＳ上で動作するアプリケーションであったり、ＯＳの一部として組み込まれたカーネルやドライバであったりする。図２の管理プログラム・モジュール群１００の機能を実現するソフトウエアはいかなる名称のモジュールまたはそれらの組み合わせであってもすべて本発明の範疇に入る。
【００３３】
［オリジナルの設定情報ＤＢの構成］
図３は、設定情報ＤＢ５０の構成の一例を示す図である。設定情報ＤＢ５０は、ルート・キーＡ〜Ｅと各ルート・キーに連絡するサブ・キーを含んでいる。ルート・キーおよびサブ・キーは設定情報を分類して格納場所の位置を示すための識別記号である。各サブ・キーはルート・キー、上位のサブ・キーまたは下位のサブ・キーに連絡する階層構造になっている。最下位のサブ・キーをテール・キーということにする。各テール・キーからルート・キーまでのキーの連結構造をキー・パスということにする。各テール・キーには、設定名称と設定値が対応している。設定名称と設定値を併せてエントリということにする。また、あるテール・キーに関するキー・パスとエントリを含めてキー・データということにする。設定値には、設定値のデータ型式に関する情報を含むようにしてもよい。
【００３４】
［管理用の設定情報ＤＢの構成］
図４は、設定情報ＤＢ１０１の構成を示す図である。図４（Ａ）は設定情報ＤＢ１０１の全体構成を示している。設定情報ＤＢ１０１は時系列データ・ブロック１５１、更新データ・ブロック１５３、および設定値履歴ブロック１５５で構成されている。図４（Ｂ）は、時系列データ・ブロック１５１に含まれるデータの１ユニットまたは１エントリである時系列データ・ユニット１５１ｎのデータ構成を示している。時系列データ・ユニット１５１ｎは、リクエスタ５９からの書き込み要求に基づいて、書き込み処理部１１１がデータを書き込んだときの書き込み時の情報、書き込みデータに関する情報および書き込み要求をしたプロセスまたはプログラムに関する情報を含む。書き込み時の情報は、書き込み時刻、時系列データ・ユニット１５１ｎを一意に識別するＧＵＩＤ、および書き込み要求をしたプロセスのホワイト・リストへの登録の有無を含む。書き込みデータに関する情報は、キー・パスとエントリを含む。書き込み要求をしたプログラムに関する情報は、プロセス名、当該プログラムを利用したアカウント名、プログラムのファイル・サイズ、バージョン情報、格納場所を示すファイル・パスを含む。
【００３５】
時系列データ・ユニット１５１ｎは、リクエスタ５９が設定情報ＤＢ５０に書き込み要求をするたびに、時系列データ・ブロック１５１に時系列に追加されてゆく。追加された時系列データ・ユニット１５１ｎは、後に説明するようにクリーンアップ要求がされるまで、時系列データ・ブロック１５１に保管される。図５は更新データ・ブロック１５３と設定値履歴ブロック１５５のデータ構造を示す図である。更新データ・ブロック１５３はリスト構造になっており、１つのレコードがキー・パス（ルート・キーとサブ・キー）、エントリ（設定名と設定値）、および設定値履歴ブロック１５５の所定のアドレスに対するポインタで構成されている。設定値履歴ブロック１５５は、更新データ・ブロック１５３の１レコードに対応する１エントリが設定値とＧＵＩＤとポインタで構成され、時系列データ・ブロック１５１に登録された時系列データ・ユニット１５１ｎの時間的な順番に追加される。
【００３６】
書き込み処理部１１１は時系列データ・ブロック１５１に新しい時系列データ・ユニット１５１ｎを書き込む際に、更新データ・ブロック１５３と設定値履歴ブロック１５５を更新する。書き込み処理部１１１は、時系列データ・ブロック１５１に、更新データ・ブロック１５３に登録されていない新しいキー・データに関する時系列データ・ユニット１５１ｎを書き込んだときには、更新データ・ブロック１５３にキー・パスとエントリからなるキー・データを登録する。同一のテール・キーに対する設定値が更新データ・ブロック１５３に２回書き込まれるときには、書き込み処理部１１１は、設定値履歴ブロック１５５に２回目の設定値とＧＵＩＤを追加し、更新データ・ブロック１５３に設定値履歴ブロック１５５に対するポインタを登録する。同一のテール・キーに対する設定値が３個以上追加されるときは設定値履歴ブロック１５５に直前の設定値との間をポインタで連結して登録する。そして書き込み処理部１１１は、更新データ・ブロック１５３の設定値を、つねに最新の設定値に置き換える。
【００３７】
図５では、更新データ・ブロック１５３に、ａ２１のテール・キーに対応するエントリとして設定名がａａ２１として、設定値が値２１−４として登録されている。そして、設定値履歴ブロック１５５は、ａａ２１の設定値が、値２１−１、値２１−２、値２１−３、値２１−４と４回追加して書き込まれた状態を示している。書き込み処理部１１１は、同一のテール・キーに対する設定値が変更されるたびにそれを設定値履歴ブロック１５５に登録するとともに、更新データ・ブロック１５３の設定値を最新の値に置き換える。図５では、設定値２１−４が最新であるため、更新データ・ブロック１５３の設定名ａａ２１には設定値として値２１−４が登録されている。
【００３８】
［ホワイト・リストの構成］
図６は、ホワイト・リスト１０３のデータ構造を示す図である。ホワイト・リスト１０３には、信頼できるプログラムが生成したプロセスの属性が登録されている。ホワイト・リスト１０３の各レコードは、プロセス名、当該プロセスを生成したプログラムのファイル・サイズ、プログラムの所在を示すファイル・パス、プログラムのバージョン情報、およびホワイト・リストへの登録日時で構成されている。ホワイト・リスト１０３へは当初はＯＳまたはそれと同時にインストールされたアプリケーションが登録されるが、その後は時系列データ・ブロック１５１に書き込まれた時系列データ・ユニット１５１ｎのなかで、コンピュータ・システム１０またはユーザが信頼性を認識したプログラムだけが追加される。信頼性の認識方法は、後に説明する。
【００３９】
書き込み処理部１１１は、時系列データ・ブロック１５１に時系列データ・ユニット１５１ｎを書き込むときに、リクエスタ５９が生成したプロセスに関する情報が、ホワイト・リストのすべての項目について一致する場合に、ホワイト・リスト１０３に登録されているプロセスによる書き込みであると判断して時系列データ・ブロック１５１のホワイト・リスト１０３への登録の欄に”ｋｎｏｗｎ”と記述し、いずれかの項目が異なる場合はホワイト・リスト１０３には登録されていないプロセスによる書き込みであると判断してホワイト・リストへの登録の欄に”ｕｎｋｎｏｗｎ”と記述する。
【００４０】
［レジストリ管理の手順］
図７〜図１０は、管理プログラム群１００によるオリジナルの設定情報ＤＢ５０を管理する手順を示すフローチャートである。図７のブロック２０１では、コンピュータ・システム１０に電源が投入され、図２に示したプログラム、データベース、およびファイルなどがメイン・メモリ１３にロードされている。設定情報ＤＢ１０１には、書き込み処理部１１１により複数のキー・データが登録されているものとする。
【００４１】
図７のブロック２０３では、リクエスタ５９から設定情報ＤＢ５０に対して書き込み要求があるか否かをリクエスト処理部１１５が判断する。書き込み要求がある場合は、リクエスト処理部１１５はそれを書き込み処理部１１１に渡してブロック２０５に移行し、書き込み要求がない場合はブロック２０７に移行する。ブロック２０５では、書き込み処理部１１１が設定情報ＤＢ５０ではなく設定情報ＤＢ１０１に対してデータの書き込みを行う。図８は書き込み処理の手順を示すフローチャートである。
【００４２】
図８のブロック２５１では、書き込み処理部１１１はホワイト・リスト１０３の項目と、リクエスタ５９の書き込み要求から取得したプロセス名、ファイル・サイズ、ファイル・パス、バージョン情報とをそれぞれ比較して完全に一致するものがホワイト・リストに登録されているか否かを判断する。ブロック２５３では、書き込み処理部１１１は、時系列データ・ブロック１５１に図４（Ｂ）に示した時系列データ・ユニット１５１ｎの形式でデータを登録する。そのとき、時系列データ・ユニット１５１ｎの内容とホワイト・リスト１０３との比較で完全に一致するレコードがホワイト・リスト１０３に登録されている場合は、時系列データ・ユニット１５１ｎのホワイト・リストへ１０３への登録の欄に、安全なプロセスによる書き込みを示すｋｎｏｗｎを記述し、完全に一致するレコードがない場合は危険な可能性があるプロセスによる書き込みを示すｕｎｋｎｏｗｎを記述する。
【００４３】
ブロック２５５で書き込み処理部１１１は、更新データ・ブロック１５３を参照して書き込み要求がすでに登録されたキー・パスに対する設定値の更新であるか否かを判断する。すでに登録されたキー・パスに対する設定値の更新である場合は、ブロック２５７に移行して設定値履歴ブロック１５５に現在登録されている最新の設定値に対してポインタで連結した新しい設定値を登録する。ブロック２５９で書き込み処理部１１１は、更新データ・ブロック１５３の設定値の欄を最新の設定値で置き換える。
【００４４】
ブロック２５５で書き込み処理部１１１は、書き込み要求が初めて登録するキー・データであると判断した場合にはブロック２６１で更新データ・ブロック１５３にキー・データを登録する。以上の書き込み処理の手順によれば、設定情報ＤＢ５０に対する最新の更新データが時系列データ・ブロック１５１および更新データ・ブロック１５３にそれぞれのデータ構造に基づいて登録される。読み取り処理部１１３は読み取り要求を受け取ったときに更新データ・ブロックの最新の設定値を検索する。
【００４５】
図７に戻ってブロック２０７では、リクエスタ５９から設定情報ＤＢ５０からの読み取り要求があるか否かをリクエスト処理部１１５が判断する。読み取り要求がある場合はリクエスト処理部１１５は、それを一旦読み取り処理部１１３に渡してブロック２０９に移行し、読み取り要求がない場合はブロック２１１に移行する。図９は、読み取り処理の手順を示すフローチャートである。ブロック２７１では、読み取り処理部１１３は、読み取り要求にかかる設定値が更新データ・ブロック１５３に登録されているか否かを判断する。登録されている場合はブロック２７３に移行して、読み取り処理部１１３は更新データ・ブロック１５３の最新の設定値を、リクエスト処理部１１５を経由してリクエスタ５９に返送する。
【００４６】
要求にかかる設定値が更新データ・ブロック１５３に登録されていない場合は、ブロック２７５に移行して、読み取り処理部１１３は読み取り要求をリクエスト処理部１１５に返送する。ブロック２７７ではリクエスト処理部１１５は設定情報ＤＢ５０に読み取り要求を渡して、設定情報ＤＢ５０からリクエスタ５９に設定値が返送されるようにする。図７に戻ってブロック２１１では、編集部１０５は、ユーザ・インターフェース１０７またはシステム状態監視部１０９から設定情報ＤＢ１０１に対するクリーンアップの要求があるか否かを判断する。
【００４７】
設定情報ＤＢ１０１には、コンピュータ・システム１０の稼働時間の経過にともない多くのキー・データが登録され、コンピュータ・システム１０はそのキー・データを読み取って動作する。そして、設定情報ＤＢ１０１には、削除済みのアプリケーションに関するキー・データが削除されないで残っていたり、また、悪意のあるプログラムが登録した不正なキー・データが存在していたりすることがある。利用することのない設定値や不正な設定値はコンピュータ・システム１０の動作を不安定にさせることがある。クリーンアップとは、設定情報ファイル１０１に存在するそのような不要なキー・データを除去して正当なキー・データに書き換えることをいう。ここで、クリーンアップが単に不要なキー・データを削除するだけでなく、以前に登録していた正当なキー・データに変更する点は本発明の実施形態における特徴的な手法である。
【００４８】
編集部１０５がクリーンアップの必要性を認識したときは、ブロック２１３に移行してクリーンアップを実行する。編集部は、クリーンアップの必要性を、ユーザ・インターフェース１０７またはシステム状態監視部１０９からのクリーンアップ要求で判断する。図１０は、クリーンアップ処理の手順を示すフローチャートである。編集部１０５はブロック３０１で、更新データ・ブロック１５３に登録されたリスト上での最初のキー・データを選択する。編集部１０５はブロック３０３で時系列データ・ブロック１５１において同一のキー・パスに関する時系列データ・ユニット１５１ｎを最新のものから時間を遡って検索し、ホワイト・リスト１０３への登録の欄にｋｎｏｗｎが記述された最新の時系列データ・ユニットを探す。そして、編集部１０５はｋｎｏｗｎが記述された最新の時系列データ・ユニット１５１ｎを選択して、ブロック３０５で更新データ・ブロック１５３の設定値の欄を当該時系列・ユニット１５１ｎに登録された値に置き換える。編集部１０５は、ブロック３０７で同一のキー・パスに関して選択したｋｎｏｗｎが記述された最新の時系列データ・ユニット１５１ｎよりも後に登録されたｕｎｋｎｏｗｎが記述されたすべての時系列データ・ユニット１５１ｎを時系列データ・ブロック１５１から削除する。編集部１０５は、削除した時系列データ・ユニット１５１ｎに対応する設定値履歴ブロック１５５のエントリをＧＵＩＤで検索してそれらをすべて削除する。
【００４９】
編集部１０５はブロック３０９で、更新データ・ブロック１５３に登録されたすべてのキー・パスについて、ブロック３０３からブロック３０７までの処理が終了したか否かを判断して、終了していない場合はブロック３１１に移行してつぎのキー・パスを選択して同じ処理を繰り返す。更新データ・ブロック１５３のすべてのキー・パスの設定値の欄が時系列・ユニット１５１ｎにおいてｋｎｏｗｎを伴う値に置き換えられたときにクリーンアップの処理が終了する。クリーンアップが終了すると、更新データ・ブロック１５３に登録されている設定値は、信頼できるプログラムが生成したプロセスにより書き込まれた値となるため、設定情報ＤＢ１０１に存在していた不安定なシステムの原因を除去することができる。
【００５０】
上記の手順によるクリーンアップの処理は、更新データ・ブロック１５３の設定値をホワイト・リストで保証されたプロセスが書き込んだ値に変更するだけであるため、処理も簡単で短時間で終了することができる。図７に戻って、ブロック２１５ではコンピュータ・システム１０を出荷時の状態に戻すために、設定情報ＤＢ１０１を初期化する必要性があるか否かをユーザが判断してユーザ・インターフェース１０７を通じて編集部１０５に指示する。初期化の判断は、システムが深刻な不安定状態に陥った場合に、クリーンアップでは回復できないと判断したような場合にユーザが行うことを想定している。
【００５１】
編集部１０５は、ユーザ・インターフェース１０７から初期化の指示を受け取ると、ブロック２１７で時系列データ・ブロック１５１、更新データ・ブロック１５３、および設定値履歴ブロック１５５のすべてのデータを削除する。このとき、編集部１０５は、キー・パスの中で、ドライバ、サービス、セキュリティ、またはアプリケーションなどの特定の問題に関連するカテゴリーに関連するデータだけを削除してもよい。特定のカテゴリーを対象にして初期化すれば、初期化されない良好なカテゴリーのキー・データを維持することができる。初期化が行われると、それ以後の読み取り要求に対しては設定情報ＤＢ５０から設定値を返送しながら、設定情報ＤＢ１０１にデータを書き込んでゆくことになる。
【００５２】
ブロック２１９では、ユーザ・インターフェース１０７は１週間程度の頻度でＬＣＤ１９にポップアップ画面を表示して、ホワイト・リスト１０３の更新をするか否かを問い合わせる。ユーザは最近のコンピュータ・システム１０の挙動に異常がないと判断したときは、ユーザ・インターフェース１０７を通じて編集部１０５にホワイト・リスト１０３の更新を指示することができる。あるいは、システム状態監視部１０９は、一定期間システム状態に異常を検知しないときは、編集部１０５にホワイト・リスト１０３の更新を指示してもよい。
【００５３】
ホワイト・リスト１０３の更新の指示を受けた編集部１０５は、すべてのキー・データについて、データ更新ブロック１５３に最新の設定値を登録したｕｎｋｎｏｗｎが記述された時系列データ・ユニット１５１ｎのプロセスをホワイト・リスト１０３に追加する。こうすることで、それらのプロセスは安全性が認められたものとして扱われ、次回からはクリーンアップする設定値の選択に使用されることになる。ブロック２２３でコンピュータ・システム１０のシャットダウン操作が行われると、シャットダウンする前に、ブロック２２５でＨＤＤ１７に設定情報ＤＢ１０１のデータが格納される。
【００５４】
以上、ホワイト・リストに基づいて設定情報ＤＢ１０１をクリーンアップする方法を説明したが、これは従来のブラック・リスト方式に基づいてクリーンアップする方法とはアプローチの仕方が逆であり優位性がある。ホワイト・リスト方式では、最初に、信頼が確実なプロセスだけを登録し、それ以降は、コンピュータ・システム１０またはユーザが信頼性を認めたプロセスだけを登録する。個々のコンピュータ・システムにおいて設定情報ＤＢ１０１の更新に起因するプロセスの信頼性を確認するには、設定情報を登録してからある程度の時間が必要となる。
【００５５】
本発明では、一旦はすべての書き込み要求に応じて設定情報ＤＢ１０１への書き込みを許可するが、その時点での書き込みは、ホワイト・リストに登録されていないプロセスによるものであるため、信頼性の評価は保留しておく。そしてユーザまたはシステムがコンピュータの動作状態を確認してプロセスの信頼性を確認したときにホワイト・リストに登録する。信頼性を確認する前にコンピュータが不安定な動作をした場合は、信頼性が確認されたプロセスが書き込んだ設定情報に戻すことができる。よって、ブラック・リスト方式のように、他者からブラック・リストのデータを入手して対処する必要がなく迅速な対応をすることができる。また、ブラック・リストに記述されていないが、システムに異常をもたらすようなプロセスが存在するような場合にも対処することができる。さらに、問題のある設定値を削除するだけでなく、過去に問題がなかった設定値に戻すことができる。
【００５６】
これまで説明した設定情報データベースはＷｉｎｄｏｗｓ（登録商標）のＯＳが採用するレジストリに限らない。たとえば、ＡＩＸ（登録商標）のＯＤＭ（Object Data Manager）、サン・マイクロシステムズ社のSun Service Registry 3.1、ＯｐｅｎＶＭＳ(Open Virtual Memory System) のレジストリなどのさまざまなＯＳで採用する設定情報を格納するデータベースに適用することもできる。これらのＯＳにおいてもさまざまなプロセスから設定情報データベースにアクセスする場合に、管理用の設定情報ＤＢおよびホワイト・リストを用いて更新の管理をすることで、初期化およびクリーンアップを簡単に行ったり、不正な書き換えにより発生するシステムの不安定な動作を迅速に回避したりすることができる。
【００５７】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【００５８】
１０…コンピュータ・システム
５９…リクエスタ
１００…管理プログラム・モジュール群
１５１n…時系列データ・ユニット
【図１】
2011053741.tif 000003
【図２】
2011053741.tif 000004
【図３】
2011053741.tif 000005
【図４】
2011053741.tif 000006
【図５】
2011053741.tif 000007
【図６】
2011053741.tif 000008
【図７】
2011053741.tif 000009
【図８】
2011053741.tif 000010
【図９】
2011053741.tif 000011
【図１０】
2011053741.tif 000012
【図１１】
2011053741.tif 000013