以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の管理装置を示す図である。管理装置1は、システムに含まれるソフトウェアの管理を行う。システムはマシン2,3,4を含む。管理装置1は、ネットワークを介してマシン2,3,4と通信する。マシン2,3,4は、サーバやクライアントなどの物理マシンでもよいし、物理マシン上で動作する仮想マシンでもよい。管理装置1は、マシン2,3,4からインベントリ情報を収集し、マシン2,3,4が有するソフトウェアを管理する。
管理装置1は、記憶部1aおよび演算部1bを有する。記憶部1aは、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。演算部1bは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。
記憶部1aは、マシン2,3,4から収集したインベントリ情報を記憶する。インベントリ情報は、登録ソフト情報、OSが管理するOS管理情報およびファイル情報を含む。記憶部1aは、登録ソフト情報(ソフトウェアをソフトと略記することがある)、OS管理情報およびファイル情報を、マシン2,3,4それぞれの識別情報に対応付けて記憶する。
ここで、登録ソフト情報は、マシン2,3,4それぞれに対応するソフトウェア一覧の情報である。ソフトウェア一覧は、マシン2,3,4で実行されるOSにより管理されるソフトウェア名の一覧である。当該OSによる管理対象外のソフトウェアがマシン2,3,4にインストールされていても、登録ソフト情報には含まれないことになる。
例えば、ソフトウェアのインストール時に、当該ソフトウェアが、OSにより管理されるソフトウェア一覧の情報に自ソフトウェアの情報を登録していれば、ソフトウェア一覧に当該ソフトウェアが登録される。一方、ソフトウェアのインストール時に、当該ソフトウェアが、OSにより管理されるソフトウェア一覧の情報に自ソフトウェアの情報を登録しなければ、ソフトウェア一覧に当該ソフトウェアは登録されない。
OS管理情報は、マシン2,3,4それぞれのOSが管理する情報を含む。例えば、OS管理情報はレジストリ情報と呼ばれるものでもよい。レジストリは、マシン2,3,4それぞれが実行するOSに関する基本情報やアプリケーションソフトウェアの設定情報などである。レジストリは、例えばキーと値とを含む。レジストリ情報はレジストリの集合である。キーは値の格納場所を示す情報であり、ツリー構造をもつ。値はキーに対する具体的な設定値である。レジストリ情報の全体に対する部分をレジストリ範囲と称することがある。OS管理情報は、レジストリのような設定情報の複数の項目の集合である。例えば、以下に示すOS管理情報の項目群の指定は、OS管理情報の範囲(例えば、レジストリ範囲)を特定することで行われてもよい。例えば、項目が特定のツリーの配下すべてに該当する場合は、項目すべてをそれぞれ指定するのではなく、ツリーの上位項目を範囲指定することにより、項目群を特定してもよい。
ファイル情報は、マシン2,3,4それぞれが有するファイルのファイル名およびファイルが格納されているフォルダ(ディレクトリと呼ばれるものでもよい)を示すパスの情報を含む。ファイル情報は、ファイル名を含む。
演算部1bは、管理対象のマシン2,3,4より、OS管理情報、ファイル情報、および、登録ソフト情報をそれぞれ取得し、記憶部1aに格納する。例えば、演算部1bは、あるタイミングにおいて、OS管理情報、ファイル情報および登録ソフト情報をマシン2,3,4から取得する。
演算部1bは、記憶部1aに記憶された登録ソフト情報、および、OS管理情報に基づき、複数のマシンそれぞれにインストールされたソフトウェア、および、当該ソフトウェアが使用する項目群を特定する。
例えば、演算部1bは、あるタイミングにおいて、マシン2,3,4から収集した登録ソフト情報に基づいて、マシン2,3に対してソフトウェアAが新たにインストールされたことを検出する。ただし、前述のように登録ソフト情報から検出できるのはOSのソフトウェア一覧の情報に含まれるソフトウェアであり、OSのソフトウェア一覧の情報に含まれないソフトウェアは検出されない。例えば、演算部1bは、マシン4に対して新たにインストールされたソフトウェアを検出しない。
演算部1bは、OS管理情報に基づいて、マシン2,3,4それぞれに項目が追加されたことを検出する。演算部1bは、マシン2,3に追加された項目同士を比較し、重複する部分(項目群R1)をソフトウェアAに対応付ける。項目群R1は、マシン2,3に追加された項目のうち、同一の情報(例えば、レジストリのキーおよび値)をもつ項目の集合である。例えば、通常、ソフトウェアは、自ソフトウェアに関する情報(例えば、動作用の設定情報など)をインストール時にOS管理情報へ追加する。よって、あるタイミングでの情報収集により、複数のマシンへのソフトウェアAの追加が検出され、同じ複数のマシンでOS管理情報の追加が検出されたとき、同複数のマシンでの当該OS管理情報の重複部分はソフトウェアAに対応するものである可能性が高い。このため、項目群R1をソフトウェアAに対応付けることができる。
演算部1bは、ソフトウェアAが使用するOS管理情報の項目群R1に関する第1の管理情報を生成する。
すると、演算部1bは、マシン2に対して追加されたOS管理情報のうち、使用するソフトウェアが特定されていない項目群R2を検出する。また、演算部1bは、マシン4に対しても、使用するソフトウェアが特定されていないOS管理情報の項目群を検出する。演算部1bは、マシン3に対しては、使用するソフトウェアが特定されていないOS管理情報を検出しない。
演算部1bは、第1の管理情報、および、複数のマシンのファイル情報に基づき、使用するソフトウェアが特定されておらず、かつ、対応するファイルが存在するOS管理情報の項目群を、登録ソフト情報に含まれない第1のソフトウェアが使用するOS管理情報の項目群である第1の項目群として特定する。
例えば、演算部1bは、マシン2における項目群R2とマシン4において追加されたOS管理情報との重複部分を取得する。一例として、演算部1bは、項目群R2を重複部分として取得する。
マシン2,4において同じ項目群R2が追加されたということは、登録ソフト情報には含まれない何らかのソフトウェアが、マシン2,4に対して新たにインストールされたことを示唆する。そこで、演算部1bは、マシン2,3,4のファイル情報を参照し、追加されたフォルダ群のうち、マシン2,4でのみ共通するフォルダ群を取得する。
例えば、演算部1bは、マシン2について、互いに重複しないフォルダ群F1,F2を特定する。フォルダ群F1,F2が重複しないとは、両フォルダ群が同じパスで指定されるフォルダを含まないことを示す。演算部1bは、マシン3について、フォルダ群F11を特定する。フォルダ群F11は、フォルダ群F1の一部分である。演算部1bは、マシン4について、互いに重複しないフォルダ群F12,F2,F3を特定する。フォルダ群F12は、フォルダ群F11の一部分である。また、フォルダ群F3はフォルダ群F1とも重複しない。よって、演算部1bは、マシン2,4でのみ共通するフォルダ群として、フォルダ群F2を取得する。この場合、項目群R2に対応するファイル(フォルダ群F2に格納されたファイル)が存在することになる。
演算部1bは、フォルダ群F2を第1のソフトウェア(すなわち、登録ソフト情報に未登録のソフトウェア)に対応するフォルダ群であると特定する。そして、演算部1bは、フォルダ群F2を項目群R2に対応付ける。これにより、第1のソフトウェアと項目群R2とが対応付けられる。すなわち、演算部1bは、項目群R2を、第1のソフトウェア(未登録のソフトウェア)が使用するレジストリ範囲として特定する。
なお、例えば、演算部1bは、マシン4に対して、追加されたOS管理情報のうち項目群R2を除いた部分である項目群R3を取得することもある。この場合、演算部1bは、項目群R3について、次回以降の情報収集で取得された情報、あるいは、マシン2,3,4以外の他のマシンから収集された情報を用いて何れかのソフトウェアとの対応付けを行ってもよい。
これにより、未登録のソフトウェアに対応するOS管理情報の項目群を特定できる。また、当該項目群をOS管理情報の整理対象から除外することができる。例えば、上記の例において、項目群R2を整理対象とし、項目群R2を削除してしまうと、登録ソフト情報には含まれないが項目群R2を使用する未登録のソフトウェアの動作に支障を来たすおそれがある。そこで、演算部1bは、登録ソフト情報に含まれるソフトウェアに対応付けられなかった項目群についても、マシン2,3,4から収集したファイル情報によって、未登録のソフトウェアに対応付ける。これにより、未登録のソフトウェアが使用する項目群R2を整理対象から除外できる。
また、演算部1bは、未登録のソフトウェアとOS管理情報の項目群とを対応付けた情報から、不要になった項目群を特定することもできる。例えば、項目群R2とフォルダ群F2とを対応付けた後に、マシン2においてフォルダ群F2が削除され、項目群R2が削除されずに残ったとする。この場合、項目群R2を使用するソフトウェア(未登録のソフトウェア)はマシン2からアンインストールされたと判断できる。よって、演算部1bは、項目群R2を削除対象と決定する。演算部1bは、項目群R2を削除することで、OS管理情報の不要な項目群がマシン2に残ることを防げる。その結果、不要な項目群による他のソフトウェアの動作への影響を抑えられる。
例えば、不要な項目群を削除できるため、アンインストールしたソフトウェアの再インストール時や関連する別のソフトウェアのインストール時に、OS管理情報に不要な項目群が残っていることに起因する不具合の発生を抑えられる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、管理サーバ100およびPC(Personal Computer)200,200a,200b,200c,200dを含む。管理サーバ100は、ネットワーク10を介して、PC200,200a,200b,200c,200dと接続されている。ネットワーク10は、例えばLAN(Local Area Network)である。
管理サーバ100は、PC200,200a,200b,200c,200dを管理するサーバコンピュータである。管理サーバ100は、PC200,200a,200b,200c,200dからインベントリ情報を定期的に収集し、PC200,200a,200b,200c,200dにインストールされたソフトウェアを管理する。
PC200,200a,200b,200c,200dは、ユーザが操作するクライアントコンピュータである。PC200,200a,200b,200c,200dは、管理サーバ100からインベントリ情報の収集要求を受信すると、要求に応じてインベントリ情報を管理サーバ100に送信する。
PC200,200a,200b,200c,200dには、様々なソフトウェアがインストールされ得る。また、PC200,200a,200b,200c,200dには、様々なレジストリやファイルなどの情報が追加され得る。管理サーバ100は、PC200,200a,200b,200c,200dからインベントリ情報を収集することで、PC200,200a,200b,200c,200dのOSが管理するソフトウェアの一覧や追加されたレジストリおよびファイルの情報を管理する。
図3は、管理サーバのハードウェア例を示す図である。管理サーバ100は、プロセッサ101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。各ユニットが管理サーバ100のバスに接続されている。
プロセッサ101は、管理サーバ100全体を制御する。プロセッサ101は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。プロセッサ101は、例えばCPU、DSP、ASICまたはFPGAなどである。また、プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM102は、管理サーバ100の主記憶装置である。RAM102は、プロセッサ101に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
HDD103は、管理サーバ100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。管理サーバ100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
画像信号処理部104は、プロセッサ101からの命令に従って、管理サーバ100に接続されたディスプレイ11に画像を出力する。ディスプレイ11としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、有機EL(Electro-Luminescence)ディスプレイなど各種のディスプレイを用いることができる。管理サーバ100は、ディスプレイ11を一体に備えてもよい。
入力信号処理部105は、管理サーバ100に接続された入力デバイス12から入力信号を取得し、プロセッサ101に出力する。入力デバイス12としては、マウスやタッチパネルなどのポインティングデバイスやキーボードなどの各種の入力デバイスを用いることができる。管理サーバ100には、複数の種類の入力デバイスが接続されてもよい。管理サーバ100は、入力デバイス12を一体に備えてもよい。
媒体リーダ106は、記録媒体13に記録されたプログラムやデータを読み取る装置である。記録媒体13として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。また、記録媒体13として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ106は、例えば、プロセッサ101からの命令に従って、記録媒体13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信インタフェース107は、ネットワーク10を介して、PC200,200a,200b,200c,200dと通信を行う。通信インタフェース107は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
なお、PC200,200a,200b,200c,200dも管理サーバ100と同様のハードウェアにより実現できる。
図4は、管理サーバの機能例を示す図である。管理サーバ100は、記憶部110、収集部120、差分抽出部130、分析部140および不要レジストリ判定部150を有する。記憶部110は、例えば、RAM102またはHDD103に確保した記憶領域として実現できる。収集部120、差分抽出部130、分析部140および不要レジストリ判定部150は、例えば、プロセッサ101が実行するプログラムのモジュールとして実現できる。
記憶部110は、レジストリ管理テーブル、ソフトウェア管理テーブル、フォルダ管理テーブル、対応管理テーブルおよび収集時刻テーブルを記憶する。レジストリ管理テーブルは、各PCから収集したレジストリ情報の管理に用いられるテーブルである。ソフトウェア管理テーブルは、各PCから収集したソフトウェア一覧の管理に用いられるテーブルである。フォルダ管理テーブルは、各PCから収集したフォルダ情報の管理に用いられるテーブルである。フォルダ情報は、各PCから収集されるファイル情報(ファイルのパスを含む)から取得することもできる(すなわち、フォルダ情報はファイル情報の一例と考えることができる)。対応管理テーブルは、PCが有するソフトウェアまたはフォルダとレジストリとの対応関係の管理に用いられるテーブルである。収集時刻テーブルは、各PCからレジストリ情報、ソフトウェア一覧、フォルダ情報を収集した時刻の管理に用いられるテーブルである。
ここで、レジストリ情報は、各PCで動作するOSに関する基本情報やアプリケーションソフトウェアの設定情報などを含む。ソフトウェア一覧は、各PCのOSによって管理される登録済みのソフトウェア(以下の説明において、登録ソフトウェアと称することがある)の一覧である。ソフトウェア一覧は、OSによって管理されない未登録のソフトウェア(以下の説明において、未登録ソフトウェアと称することがある)を含まない。
あるソフトウェアがOSのソフトウェア一覧に登録されるか否かは、当該ソフトウェアのインストール時の動作によって決まる。例えば、ソフトウェアのインストーラが、OSにより管理されるソフトウェア一覧の情報に自ソフトウェアのソフトウェア名を登録すれば、当該ソフトウェア名がOSのソフトウェア一覧に登録される。一方、ソフトウェアのインストーラが、OSにより管理されるソフトウェア一覧の情報に自ソフトウェアのソフトウェア名を登録しなければ、当該ソフトウェア名はOSのソフトウェア一覧には登録されない。
また、記憶部110は、収集部120が各PCからレジストリ情報、ソフトウェア一覧およびフォルダ情報を収集するスケジュールの情報を記憶する。例えば、収集のスケジュールは、1日1回(例えば、1日のうちのある時刻)など、スケジュールの情報によって予め定められる。
収集部120は、各PCからレジストリ情報、ソフトウェア一覧およびフォルダ情報を定期的に収集する。収集処理をポーリングと称することがある。収集部120は、収集した各情報をレジストリ管理テーブル、ソフトウェア管理テーブル、フォルダ管理テーブルに登録する。また、収集部120は、各PCから各情報を収集した時刻を収集時刻テーブルに登録する。
差分抽出部130は、今回収集したレジストリ情報、ソフトウェア一覧およびフォルダ情報と前回収集したレジストリ情報、ソフトウェア一覧およびフォルダ情報との差分を抽出する。具体的には、差分抽出部130は、前回収集した情報の中には含まれないが、今回収集した情報の中には含まれるレジストリ、登録ソフトウェアおよびフォルダを、レジストリ、登録ソフトウェアおよびフォルダの増加分として抽出する。
分析部140は、レジストリと登録ソフトウェアとの対応付けを行い、記憶部110に記憶された対応管理テーブルを更新する。具体的には、分析部140は、レジストリ情報の増加分とソフトウェア一覧の増加分に基づいて、登録ソフトウェアに対応するレジストリを特定する。分析部140は、登録ソフトウェアとレジストリとの対応関係を対応管理テーブルに登録する。
分析部140は、何れの登録ソフトウェアにも対応付けられなかったレジストリ情報のうち、PC間で共通するレジストリ群(未対応のレジストリ群)を特定する。ここで、レジストリ群は、第1の実施の形態のOS管理情報の項目群の一例である。そして、分析部140は、特定された当該レジストリを、未登録ソフトウェアに対応付ける。まず、分析部140は、各PCのフォルダ情報の増加分に基づいて、未登録ソフトウェアに対応するフォルダ群を特定する。
具体的には、分析部140は、あるタイミングで収集したフォルダ情報の増分のうち、何れの登録ソフトウェアにも対応付けられなかったレジストリ情報をもつPCのみで共通するフォルダを未登録ソフトウェアに対応するフォルダ群と特定する。なお、何れの登録ソフトウェアにも対応付けられなかったレジストリ情報をもつPCを、未登録ソフトウェアをもつPCと考えることができる。分析部140は、特定したフォルダ群と未対応のレジストリ群との対応関係を、対応管理テーブルに登録する。特定したフォルダ群は未登録ソフトウェアに対応するものなので、未登録ソフトウェアと未対応のレジストリ群とが、対応管理テーブル上で関連付けられることになる。
不要レジストリ判定部150は、記憶部110に記憶された対応管理テーブルに基づいて、不要レジストリの判定を行う。具体的には、不要レジストリ判定部150は、対応管理テーブルに登録された情報から、あるPCにおいて、ソフトウェア一覧になく、かつ、対応するフォルダも存在しないが、レジストリのみが残っているソフトウェア(未検出ソフトウェアと称することがある)を特定する。未検出ソフトウェアは、既にアンインストールされたソフトウェアであるが、削除漏れなどにより、対応するレジストリのみが残っているソフトウェアである。当該レジストリが残っていると、他のソフトウェアの動作に影響を与える可能性があるため、不要レジストリ判定部150は、当該レジストリが残っているPCに不要レジストリの削除指示を行う。削除指示を受けたPCは、指示された不要レジストリを削除する。
図5は、レジストリの例を示す図である。レジストリ20は、キーおよび値を含む。値は、データ名およびデータを含む。キーは、ツリー構造により値の格納場所を指定する情報である。値に含まれるデータ名は、レジストリに登録されたデータの名称(例えば、“DM Group”など)である。値に含まれるデータは、データの設定値(例えば、“5”など)である。データの設定値として、データ名“DM FullPath Name”のようにファイル名“C:\Sw\mpw.dm”が設定されることもある。なお、当該ファイル名はフルパスで指定されており、“C:\Sw\”の部分(パス部分)は、当該ファイルを格納しているフォルダを示している。
図6は、ポーリングの例を示す図である。図6では、収集部120が定期的にPC200からレジストリ情報31およびソフトウェア一覧32を収集する例を示している。例えば、収集部120は、スケジュールされた時刻T1,T2,T3にPC200からレジストリ情報31およびソフトウェア一覧32を収集する(ポーリング)。なお、図示を省略しているが、収集部120は、時刻T1,T2,T3においてPC200からフォルダ情報も収集する。ポーリングの時刻によって、収集される情報は異なる。時間の経過とともに、PC200に対してソフトウェアがインストールされたりアンインストールされたりするからである。
例えば、時刻T2に収集されたレジストリ情報31には、ソフトウェアA,B,C,Dに関するレジストリが含まれる。時刻T2に収集されたソフトウェア一覧32には、ソフトウェアA,Bが含まれる。なお、ソフトウェアDは未登録ソフトウェアである。このため、時刻T2に収集されたソフトウェア一覧32にはソフトウェアDが含まれない。また、時刻T2に収集されたソフトウェア一覧32にはソフトウェアCが含まれない。時刻T2の時点でアンインストールされているためである。また、時刻T2に収集されたレジストリ情報31にソフトウェアCのレジストリが含まれるのは、ソフトウェアCのアンインストール時に、ソフトウェアCのレジストリが削除されずに残ったためである。
なお、図6では、説明を分かりやすくするため、便宜的に“ソフトウェアAに関するレジストリ”などとレジストリをソフトウェア名でラベルしている。しかし、収集部120がレジストリ情報31およびソフトウェア一覧32を収集した時点では、管理サーバ100は、ソフトウェアとレジストリとの対応関係を把握していない。
図7は、レジストリ管理テーブルの例を示す図である。レジストリ管理テーブル111,111aは、記憶部110に格納される。レジストリ管理テーブル111は、今回(今回のポーリング時に)収集されたレジストリ情報である。レジストリ管理テーブル111aは、前回(前回のポーリング時に)収集されたレジストリ情報である。記憶部110は、レジストリ管理テーブル111,111aにより、少なくとも最新の2回分のレジストリ情報を記憶する。以下では、レジストリ管理テーブル111に登録される情報を例示するが、レジストリ管理テーブル111aにも同様の情報が登録される。
レジストリ管理テーブル111は、マシンID(IDentifier)およびレジストリの項目を含む。マシンIDの項目には、PCの識別情報(マシンID)が登録される。レジストリの項目には、レジストリのキーおよび値を示す情報が登録される。
例えば、レジストリ管理テーブル111には、マシンIDが“PC1”およびレジストリが“RG11”という情報が登録される。これは、PC200(マシンID“PC1”)から今回収集されたレジストリ情報に、レジストリ“RG11”が含まれていることを示す。レジストリ管理テーブル111には、PC200のレジストリ情報に含まれる複数のレジストリが登録される。
また、レジストリ管理テーブル111には、PC200a,200b,200c,200dから収集されたレジストリ情報も同様に登録される。マシンID“PC2”は、PC200aのマシンIDである。マシンID“PC3”は、PC200bのマシンIDである。マシンID“PC4”は、PC200cのマシンIDである。マシンID“PC5”は、PC200dのマシンIDである。
図8は、ソフトウェア管理テーブルの例を示す図である。ソフトウェア管理テーブル112,112aは、記憶部110に格納される。ソフトウェア管理テーブル112は、今回収集されたソフトウェア一覧である。ソフトウェア管理テーブル112aは、前回収集されたソフトウェア一覧である。記憶部110は、ソフトウェア管理テーブル112,112aにより、少なくとも最新の2回分のソフトウェア一覧を記憶する。以下では、ソフトウェア管理テーブル112に登録される情報を例示するが、ソフトウェア管理テーブル112aにも同様の情報が登録される。
ソフトウェア管理テーブル112は、マシンIDおよびソフトウェア名の項目を含む。マシンIDの項目には、マシンIDが登録される。ソフトウェア名の項目には、ソフトウェア名が登録される。
例えば、ソフトウェア管理テーブル112には、マシンIDが“PC1”およびソフトウェア名が“SW11”という情報が登録される。これは、PC200(マシンID“PC1”)から今回収集されたソフトウェア一覧には、ソフトウェア名“SW11”のソフトウェアが含まれていることを示す。ソフトウェア管理テーブル112には、PC200のソフトウェア一覧に含まれる複数のソフトウェアが登録される。ソフトウェア管理テーブル112には、PC200a,200b,200c,200dから収集されたソフトウェア一覧も同様に登録される。
図9は、フォルダ管理テーブルの例を示す図である。フォルダ管理テーブル113,113aは、記憶部110に格納される。フォルダ管理テーブル113は、今回収集されたフォルダ情報である。フォルダ管理テーブル113aは、前回収集されたフォルダ情報である。記憶部110は、フォルダ管理テーブル113,113aにより少なくとも最新の2回分のフォルダ情報を記憶する。以下では、フォルダ管理テーブル113に登録される情報を例示するが、フォルダ管理テーブル113aにも同様の情報が登録される。
フォルダ管理テーブル113は、マシンID、フォルダ名および作成時刻の項目を含む。マシンIDの項目には、マシンIDが登録される。フォルダ名の項目には、フォルダ名が登録される。フォルダ名は、フルパスの情報を含む。作成時刻の項目には、フォルダが作成された時刻が登録される。
例えば、フォルダ管理テーブル113には、マシンIDが“PC1”、フォルダ名が“FD11”および作成時刻が“Tc11”という情報が登録される。これは、PC200(マシンID“PC1”)から今回収集されたフォルダ情報には、フォルダ名“FD11”のフォルダが含まれていることを示す。また、フォルダ名“FD11”のフォルダがPC200において作成された時刻が“Tc11”であることを示す。フォルダ管理テーブル113には、PC200のフォルダ情報に含まれる複数のフォルダが登録される。フォルダ管理テーブル113には、PC200a,200b,200c,200dから収集されたフォルダ情報も同様に登録される。
図10は、対応管理テーブルの例を示す図である。対応管理テーブル114は、記憶部110に格納される。対応管理テーブル114は、レジストリ、ソフトウェア名およびフォルダ名の項目を含む。
レジストリの項目には、レジストリのキーおよび値を示す情報が登録される。レジストリの項目には複数のレジストリ(レジストリ群)が登録され得る。ソフトウェア名の項目には、ソフトウェア名が登録される。フォルダ名の項目には、フォルダ名が登録される。フォルダ名の項目には複数のフォルダ群が登録され得る。ただし、ソフトウェア名およびフォルダ名の項目には、何れか一方に情報が登録される。例えば、ソフトウェア名が登録される場合、フォルダ名は設定なし“−”(ハイフン)となる。また、フォルダ名が登録される場合、ソフトウェア名は設定なし“−”となる。
例えば、対応管理テーブル114には、レジストリが“RG11,・・・”、ソフトウェア名が“SW11”、フォルダ名が“−”という情報が登録される。これは、レジストリ群“RG11,・・・”がソフトウェア名“SW11”の登録ソフトウェアに対応することを示す。
また、対応管理テーブル114には、レジストリが“RG12,・・・”、ソフトウェア名が“−”、フォルダ名が“FD11,・・・”という情報が登録される。これは、レジストリ群“RG12,・・・”がフォルダ名“FD11,・・・”のフォルダ群に対応することを示す。
図11は、収集時刻テーブルの例を示す図である。収集時刻テーブル115は、記憶部110に格納される。収集時刻テーブル115は、マシンIDおよび収集時刻の項目を含む。マシンIDの項目には、マシンIDが登録される。収集時刻の項目には、各PCに対してポーリングを行った時刻が登録される。
例えば、収集時刻テーブル115には、マシンIDが“PC1”、収集時刻が“Tp1”という情報が登録される。これは、PC200に対して時刻“Tp1”にポーリングを行ったことを示す。
次に、管理サーバ100により実行される処理手順を説明する。
図12は、管理サーバのデータ収集例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
(S11)収集部120は、スケジュールされた時刻に達すると、PC200,200a,200b,200c,200dからデータ収集を行う(ポーリング)。収集されるデータには、レジストリ情報、ソフトウェア一覧およびフォルダ情報が含まれる。
(S12)収集部120は、収集したレジストリ情報を、収集元PCのマシンIDに対応付けてレジストリ管理テーブル111に登録する。収集部120は、収集したソフトウェア一覧を、収集元PCのマシンIDに対応付けてソフトウェア管理テーブル112に登録する。収集部120は、収集したフォルダ情報を、収集元PCのマシンIDに対応付けてフォルダ管理テーブル113に登録する。収集部120は、ポーリングを行った時刻を、ポーリング対象としたPCのマシンIDに対応付けて収集時刻テーブル115に登録する。
(S13)差分抽出部130は、レジストリ情報、ソフトウェア一覧およびフォルダ情報について、今回のポーリング時と前回のポーリング時との差分をマシンID毎に抽出する。例えば、差分抽出部130は、レジストリ管理テーブル111,111aを比較して、レジストリ情報の差分をマシンID毎に抽出する。差分抽出部130は、ソフトウェア管理テーブル112,112aを比較して、ソフトウェア名の差分をマシンID毎に抽出する。差分抽出部130は、フォルダ管理テーブル113,113aを比較してフォルダ情報の差分をマシンID毎に抽出する。これにより、差分抽出部130は、前回ポーリング時からのレジストリ情報、ソフトウェア一覧およびフォルダ情報の増加分を取得する。
(S14)分析部140は、ステップS13で抽出した各情報の増加分に基づいて、登録ソフトウェアとレジストリとの対応関係を決定する。また、分析部140は、登録ソフトウェアに対応付けられなかったレジストリと未登録ソフトウェアとの対応関係を決定する。分析部140は、決定結果により対応管理テーブル114を更新する。詳細は後述される。
(S15)収集部120は、次回ポーリング時刻まで待機する。例えば、ポーリングの周期は、1日1回程度(24時間周期)である。ただし、12時間周期や48時間周期など、他の周期でもよい。そして、処理をステップS11に進める。
図13は、対応管理テーブルの更新例を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。以下の手順はステップS14に相当する。
(S21)分析部140は、レジストリとソフトウェアまたはフォルダとの対応関係の情報を対応管理テーブル114から読み出す。
(S22)分析部140は、ステップS13で抽出したソフトウェア一覧の増加分の中から複数のPCで共通するソフトウェアを特定する。分析部140は、複数のPCのソフトウェア一覧の増加分に含まれるソフトウェア名を特定することで、複数のPCで共通するソフトウェアを特定できる。
(S23)分析部140は、ステップS22で特定した共通のソフトウェアを有する複数のPCについて、ステップS13で抽出したレジストリ情報の増加分の中からレジストリの共通部分(キーおよび値がPC間で共通するレジストリ群)を検出する。レジストリの共通部分の検出は、共通のソフトウェアを有する各PCのレジストリ情報(レジストリの集合)に対するAND演算を行う処理ということもできる。このとき、例えば、共通するキーおよび値をもつレジストリが特定のツリーの配下すべてに該当する場合は、これらレジストリのすべてをそれぞれ指定するのではなく、それらのレジストリが属するツリーの上位キーを特定することにより、共通するレジストリ群を特定してもよい。この場合、該当の上位キーを指定することで、上位キーの配下の複数のレジストリを範囲指定できる。例えば、キーAの配下に、キーA1,A2,A3が存在する場合、キーAを指定することで、キーA1,A2,A3を範囲指定できる。
(S24)分析部140は、登録ソフトウェアとレジストリとの対応関係を決定する。すなわち、分析部140は、ステップS22で特定した登録ソフトウェアとステップS23で検出したレジストリ群とを対応付ける。また、分析部140は、対応関係の決定結果に基づいて、対応管理テーブル114に既登録の関係を見直す。例えば、既にある登録ソフトウェアに対応付けられているレジストリ群の一部が、別の登録ソフトウェアに対応付けられるものであることが新たな対応付けの結果によって判明することもある。その場合、分析部140は、既登録のレジストリ群の当該一部を、別の登録ソフトウェアへ対応付け、当該一部と既存の登録ソフトウェアとの対応付けを解除する。
(S25)分析部140は、ステップS13で抽出したレジストリ情報の増加分のうち、何れのソフトウェアとも対応付いていないレジストリについて、PC間でレジストリの共通部分(共通の未対応レジストリ)を検出する。ここで検出された未対応レジストリは、各PCのソフトウェア一覧に登録されていない未登録ソフトウェアに対応するレジストリと考えることができる。
(S26)分析部140は、収集時刻テーブル115のマシンIDおよび収集時刻と、フォルダ管理テーブル113のマシンID、フォルダ名および作成時刻を参照し、各PCのインストール途中のフォルダを特定する。あるソフトウェアがインストール途中であり未完全なフォルダ群(あるソフトウェアに対して未だ一部しか作成されていないフォルダ群)を、対応関係の決定処理から除外するためである。具体的には、分析部140は、今回のポーリング時刻以前の一定期間内に作成されたフォルダをインストール途中のソフトウェアのフォルダと特定する。例えば、一定期間は、ポーリング時刻から30分前の時刻からポーリング時刻までの期間とするなど、ソフトウェアのインストールに要する時間に応じて予め定められる。
(S27)分析部140は、ステップS13で抽出したフォルダ情報の増加分のうち、共通の未対応レジストリを有するPC間のみで共通するフォルダ群を検出する。共通するフォルダ群の検出は、共通の未対応レジストリを有する各PCのフォルダ情報(フォルダの集合)に対するAND演算を行う処理ということもできる。ただし、ステップS26での特定結果に応じて、何れかのPCにおいて着目するフォルダの作成時刻がポーリング時刻に近い場合(例えば、前述のようにポーリング時刻以前の30分以内)は、当該PCを除外したPC間において、共通するフォルダ群を検出する。分析部140は、ステップS26の結果により、ある共通するフォルダ群の検出に用いるPCを選択しているということもできる。
(S28)分析部140は、ステップS27で検出したフォルダ群と未対応レジストリとの対応関係を決定する。すなわち、分析部140は、ステップS27で検出したフォルダ群とステップS25で検出した共通の未対応レジストリとを対応付ける。また、分析部140は、対応関係の決定結果に基づいて、対応管理テーブル114に既登録の関係を見直す。例えば、既にあるフォルダ群に対応付けられているレジストリ群の一部が、別のフォルダ群に対応付けられるものであることが新たな対応付けの結果によって判明することもある。その場合、分析部140は、既登録のレジストリ群の当該一部を、別のフォルダ群へ対応付け、当該一部と既存のフォルダ群との対応付けを解除する。
(S29)分析部140は、ステップS24,S28で決定した対応関係を対応管理テーブル114に登録する。
なお、複数のPCに対し、あるソフトウェアの異なるバージョンのものがインストールされることもある。そこで、ステップS22で複数のPCで共通するソフトウェアを特定する際、分析部140は、バージョン番号のみが異なるものを同じソフトウェアとみなしてよい。また、ソフトウェア名をテキストマッチングする際に、マッチングの類似度が比較的高ければ同一とみなしてよい。
また、レジストリに関しても、インストール時の設定などにより、同じソフトウェアであってもPCによってはキー名が異なることもある。このため、ステップS23,S25におけるレジストリの共通部分の取得でも、レジストリのツリー構造のマッチングにより、キー名が異なっても下位のデータ名が類似していれば同じとみなしてよい。
更に、ステップS27において、共通するフォルダ群を検出する際、絶対パスが完全一致していなくてもよい(通常、インストール先として指定されるパスは可変であるため)。例えば、フォルダ内部の構造(フォルダのツリー構造やファイル内容)の類似度が高ければ同じソフトウェアに対応するフォルダとみなしてよい。このように、分析部140は、ソフトウェア名、レジストリ、フォルダのマッチングを行う際に、これらが完全一致するとは限らないことを考慮して揺らぎを許容する。第2の実施の形態の例では、フォルダについてPC間で共通部分を取得するものとしたが、分析部140は、ファイルについてPC間で共通部分を取得して未登録ソフトウェアとの対応付けを行ってもよい。その場合も、分析部140は、フォルダと同様に(ステップS26と同様に)作成時刻によって対応付け対象のファイルを絞り込んでもよい。
ここで、ステップS24において、分析部140は、登録ソフトウェアとレジストリとの既登録の対応関係に対し、更に見直しを図ることもできる。例えば、分析部140は、ある登録ソフトウェアについて、対応管理テーブル114に既登録の対応関係と今回の対応関係の決定結果とを比較し、両者が異なるとき、今回の対応関係の決定結果により既存の対応関係を更新してもよい。より具体的には、分析部140は、今回の対応関係に含まれるレジストリ群と既存の対応関係に含まれるレジストリ群との重複部分を当該登録ソフトウェアに対応付けてもよい。登録ソフトウェアに対応付けられるレジストリ群を絞り込むことで、対応付けの精度を向上できるからである。
同様に、ステップS28において、分析部140は、フォルダ群とレジストリとの既登録の対応関係に対し、更に見直しを図ることもできる。例えば、分析部140は、あるフォルダ群について、対応管理テーブル114に既登録の対応関係と今回の対応関係の決定結果とを比較し、両者が異なるとき、今回の対応関係の決定結果により既存の対応関係を更新してもよい。より具体的には、分析部140は、今回の対応関係に含まれるレジストリ群と既存の対応関係に含まれるレジストリ群との重複部分を当該フォルダ群に対応付けてもよい。当該フォルダ群に対応付けられるレジストリ群を絞り込むことで、対応付けの精度を向上できるからである。
図14は、ポーリングにより収集される情報の具体例を示す図である。図14では、PC200に対する時刻T11,T12における2回のポーリングを例示している。なお、図6と同様に、説明の便宜上、レジストリに対して“ソフトウェアAに関するレジストリ”などとソフトウェア名“ソフトウェアA”をラベリングしている。レジストリ情報の収集時点において、管理サーバ100は各レジストリが何れのソフトウェアに対応するものかを把握しているわけではない。
収集部120は、ポーリングにより、レジストリ情報33およびソフトウェア一覧34をPC200から取得する。収集部120は、ポーリングにより、フォルダ情報もPC200から取得する。差分抽出部130は、時刻T11と時刻T12においてポーリングにより収集された情報の差分を抽出することで、時刻T11から時刻T12の間にPC200に追加された登録ソフトウェア、レジストリおよびフォルダを得る。
分析部140は、時刻T11,T12それぞれで取得したレジストリのキーおよび値をマッチングする。図13で説明したように、マッチングにはキー構造の類似度や下位のデータの類似度が考慮される。時刻T11で取得したレジストリ情報33には含まれないが、時刻T12で取得したレジストリ情報33に含まれるレジストリが時刻T11から時刻T12の間にPC200に追加されたレジストリである。図14の例では、時刻T11の時点ではPC200のレジストリ情報33に、ソフトウェアA,B,C,D,Eのレジストリは存在していない。一方、時刻T12の時点では、PC200のレジストリ情報33に、ソフトウェアA,B,C,D,Eのレジストリは存在している。よって、時刻T12の時点のレジストリ情報の増加分は、ソフトウェアA,B,C,D,Eのレジストリ情報である(ただし、分析部140は、この時点ではソフトウェアA,B,C,D,Eとの対応関係を把握しているわけではない)。
分析部140は、時刻T11,T12それぞれで取得したソフトウェア一覧34のソフトウェア名をテキストマッチングする。図13で説明したように、マッチングにはバージョンの相違やテキストの類似度を考慮する。図14の例では、時刻T11の時点では、PC200のソフトウェア一覧34に、ソフトウェアA,B,Cのソフトウェア名は存在していない。一方、時刻T12の時点では、PC200のソフトウェア一覧34に、ソフトウェアA,Bのソフトウェア名が存在している。よって、時刻T12の時点のソフトウェア一覧の増加分はソフトウェアA,Bのソフトウェア名である。
ソフトウェアCは、時刻T11の後、PC200にインストールされたが、時刻T12の前に、PC200からアンインストールされたため、時刻T12で収集されたPC200のソフトウェア一覧34には含まれない。また、ソフトウェアD,Eは、時刻T12で収集されたPC200のソフトウェア一覧34には含まれない未登録ソフトウェアである。
分析部140は、同様にして、時刻T11から時刻T12の間にPC200に追加されたフォルダ情報も取得する。
図15は、登録ソフトウェアとレジストリとの対応付けの具体例を示す図である。図15は、時刻T12に収集部120がPC200,200a,200b,200c,200dから収集したソフトウェア一覧およびレジストリ情報について、時刻T11での収集結果からの増加分の例を示している。“検出ソフト(増加分)”で示される行は、PC200,200a,200b,200c,200dから収集したソフトウェア一覧の増加分を示す。“レジストリ情報(増加分)”で示される行は、PC200,200a,200b,200c,200dから収集したレジストリ情報の増加分を示す。
例えば、差分抽出部130は、PC200に対してソフトウェアA,Bのソフトウェア名の増加を検出する。差分抽出部130は、PC200aに対してソフトウェアA,Xのソフトウェア名の増加を検出する。差分抽出部130は、PC200bに対してソフトウェアC,Xのソフトウェア名の増加を検出する。差分抽出部130は、PC200cに対してソフトウェアCのソフトウェア名の増加を検出する。差分抽出部130は、PC200dに対してソフトウェアBのソフトウェア名の増加を検出する。ソフトウェアA,B,C,D,Xは、何れもソフトウェア一覧に登録されている登録ソフトウェアである。
分析部140は、各PCのソフトウェア一覧の増加分の中からソフトウェアAのみが共通するPC200,200aを特定する。分析部140は、PC200,200aから収集したレジストリ情報の増加分の中から共通のレジストリ群R11を検出する。分析部140は、ソフトウェアAとレジストリ群R11とを対応付ける。
分析部140は、各PCのソフトウェア一覧の増加分の中からソフトウェアBのみが共通するPC200,200dを特定する。分析部140は、PC200,200dから収集したレジストリ情報の増加分の中から共通のレジストリ群R12,R14を検出する。分析部140は、ソフトウェアBとレジストリ群R12,R14とを対応付ける(ただし、後述するようにレジストリ群R14は、実際はソフトウェアCに対応付けられるべきである)。
分析部140は、検出ソフトウェアの増加分の中からソフトウェアCのみが共通するPC200b,200cを特定する。分析部140は、PC200b,200cから収集したレジストリ情報の増加分の中から共通のレジストリ群R14を検出する。分析部140は、ソフトウェアCとレジストリ群R14とを対応付ける。
分析部140は、検出ソフトウェアの増加分の中からソフトウェアXのみが共通するPC200a,200bを特定する。分析部140は、PC200a,200bから収集したレジストリ情報の増加分の中から共通のレジストリR13を検出する。分析部140は、ソフトウェアXとレジストリ群R13とを対応付ける。
分析部140は、ここまでで対応付けたソフトウェアとレジストリとの対応関係を見直す。例えば、あるソフトウェアとレジストリ群との対応関係に対し、当該レジストリ群が他のソフトウェアに対応付けられた他のレジストリ群を含む場合は、対応付けを修正する。より具体的には、レジストリ群R14は、PC200b,200cに対する分析によって、ソフトウェアCに対応付けられている。更に、レジストリ群R12,R14は、PC200,200dに対する分析によって、ソフトウェアBに対応付けられている。すなわち、ソフトウェアBに対応付けられたレジストリ群R12,R14は、ソフトウェアCに対応付けられたレジストリ群R14を含む。よって、分析部140は、ソフトウェアBとレジストリ群R12,R14との対応関係を修正し、ソフトウェアBをレジストリ群R12に対応付けしなおす(ソフトウェアCとレジストリ群R14との対応関係を維持する)。
こうして、各PCにおけるレジストリ情報の増加分のうちの一部が、ソフトウェアA,B,C,Xに対応付けられる。このとき、PC200には、レジストリ情報の増加分のうち、何れのソフトウェアとも対応付けられていない未対応のレジストリ群RAが存在する。PC200cには、レジストリ情報の増加分のうち、何れのソフトウェアとも対応付けられていない未対応のレジストリ群RBが存在する。PC200dには、レジストリ情報の増加分のうち、何れのソフトウェアとも対応付けられていない未対応のレジストリ群RCが存在する。PC200a,200bには、未対応のレジストリ群は存在していない。
図16は、フォルダ群とレジストリ群との対応付けの具体例を示す図である。ここで、分析部140は、レジストリ情報と同様に、各PCにおけるフォルダ情報の増加分のうち、ソフトウェアA,B,C,Xに対応するフォルダ群を検出できる。具体的には、PC200,200aで共通する部分は、ソフトウェアAに対応するフォルダ群である。また、PC200,200dで共通する部分は、ソフトウェアBに対応するフォルダ群である。PC200b,200cで共通する部分は、ソフトウェアCに対応するフォルダ群である。PC200a,200bで共通する部分は、ソフトウェアXに対応するフォルダ群である。
図16では、“フォルダ情報(増加分)”の行に、各PCにおけるフォルダ情報の増加分を例示しているが、ソフトウェアA,B,C,Xに対応するフォルダ群については、対応付けの対象外とする(図16のフォルダ情報の増加分には含まれていない)。これらのフォルダ群は、登録ソフトウェアのフォルダ群であり、登録ソフトウェアは、図15の処理によって、既にレジストリ群との対応付けが済んでいるからである。なお、収集部120が各PCから収集する登録ソフト情報に、登録ソフトウェアと登録ソフトウェアのインストールフォルダとの情報が含まれることも考えられる。その場合、分析部140は、登録ソフト情報から、例えばソフトウェアA,B,C,Xに対応するフォルダ群を検出してもよい。
更に、分析部140は、フォルダ管理テーブル113の作成時刻と収集時刻テーブル115の収集時刻とを参照し、各PCにおいて作成時刻から収集時刻までが所定期間内のフォルダ群も対応付けの対象外とする(図16のフォルダ情報の増加分には含まれていない)。
したがって、図16で示す“フォルダ情報(増加分)”に含まれるフォルダは、未登録ソフトウェアのインストールフォルダ、または、登録/未登録ソフトウェアとは無関係なフォルダである。登録/未登録ソフトウェアとは無関係なフォルダとして、例えば、ユーザが任意に作成したフォルダや、あるソフトウェアが自ソフトウェアのインストールフォルダとは異なるパスに作成したフォルダである。
具体的には、分析部140は、上記の処理対象外のフォルダを除いて、PC200のフォルダ増加分としてフォルダ群F21を特定する。分析部140は、上記の処理対象外のフォルダを除くと、PC200aにはフォルダ増加分なしと特定する。分析部140は、同様にPC200bのフォルダ増加分としてフォルダ群F22を特定する。分析部140は、同様にPC200cのフォルダ増加分としてフォルダ群F23を特定する。分析部140は、同様にPC200dのフォルダ増加分としてフォルダ群F24を特定する。
分析部140は、PC200,200b,200c,200dそれぞれのフォルダ群F21,F22,F23,F24について、未対応のレジストリ群の存在しないPC200bのフォルダ群F22と共通する部分P11を検出する。部分P11は、登録/未登録ソフトウェアとは無関係なフォルダと考えることができる。なぜなら、フォルダ群F22は登録ソフトウェアに対応するものではなく、かつ、PC200bには、未対応のレジストリ群が存在していない(未登録ソフトウェアが存在していない)からである。
分析部140は、フォルダ群F21,F23,F24(部分P11を除く)のうち、共通する部分P12を検出する。部分P12は、PC200,200c,200dで共通するフォルダ群である。また、前述の未対応のレジストリ群RA,RB,RCの共通部分P1も、PC200,200c,200dで共通するレジストリ群である。したがって、フォルダ群F21,F23,F24の共通部分P12は、未対応のレジストリ群RA,RB,RCの共通部分P1に対応するフォルダ群であると考えることができる。よって、分析部140は、フォルダ群F21,F23,F24の共通部分P12に相当するフォルダ群と、レジストリ群RA,RB,RCの共通部分P1に相当するレジストリ群とを対応付ける。通常、ソフトウェアは、インストール時に、自ソフトウェアを動作させるための情報をレジストリへ追加する。したがって、この場合、共通部分P12に相当するフォルダ群は、未登録ソフトウェア(例えば、図14のソフトウェアD)のインストール時に当該未登録ソフトウェアの情報を格納するために作成されたフォルダ(インストールフォルダ)であると考えることができる。例えば、このタイミングで、フォルダ群F24に含まれる全てのフォルダの、未登録ソフトウェアへの対応付けが完了する。
分析部140は、フォルダ群F21,F23(部分P11,P12を除く)のうち、共通する部分P13を検出する。部分P13は、PC200,200cで共通するフォルダ群である。また、前述の未対応のレジストリ群RA,RBの共通部分P2も、PC200,200cで共通するレジストリ群である。したがって、フォルダ群F21,F23の共通部分P13は、未対応のレジストリ群RA,RBの共通部分P2に対応するフォルダ群であると考えることができる。よって、分析部140は、フォルダ群F21,F23の共通部分P13に相当するフォルダ群と、レジストリ群RA,RBの共通部分P2に相当するレジストリ群とを対応付ける。部分P12の場合と同様に、共通部分P13に相当するフォルダ群は、未登録ソフトウェア(部分P12に対応する未登録ソフトウェアとは異なる未登録ソフトウェアであり、例えば図14のソフトウェアE)のインストールフォルダであると考えることができる。例えば、このタイミングで、フォルダ群F21に含まれる全てのフォルダの、未登録ソフトウェアへの対応付けが完了する。
PC200cでは、未対応のレジストリ群RBのうち、何れのフォルダ群とも対応付けられていない部分P3が存在する。PC200cでは、フォルダ群F23のうち、何れのレジストリ群とも対応付けられていない部分P14が存在する。分析部140は、部分P3に相当するレジストリ群と、部分P14に相当するフォルダ群とを対応付けてもよい。あるいは、分析部140は、次回以降のポーリングにより収集した情報に基づいて、レジストリ群RBのうち部分P3に対応付けるフォルダ群およびフォルダ群F23のうち部分P14に対応付けるレジストリ群を決定してもよい。
分析部140は、こうして決定した登録ソフトウェア名とレジストリ群との対応関係を対応管理テーブル114に登録する。また、分析部140は、フォルダ群とレジストリ群との対応関係を対応管理テーブル114に登録する。ここでレジストリ群に対応付けられたフォルダ群は、未登録ソフトウェアのインストールフォルダであると考えられる。このため、フォルダ群とレジストリ群との対応関係は、未登録ソフトウェアとレジストリ群との対応関係といえる。
更に、分析部140は、次の方法によって、対応付けの対象外とするレジストリ群を決定してもよい。
図17は、対応付けの対象外とするPCの決定方法の例を示す図である。分析部140による登録ソフトウェアとレジストリ群との対応付けは、インストール処理が完了している登録ソフトウェアに対して行われることが好ましい。ポーリング時にインストール中である登録ソフトウェアが存在する場合、ソフトウェア一覧には登録ソフトウェアのソフトウェア名が存在するが、当該登録ソフトウェアに対応するレジストリ群は作成途中であるという状況があり得る。この場合に対応付けを行ってしまうと、登録ソフトウェアと作成途中の未完全なレジストリ群とが対応付けられてしまい、適切な対応関係を管理できなくなる。具体的には次の通りである。
仮に、管理サーバ100が、あるタイミングのポーリングにより、PC200,200aに対しソフトウェア一覧にソフトウェアAが追加されたことを検出したとする。このとき、PC200ではソフトウェアAがインストール済であるが、PC200aではソフトウェアAがインストール途中である状況が起こり得る。この場合、PC200のレジストリ情報ではソフトウェアAの完全なレジストリ群R11が含まれる。一方、PC200aのレジストリ情報ではソフトウェアAのレジストリ群R11が全部含まれるわけではなく、レジストリ群R11の一部R11aが含まれるのみである。すなわち、PC200のレジストリ群R11に含まれるレジストリ部分RXが、PC200aのレジストリ情報には欠落している。このような状況で、PC200,200aでレジストリ情報の共通部分を特定してソフトウェアAに対応付けるとすると、レジストリ群R11のうち、レジストリ部分RXを欠いた一部R11aがソフトウェアAに対応付けられてしまう。
そこで、分析部140は、該当の登録ソフトウェアに対応するフォルダの作成時刻を調べ、ポーリング時刻とほぼ一致(例えば、前述のように、作成時刻からポーリング時刻までが所定期間内である)場合、当該登録ソフトウェアをインストール中であると判断し、レジストリ群の共通部分の抽出対象とするPCから除外してもよい。例えば、図16で説明したように、分析部140は、フォルダ情報のうちソフトウェアAに対応するフォルダ群を特定し得る。
分析部140は、PC200a以外に、ソフトウェアAが追加されてインストールが完了しているPCがあれば、当該PCとPC200とのレジストリの共通部分を用いてソフトウェアAに対応するレジストリ群の特定を行える。ただし、PC200a以外にソフトウェアAが追加されてインストールが完了しているPCがなければ、今回はソフトウェアAとレジストリとの対応付けを行えないことになる。すなわち、分析部140は、図13のステップS22において、ソフトウェアAを複数のPC間で共通するソフトウェアとして特定しても、ステップS23,S24の処理の対象外とする。これにより作成中のレジストリ群と登録ソフトウェアとが対応付けられることを抑えられる。
ソフトウェアAを対応付けの対象外とした場合、分析部140は、次回のポーリング結果に応じて、ソフトウェアAとレジストリ群との対応付けを行ってもよい。次回のポーリング時に、PC200aでレジストリ群R11の作成が完了していれば、分析部140は、ソフトウェアAとレジストリ群R11とを適切に対応付けることができる。ただし、次回のポーリングの結果から、ソフトウェアAに対応するレジストリ群を特定する場合、分析部140は、PC200,200aから次回ポーリングで取得したレジストリ情報を、前回との差分をとらずに比較し、共通のレジストリ群R11を特定することになる。そして、分析部140は、当該共通のレジストリ群R11をソフトウェアAに対応付ける。
こうして、管理サーバ100は、登録ソフトウェアおよび未登録ソフトウェアとレジストリとの対応付けを適切に行える。管理サーバ100によれば、登録ソフトウェアだけでなく、未登録ソフトウェアによって使用されるレジストリも、未登録ソフトウェアに対応付けて適切に管理できる。なお、対応管理テーブル114の例では、未登録ソフトウェアのインストールフォルダと、レジストリとを対応付けるものとした。これに対し、分析部140は、インストールフォルダの情報から未登録ソフトウェアの識別名を決定し、当該識別名とレジストリとの対応付けを行ってもよい。例えば、分析部140は、インストールフォルダのパス内において、OSがアプリケーションソフトウェアの格納用に用意した所定のフォルダの直下の文字列を未登録ソフトウェアの識別名としてもよい。あるいは、インストールフォルダに含まれる実行形式のファイル(例えば、exe形式のファイルなど)のファイル名(例えば、appZ.exe)から未登録ソフトウェアの識別名(例えば、appZなど)を決定してもよい。すると、分析部140は、未登録ソフトウェアの識別名とレジストリとを対応付けることができる。この場合にも、分析部140は、未登録ソフトウェアの識別名とインストールフォルダとを対応付けた情報を更に記憶部110に格納して保持することで、対応管理テーブル114と同等の情報を管理できる。
そして、不要レジストリ判定部150は、分析部140により作成された対応管理テーブル114に基づいて、PC200,200a,200b,200c,200dにおける不要レジストリを判定する。
図18は、不要レジストリの判定処理を示す図である。以下、図18に示す処理をステップ番号に沿って説明する。管理サーバ100は、例えば、ポーリング後の分析部140の処理後に以下の手順を開始する。
(S31)不要レジストリ判定部150は、レジストリとソフトウェアまたはフォルダとの対応関係の情報を対応管理テーブル114から読み出す。
(S32)差分抽出部130は、前回のポーリングで取得したソフトウェア一覧およびフォルダ情報と今回のポーリングで取得したソフトウェア一覧およびフォルダ情報の差分を抽出し、削除されたソフトウェアまたはフォルダを検出する。具体的には、あるPCについて、前回のポーリングで取得したソフトウェア一覧には含まれるが、今回のポーリングで取得したソフトウェア一覧には含まれないソフトウェアが、当該PCから削除されたソフトウェア(未検出ソフトウェア)である。また、あるPCについて、前回のポーリングで取得したフォルダ情報には含まれるが、今回のポーリングで取得したフォルダ情報には含まれないフォルダが、当該PCから削除されたフォルダである。差分抽出部130は抽出結果を不要レジストリ判定部150に通知する。
(S33)不要レジストリ判定部150は、対応管理テーブル114から読み出した情報に基づいて、何れかのPCから削除されたソフトウェアまたはフォルダに対応するレジストリが当該PCに残存するか否かを判定する。残存する場合、処理をステップS34に進める。残存しない場合、処理を終了する。例えば、PC200から削除されたソフトウェアまたはフォルダに対応するレジストリが、PC200のマシンIDに対応付けてレジストリ管理テーブル111に存在している場合、当該レジストリはPC200に残存していることになる。
(S34)不要レジストリ判定部150は、該当のPCに対し、残存するレジストリを不要レジストリと判定する。不要レジストリ判定部150は、当該PCに対して、不要レジストリの削除を指示する。これにより、当該PCから不要レジストリが削除される。
このようにして、管理サーバ100はPC200,200a,200b,200c,200dにおける不要レジストリの判定を行える。管理サーバ100は、PC200,200a,200b,200c,200dにより不要レジストリを削除させることで、PC200,200a,200b,200c,200d上の他のソフトウェアの動作に対し不要レジストリによる悪影響が及ぶことを防げる。
また、登録ソフトウェアに対応付けられていなくても、未登録ソフトウェアに対応付けられたレジストリは、不要レジストリとは判断されないことになる。このため、未登録ソフトウェアによって使用されるレジストリが、不要レジストリと誤判断されて削除されてしまうことを防げる。
更に、ステップS32,S33では不要レジストリ判定部150は、次のように不要レジストリを判定してもよい。例えば、対応管理テーブル114に登録されたソフトウェア名とレジストリ群との1つの組について、レジストリ管理テーブル111には該当のレジストリ群が存在するが、ソフトウェア管理テーブル112には該当のソフトウェア名が存在しないPCを特定する。この場合、当該PCには該当のソフトウェア名で示されるソフトウェアがアンインストールされたが、アンインストール時にレジストリを消し損なったと判断できる。不要レジストリ判定部150は、当該ソフトウェアに対応するレジストリ群を不要レジストリと判定する。こうして、不要レジストリ判定部150は、各PCに対し、対応管理テーブル114に登録されたソフトウェア名とレジストリ群との組毎に、不要レジストリを判定し得る。また、前回ポーリングと今回ポーリングの間にインストールされアンインストールされたソフトウェア(例えば、ソフトウェアC)に対応するレジストリも不要レジストリとして判定できる。
同様に、例えば対応管理テーブル114に登録されたフォルダ群とレジストリ群との1つの組について、レジストリ管理テーブル111には該当のレジストリ群が存在するが、フォルダ管理テーブル113には該当のフォルダ群が存在しないPCを特定する。この場合、当該PCには該当のフォルダ群で示される未登録ソフトウェアがアンインストールされたが、アンインストール時にレジストリを消し損なったと判断できる。不要レジストリ判定部150は、当該フォルダ群に対応するレジストリ群を不要レジストリと判定する。こうして、不要レジストリ判定部150は、各PCについて、対応管理テーブル114に登録されたフォルダ群とレジストリ群との組毎に、不要レジストリを判定し得る。また、前回ポーリングと今回ポーリングの間にインストールされアンインストールされた未登録ソフトウェアに対応するレジストリも不要レジストリとして判定できる。
ここで、あるPCにおいて、あるレジストリ部分が複数のソフトウェアによって共通に利用されることも考えられる。その場合、当該複数のソフトウェアの一部がアンインストールされたからといって、当該レジストリ部分を不要レジストリと判定して削除させてしまうと、他のソフトウェアが動作しなくなるおそれもある。具体的には次の通りである。
図19は、複数のソフトウェアによるレジストリの共通利用の例を示す図である。例えば、PC200にソフトウェアY,Zがインストールされ、PC200aにソフトウェアYがインストールされ、PC200bにソフトウェアZがインストールされているケースを考える。例えば、ソフトウェアY,Zは、登録ソフトウェアである。
管理サーバ100は、PC200aとソフトウェアYがインストールされた他のPC(図示を省略している)とで、レジストリ情報の共通部分を得ることで、ソフトウェアYに対応するレジストリ群を得る。また、管理サーバ100は、PC200bとソフトウェアZがインストールされた他のPC(図示を省略している)とで、レジストリ情報の共通部分を得ることで、ソフトウェアZに対応するレジストリ群を得る。ソフトウェアYに対応するレジストリ群と、ソフトウェアZに対応するレジストリ群とでは、共通に利用される部分が存在する。
このとき、PC200からソフトウェアYまたはソフトウェアZの何れか一方のみが削除され、削除された方のソフトウェアに対応するレジストリを不要レジストリとして削除してしまうと、残った方のソフトウェアが共通部分のレジストリを利用できなくなる。この場合、残った方のソフトウェアの動作に支障がでる。すなわち、PC200において、ソフトウェアY,Zで共通に利用される部分は、ソフトウェアYおよびソフトウェアZの何れか一方が削除されても不要レジストリとすべきでない部分である。そこで、不要レジストリ判定部150は不要レジストリの判定を次のように行ってもよい。
図20は、不要レジストリの他の判定処理を示すフローチャートである。以下、図20に示す処理をステップ番号に沿って説明する。図20の手順では、図18の手順に対し、ステップS33に代えて、ステップS33a,33b,33cを実行する点が、図18と異なる。そこで、以下の説明では、ステップS33a,S33b,S33cを説明し、他の手順の説明を省略する。
(S33a)不要レジストリ判定部150は、対応管理テーブル114から読み出した情報に基づいて、何れかのPCから削除されたソフトウェアまたはフォルダに対応するレジストリが当該PCに残存するか否かを判定する。判定方法はステップS33と同様である。残存する場合、処理をステップS33bに進める。残存しない場合、処理を終了する。
(S33b)不要レジストリ判定部150は、対応管理テーブル114を参照して、残存していると判定されたレジストリのうち、該当のPCからアンインストールされていない他のソフトウェアまたは削除されていない他のフォルダにも対応している部分があるか否かを判定する。ある場合、処理をステップS33cに進める。ない場合、処理をステップS34に進める。
(S33c)不要レジストリ判定部150は、残存するレジストリのうちアンインストールされていない他のソフトウェアまたは他のフォルダに対応する部分以外を不要と判定する。不要レジストリ判定部150は、不要部分の削除を該当のPCに指示する。これにより、該当のPCからレジストリの当該不要部分が削除される。
このように、管理サーバ100は、複数のソフトウェアによって共通に利用されるレジストリが存在する場合、複数のソフトウェアの何れかのソフトウェアが削除されても、当該レジストリを不要レジストリとして削除しないよう管理できる。
ここで、通常、ソフトウェアのインストール時に、インストーラがソフトウェアの動作のための設定情報をレジストリに登録する。ソフトウェアのアンインストール時には、アンインストーラが、インストール時に登録したレジストリの情報を削除する。しかし、削除漏れにより、不要なレジストリが残存することがある。不要なレジストリが残存することで、その後のソフトウェアのインストール時(例えば、同ソフトウェアの再インストール、新バージョンのインストール、関連ソフトウェアの新規インストール時)などに、ソフトウェアの動作に不具合が生じることがある。また、不要レジストリが過剰に蓄積することでPCの性能劣化(例えば、記憶容量が無駄に使用されるなど)にもつながる。
管理サーバ100によれば、対応管理テーブル114に基づいて、不要レジストリを判定し、各PCから削除できる。その結果、他のソフトウェアの動作に対する影響を抑えられる。また、不要レジストリが過剰に蓄積されないようにすることで、PCの性能劣化も抑えられる。
なお、管理サーバ100の管理対象のマシンは、PC200,200a,200b,200c,200dのような物理マシンに限らず、物理マシン上で動作する仮想マシンでもよい。
また、第1の実施の形態の情報処理は、演算部1bにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体13に記録できる。
例えば、プログラムを記録した記録媒体13を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体13に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
以上の第1,第2の実施の形態を含む実施形態に関し、更に以下の付記を開示する。
(付記1) コンピュータに、
管理対象の複数のマシンより、OSが管理するOS管理情報、ファイル情報、および、登録ソフト情報をそれぞれ取得し、
前記登録ソフト情報、および、前記OS管理情報に基づき、前記複数のマシンそれぞれにインストールされたソフトウェア、および、当該ソフトウェアが使用する前記OS管理情報の項目群に関する第1の管理情報を生成し、
前記第1の管理情報、および、前記複数のマシンの前記ファイル情報に基づき、使用するソフトウェアが特定されておらず、かつ、対応するファイルが存在する前記OS管理情報の項目群を、前記登録ソフト情報に含まれない第1のソフトウェアが使用するOS管理情報の項目群である第1の項目群として特定する、
処理を実行させる管理プログラム。
(付記2) 前記複数のマシンのファイル情報に含まれるフォルダおよびファイルの作成時刻に基づいて、前記第1のソフトウェアと前記第1の項目群とを対応付ける、付記1記載の管理プログラム。
(付記3) 前記OS管理情報、前記ファイル情報、および、前記登録ソフト情報の前記複数のマシンへの問い合わせ時刻と、前記フォルダの作成時刻との比較に応じて前記対応付けに用いるマシンを選択する、付記2記載の管理プログラム。
(付記4) 前記比較により前記問い合わせ時刻において前記第1のソフトウェアをインストール途中であるマシンを特定し、当該マシン以外のマシンから取得した情報を用いて、前記対応付けを行う、付記3記載の管理プログラム。
(付記5) 何れかのソフトウェアに対応付けた前記第1の項目群を、他のソフトウェアに対応付けた第2の項目群に基づいて変更する、付記1乃至4の何れか1つに記載の管理プログラム。
(付記6) 前記第2の項目群は、前記第1の項目群の一部であり、
前記何れかのソフトウェアに対応させる項目群を、前記第1の項目群から前記第2の項目群を除外した項目群に変更する、付記5記載の管理プログラム。
(付記7) 前記第1のソフトウェアを含む複数のソフトウェアと複数の項目群との対応関係の情報を生成し、前記対応関係の情報に基づいて、前記複数のマシンそれぞれが有する前記OS管理情報の項目群を削除対象とするか否かを判定する、付記1乃至6の何れか1つに記載の管理プログラム。
(付記8) 何れかのマシンにおいて、前記対応関係の情報に含まれる項目群は存在するが、当該項目群に対応する何れのソフトウェアも存在しない場合、当該項目群のうち、当該マシンに存在する他の何れのソフトウェアにも対応付けられていない部分を削除対象と判定する、付記7記載の管理プログラム。
(付記9) 前記登録ソフト情報に基づいて、共通のソフトウェアがインストールされた2以上のマシンで共通する項目群を、当該ソフトウェアが使用する項目群と特定する、付記1乃至8の何れか1つに記載の管理プログラム。
(付記10) 前記第1の項目群の指定を、使用するソフトウェアが特定されていない前記OS管理情報のうち、2以上のマシンが共通に有するファイルに対応付けられる範囲を特定することで行う、付記1乃至9の何れか1つに記載の管理プログラム。
(付記11) 前記OS管理情報、前記ファイル情報、および、前記登録ソフト情報の前回取得分と今回取得分との差分により、前回の取得時から今回の取得時の間に追加された前記OS管理情報の項目群、フォルダ、および、ソフトウェアをマシン毎に検出し、各マシンに追加されたソフトウェアが使用する前記OS管理情報の項目群を、追加された項目群の中から特定する、付記1乃至10の何れか1つに記載の管理プログラム。
(付記12) 管理対象の複数のマシンより取得された、OSが管理するOS管理情報、ファイル情報、および、登録ソフト情報を記憶する記憶部と、
前記登録ソフト情報、および、前記OS管理情報に基づき、前記複数のマシンそれぞれにインストールされたソフトウェア、および、当該ソフトウェアが使用する前記OS管理情報の項目群に関する第1の管理情報を生成し、前記第1の管理情報、および、前記複数のマシンの前記ファイル情報に基づき、使用するソフトウェアが特定されておらず、かつ、対応するファイルが存在する前記OS管理情報の項目群を、前記登録ソフト情報に含まれない第1のソフトウェアが使用する前記OS管理情報の項目群である第1の項目群として特定する演算部と、
を有する管理装置。
(付記13) コンピュータが、
管理対象の複数のマシンより、OSが管理するOS管理情報、ファイル情報、および、登録ソフト情報をそれぞれ取得し、
前記登録ソフト情報、および、前記OS管理情報に基づき、前記複数のマシンそれぞれにインストールされたソフトウェア、および、当該ソフトウェアが使用する前記OS管理情報の項目群に関する第1の管理情報を生成し、
前記第1の管理情報、および、前記複数のマシンの前記ファイル情報に基づき、使用するソフトウェアが特定されておらず、かつ、対応するファイルが存在する前記OS管理情報の項目群を、前記登録ソフト情報に含まれない第1のソフトウェアが使用する前期OS管理情報の項目群である第1の項目群として特定する、
管理方法。