(57)【特許請求の範囲】
【請求項１】
コンピュータに、
管理対象の複数のマシンより、ＯＳが管理するＯＳ管理情報、ファイル情報、および、登録ソフト情報をそれぞれ取得し、
前記登録ソフト情報、および、前記ＯＳ管理情報に基づき、前記複数のマシンそれぞれにインストールされたソフトウェア、および、当該ソフトウェアが使用する前記ＯＳ管理情報の項目群に関する第１の管理情報を生成し、
前記第１の管理情報、および、前記複数のマシンの前記ファイル情報に基づき、使用するソフトウェアが特定されておらず、かつ、対応するファイルが存在する前記ＯＳ管理情報の項目群を、前記登録ソフト情報に含まれない第１のソフトウェアが使用するＯＳ管理情報の項目群である第１の項目群として特定する、
処理を実行させる管理プログラム。
【請求項２】
前記複数のマシンのファイル情報に含まれるフォルダおよびファイルの作成時刻に基づいて、前記第１のソフトウェアと前記第１の項目群とを対応付ける、請求項１記載の管理プログラム。
【請求項３】
前記ＯＳ管理情報、前記ファイル情報、および、前記登録ソフト情報の前記複数のマシンへの問い合わせ時刻と、前記フォルダの作成時刻との比較に応じて前記対応付けに用いるマシンを選択する、請求項２記載の管理プログラム。
【請求項４】
何れかのソフトウェアに対応付けた前記第１の項目群を、他のソフトウェアに対応付けた第２の項目群に基づいて変更する、請求項１乃至３の何れか１項に記載の管理プログラム。
【請求項５】
前記第１のソフトウェアを含む複数のソフトウェアと複数の項目群との対応関係の情報を生成し、前記対応関係の情報に基づいて、前記複数のマシンそれぞれが有する前記ＯＳ管理情報の項目群を削除対象とするか否かを判定する、請求項１乃至４の何れか１項に記載の管理プログラム。
【請求項６】
前記ＯＳ管理情報では、前記ＯＳ管理情報に属する各項目がツリー構造で管理され、
前記第１の項目群の特定を、前記ＯＳ管理情報のツリー構造に基づいて、使用するソフトウェアが特定されていない前記ＯＳ管理情報のうち、２以上のマシンが共通に有するファイルに対応付けられる項目群または当該項目群が属する上位項目を特定することで行う、請求項１乃至５の何れか１項に記載の管理プログラム。
【請求項７】
管理対象の複数のマシンより取得された、ＯＳが管理するＯＳ管理情報、ファイル情報、および、登録ソフト情報を記憶する記憶部と、
前記登録ソフト情報、および、前記ＯＳ管理情報に基づき、前記複数のマシンそれぞれにインストールされたソフトウェア、および、当該ソフトウェアが使用する前記ＯＳ管理情報の項目群に関する第１の管理情報を生成し、前記第１の管理情報、および、前記複数のマシンの前記ファイル情報に基づき、使用するソフトウェアが特定されておらず、かつ、対応するファイルが存在する前記ＯＳ管理情報の項目群を、前記登録ソフト情報に含まれない第１のソフトウェアが使用する前記ＯＳ管理情報の項目群である第１の項目群として特定する演算部と、
を有する管理装置。
【請求項８】
コンピュータが、
管理対象の複数のマシンより、ＯＳが管理するＯＳ管理情報、ファイル情報、および、登録ソフト情報をそれぞれ取得し、
前記登録ソフト情報、および、前記ＯＳ管理情報に基づき、前記複数のマシンそれぞれにインストールされたソフトウェア、および、当該ソフトウェアが使用する前記ＯＳ管理情報の項目群に関する第１の管理情報を生成し、
前記第１の管理情報、および、前記複数のマシンの前記ファイル情報に基づき、使用するソフトウェアが特定されておらず、かつ、対応するファイルが存在する前記ＯＳ管理情報の項目群を、前記登録ソフト情報に含まれない第１のソフトウェアが使用する前記ＯＳ管理情報の項目群である第１の項目群として特定する、
管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は管理プログラム、管理装置および管理方法に関する。
【背景技術】
【０００２】
情報処理装置には、オペレーティングソフト（ＯＳ：Operating System）やアプリケーションソフトウェアなどの様々なソフトウェアがインストールされる。システムの運用管理では、複数の情報処理装置が有するソフトウェアを管理装置により集中的に管理することがある。管理装置は、管理対象の情報処理装置からインベントリ情報を収集する。インベントリ情報は、ＯＳが管理するソフトウェア名の情報や該当の情報処理装置が有するファイル名などの情報を含む。管理装置は、インベントリ情報に基づいて、各情報処理装置に存在するソフトウェアを管理し得る。
【０００３】
利用しないソフトウェアを情報処理装置からアンインストールすることもある。例えば、ＯＳのインストール直後の状態（初期設定）からソフトウェアがインストールされたことによる変更内容を逐次保持し、変更内容と初期設定とを用いて、ソフトウェアのインストール順序に依存することなくアンインストールを行う方法が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−１４６７６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＯＳには、一般にレジストリと呼ばれる管理情報によりＯＳやアプリケーションソフトウェアの設定情報を管理するものがある。例えば、ソフトウェアは、動作のために当該ソフトウェアの情報をレジストリに追加する。しかし、ソフトウェアのアンインストール後に、ソフトウェアの情報がレジストリに残されることがある。余計なレジストリが残ると、他のソフトウェアの動作に支障を来たすおそれがある。このため、レジストリに登録された情報を定期的に整理することが考えられる。
【０００６】
例えば、ＯＳが管理するソフトウェア一覧を情報処理装置から取得し、当該ソフトウェア一覧に含まれるソフトウェアとレジストリとの対応付けを行うことが考えられる。何れのソフトウェアにも対応付けられていないレジストリは使用されていないと考えられ、削除候補と決定できる。
【０００７】
ところが、レジストリの追加を行うが、ソフトウェア一覧には含まれないソフトウェアも存在し得る。ソフトウェア一覧に含まれないソフトウェアのレジストリを削除してしまうと、当該ソフトウェアの動作に影響が及ぶ。そこで、レジストリのうち、ＯＳのソフトウェア一覧に含まれないソフトウェアに対応する部分を特定する方法が問題となる。
【０００８】
１つの側面では、本発明は、未登録のソフトウェアに対応するＯＳ管理情報の項目群を特定する管理プログラム、管理装置および管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、管理プログラムが提供される。この管理プログラムは、コンピュータに、管理対象の複数のマシンより、ＯＳが管理するＯＳ管理情報、ファイル情報、および、登録ソフト情報をそれぞれ取得し、登録ソフト情報、および、ＯＳ管理情報に基づき、複数のマシンそれぞれにインストールされたソフトウェア、および、当該ソフトウェアが使用するＯＳ管理情報の項目群に関する第１の管理情報を生成し、第１の管理情報、および、複数のマシンのファイル情報に基づき、使用するソフトウェアが特定されておらず、かつ、対応するファイルが存在するＯＳ管理情報の項目群を、登録ソフト情報に含まれない第１のソフトウェアが使用するＯＳ管理情報の項目群である第１の項目群として特定する、処理を実行させる。
【００１０】
また、１つの態様では、管理装置が提供される。この管理装置は、記憶部と演算部とを有する。記憶部は、管理対象の複数のマシンより取得された、ＯＳが管理するＯＳ管理情報、ファイル情報、および、登録ソフト情報を記憶する。演算部は、登録ソフト情報、および、ＯＳ管理情報に基づき、複数のマシンそれぞれにインストールされたソフトウェア、および、当該ソフトウェアが使用するＯＳ管理情報の項目群に関する第１の管理情報を生成し、第１の管理情報、および、複数のマシンのファイル情報に基づき、使用するソフトウェアが特定されておらず、かつ、対応するファイルが存在するＯＳ管理情報の項目群を、登録ソフト情報に含まれない第１のソフトウェアが使用するＯＳ管理情報の項目群である第１の項目群として特定する。
【００１１】
また、１つの態様では、管理方法が提供される。この管理方法では、コンピュータが、管理対象の複数のマシンより、ＯＳが管理するＯＳ管理情報、ファイル情報、および、登録ソフト情報をそれぞれ取得し、登録ソフト情報、および、ＯＳ管理情報に基づき、複数のマシンそれぞれにインストールされたソフトウェア、および、当該ソフトウェアが使用するＯＳ管理情報の項目群に関する第１の管理情報を生成し、第１の管理情報、および、複数のマシンのファイル情報に基づき、使用するソフトウェアが特定されておらず、かつ、対応するファイルが存在するＯＳ管理情報の項目群を、登録ソフト情報に含まれない第１のソフトウェアが使用するＯＳ管理情報の項目群である第１の項目群として特定する。
【発明の効果】
【００１２】
１つの側面では、未登録のソフトウェアに対応するＯＳ管理情報の項目群を特定できる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態の管理装置を示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】管理サーバのハードウェア例を示す図である。
【図４】管理サーバの機能例を示す図である。
【図５】レジストリの例を示す図である。
【図６】ポーリングの例を示す図である。
【図７】レジストリ管理テーブルの例を示す図である。
【図８】ソフトウェア管理テーブルの例を示す図である。
【図９】フォルダ管理テーブルの例を示す図である。
【図１０】対応管理テーブルの例を示す図である。
【図１１】収集時刻テーブルの例を示す図である。
【図１２】管理サーバのデータ収集例を示すフローチャートである。
【図１３】対応管理テーブルの更新例を示すフローチャートである。
【図１４】ポーリングにより収集される情報の具体例を示す図である。
【図１５】登録ソフトウェアとレジストリとの対応付けの具体例を示す図である。
【図１６】フォルダ群とレジストリ群との対応付けの具体例を示す図である。
【図１７】対応付けの対象外とするＰＣの決定方法の例を示す図である。
【図１８】不要レジストリの判定処理を示す図である。
【図１９】複数のソフトウェアによるレジストリの共通利用の例を示す図である。
【図２０】不要レジストリの他の判定処理を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の管理装置を示す図である。管理装置１は、システムに含まれるソフトウェアの管理を行う。システムはマシン２，３，４を含む。管理装置１は、ネットワークを介してマシン２，３，４と通信する。マシン２，３，４は、サーバやクライアントなどの物理マシンでもよいし、物理マシン上で動作する仮想マシンでもよい。管理装置１は、マシン２，３，４からインベントリ情報を収集し、マシン２，３，４が有するソフトウェアを管理する。
【００１５】
管理装置１は、記憶部１ａおよび演算部１ｂを有する。記憶部１ａは、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。演算部１ｂは、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。「プロセッサ」には、複数のプロセッサの集合（マルチプロセッサ）も含まれ得る。
【００１６】
記憶部１ａは、マシン２，３，４から収集したインベントリ情報を記憶する。インベントリ情報は、登録ソフト情報、ＯＳが管理するＯＳ管理情報およびファイル情報を含む。記憶部１ａは、登録ソフト情報（ソフトウェアをソフトと略記することがある）、ＯＳ管理情報およびファイル情報を、マシン２，３，４それぞれの識別情報に対応付けて記憶する。
【００１７】
ここで、登録ソフト情報は、マシン２，３，４それぞれに対応するソフトウェア一覧の情報である。ソフトウェア一覧は、マシン２，３，４で実行されるＯＳにより管理されるソフトウェア名の一覧である。当該ＯＳによる管理対象外のソフトウェアがマシン２，３，４にインストールされていても、登録ソフト情報には含まれないことになる。
【００１８】
例えば、ソフトウェアのインストール時に、当該ソフトウェアが、ＯＳにより管理されるソフトウェア一覧の情報に自ソフトウェアの情報を登録していれば、ソフトウェア一覧に当該ソフトウェアが登録される。一方、ソフトウェアのインストール時に、当該ソフトウェアが、ＯＳにより管理されるソフトウェア一覧の情報に自ソフトウェアの情報を登録しなければ、ソフトウェア一覧に当該ソフトウェアは登録されない。
【００１９】
ＯＳ管理情報は、マシン２，３，４それぞれのＯＳが管理する情報を含む。例えば、ＯＳ管理情報はレジストリ情報と呼ばれるものでもよい。レジストリは、マシン２，３，４それぞれが実行するＯＳに関する基本情報やアプリケーションソフトウェアの設定情報などである。レジストリは、例えばキーと値とを含む。レジストリ情報はレジストリの集合である。キーは値の格納場所を示す情報であり、ツリー構造をもつ。値はキーに対する具体的な設定値である。レジストリ情報の全体に対する部分をレジストリ範囲と称することがある。ＯＳ管理情報は、レジストリのような設定情報の複数の項目の集合である。例えば、以下に示すＯＳ管理情報の項目群の指定は、ＯＳ管理情報の範囲（例えば、レジストリ範囲）を特定することで行われてもよい。例えば、項目が特定のツリーの配下すべてに該当する場合は、項目すべてをそれぞれ指定するのではなく、ツリーの上位項目を範囲指定することにより、項目群を特定してもよい。
【００２０】
ファイル情報は、マシン２，３，４それぞれが有するファイルのファイル名およびファイルが格納されているフォルダ（ディレクトリと呼ばれるものでもよい）を示すパスの情報を含む。ファイル情報は、ファイル名を含む。
【００２１】
演算部１ｂは、管理対象のマシン２，３，４より、ＯＳ管理情報、ファイル情報、および、登録ソフト情報をそれぞれ取得し、記憶部１ａに格納する。例えば、演算部１ｂは、あるタイミングにおいて、ＯＳ管理情報、ファイル情報および登録ソフト情報をマシン２，３，４から取得する。
【００２２】
演算部１ｂは、記憶部１ａに記憶された登録ソフト情報、および、ＯＳ管理情報に基づき、複数のマシンそれぞれにインストールされたソフトウェア、および、当該ソフトウェアが使用する項目群を特定する。
【００２３】
例えば、演算部１ｂは、あるタイミングにおいて、マシン２，３，４から収集した登録ソフト情報に基づいて、マシン２，３に対してソフトウェアＡが新たにインストールされたことを検出する。ただし、前述のように登録ソフト情報から検出できるのはＯＳのソフトウェア一覧の情報に含まれるソフトウェアであり、ＯＳのソフトウェア一覧の情報に含まれないソフトウェアは検出されない。例えば、演算部１ｂは、マシン４に対して新たにインストールされたソフトウェアを検出しない。
【００２４】
演算部１ｂは、ＯＳ管理情報に基づいて、マシン２，３，４それぞれに項目が追加されたことを検出する。演算部１ｂは、マシン２，３に追加された項目同士を比較し、重複する部分（項目群Ｒ１）をソフトウェアＡに対応付ける。項目群Ｒ１は、マシン２，３に追加された項目のうち、同一の情報（例えば、レジストリのキーおよび値）をもつ項目の集合である。例えば、通常、ソフトウェアは、自ソフトウェアに関する情報（例えば、動作用の設定情報など）をインストール時にＯＳ管理情報へ追加する。よって、あるタイミングでの情報収集により、複数のマシンへのソフトウェアＡの追加が検出され、同じ複数のマシンでＯＳ管理情報の追加が検出されたとき、同複数のマシンでの当該ＯＳ管理情報の重複部分はソフトウェアＡに対応するものである可能性が高い。このため、項目群Ｒ１をソフトウェアＡに対応付けることができる。
【００２５】
演算部１ｂは、ソフトウェアＡが使用するＯＳ管理情報の項目群Ｒ１に関する第１の管理情報を生成する。
すると、演算部１ｂは、マシン２に対して追加されたＯＳ管理情報のうち、使用するソフトウェアが特定されていない項目群Ｒ２を検出する。また、演算部１ｂは、マシン４に対しても、使用するソフトウェアが特定されていないＯＳ管理情報の項目群を検出する。演算部１ｂは、マシン３に対しては、使用するソフトウェアが特定されていないＯＳ管理情報を検出しない。
【００２６】
演算部１ｂは、第１の管理情報、および、複数のマシンのファイル情報に基づき、使用するソフトウェアが特定されておらず、かつ、対応するファイルが存在するＯＳ管理情報の項目群を、登録ソフト情報に含まれない第１のソフトウェアが使用するＯＳ管理情報の項目群である第１の項目群として特定する。
【００２７】
例えば、演算部１ｂは、マシン２における項目群Ｒ２とマシン４において追加されたＯＳ管理情報との重複部分を取得する。一例として、演算部１ｂは、項目群Ｒ２を重複部分として取得する。
【００２８】
マシン２，４において同じ項目群Ｒ２が追加されたということは、登録ソフト情報には含まれない何らかのソフトウェアが、マシン２，４に対して新たにインストールされたことを示唆する。そこで、演算部１ｂは、マシン２，３，４のファイル情報を参照し、追加されたフォルダ群のうち、マシン２，４でのみ共通するフォルダ群を取得する。
【００２９】
例えば、演算部１ｂは、マシン２について、互いに重複しないフォルダ群Ｆ１，Ｆ２を特定する。フォルダ群Ｆ１，Ｆ２が重複しないとは、両フォルダ群が同じパスで指定されるフォルダを含まないことを示す。演算部１ｂは、マシン３について、フォルダ群Ｆ１１を特定する。フォルダ群Ｆ１１は、フォルダ群Ｆ１の一部分である。演算部１ｂは、マシン４について、互いに重複しないフォルダ群Ｆ１２，Ｆ２，Ｆ３を特定する。フォルダ群Ｆ１２は、フォルダ群Ｆ１１の一部分である。また、フォルダ群Ｆ３はフォルダ群Ｆ１とも重複しない。よって、演算部１ｂは、マシン２，４でのみ共通するフォルダ群として、フォルダ群Ｆ２を取得する。この場合、項目群Ｒ２に対応するファイル（フォルダ群Ｆ２に格納されたファイル）が存在することになる。
【００３０】
演算部１ｂは、フォルダ群Ｆ２を第１のソフトウェア（すなわち、登録ソフト情報に未登録のソフトウェア）に対応するフォルダ群であると特定する。そして、演算部１ｂは、フォルダ群Ｆ２を項目群Ｒ２に対応付ける。これにより、第１のソフトウェアと項目群Ｒ２とが対応付けられる。すなわち、演算部１ｂは、項目群Ｒ２を、第１のソフトウェア（未登録のソフトウェア）が使用するレジストリ範囲として特定する。
【００３１】
なお、例えば、演算部１ｂは、マシン４に対して、追加されたＯＳ管理情報のうち項目群Ｒ２を除いた部分である項目群Ｒ３を取得することもある。この場合、演算部１ｂは、項目群Ｒ３について、次回以降の情報収集で取得された情報、あるいは、マシン２，３，４以外の他のマシンから収集された情報を用いて何れかのソフトウェアとの対応付けを行ってもよい。
【００３２】
これにより、未登録のソフトウェアに対応するＯＳ管理情報の項目群を特定できる。また、当該項目群をＯＳ管理情報の整理対象から除外することができる。例えば、上記の例において、項目群Ｒ２を整理対象とし、項目群Ｒ２を削除してしまうと、登録ソフト情報には含まれないが項目群Ｒ２を使用する未登録のソフトウェアの動作に支障を来たすおそれがある。そこで、演算部１ｂは、登録ソフト情報に含まれるソフトウェアに対応付けられなかった項目群についても、マシン２，３，４から収集したファイル情報によって、未登録のソフトウェアに対応付ける。これにより、未登録のソフトウェアが使用する項目群Ｒ２を整理対象から除外できる。
【００３３】
また、演算部１ｂは、未登録のソフトウェアとＯＳ管理情報の項目群とを対応付けた情報から、不要になった項目群を特定することもできる。例えば、項目群Ｒ２とフォルダ群Ｆ２とを対応付けた後に、マシン２においてフォルダ群Ｆ２が削除され、項目群Ｒ２が削除されずに残ったとする。この場合、項目群Ｒ２を使用するソフトウェア（未登録のソフトウェア）はマシン２からアンインストールされたと判断できる。よって、演算部１ｂは、項目群Ｒ２を削除対象と決定する。演算部１ｂは、項目群Ｒ２を削除することで、ＯＳ管理情報の不要な項目群がマシン２に残ることを防げる。その結果、不要な項目群による他のソフトウェアの動作への影響を抑えられる。
【００３４】
例えば、不要な項目群を削除できるため、アンインストールしたソフトウェアの再インストール時や関連する別のソフトウェアのインストール時に、ＯＳ管理情報に不要な項目群が残っていることに起因する不具合の発生を抑えられる。
【００３５】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。第２の実施の形態の情報処理システムは、管理サーバ１００およびＰＣ（Personal Computer）２００，２００ａ，２００ｂ，２００ｃ，２００ｄを含む。管理サーバ１００は、ネットワーク１０を介して、ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄと接続されている。ネットワーク１０は、例えばＬＡＮ（Local Area Network）である。
【００３６】
管理サーバ１００は、ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄを管理するサーバコンピュータである。管理サーバ１００は、ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄからインベントリ情報を定期的に収集し、ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄにインストールされたソフトウェアを管理する。
【００３７】
ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄは、ユーザが操作するクライアントコンピュータである。ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄは、管理サーバ１００からインベントリ情報の収集要求を受信すると、要求に応じてインベントリ情報を管理サーバ１００に送信する。
【００３８】
ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄには、様々なソフトウェアがインストールされ得る。また、ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄには、様々なレジストリやファイルなどの情報が追加され得る。管理サーバ１００は、ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄからインベントリ情報を収集することで、ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄのＯＳが管理するソフトウェアの一覧や追加されたレジストリおよびファイルの情報を管理する。
【００３９】
図３は、管理サーバのハードウェア例を示す図である。管理サーバ１００は、プロセッサ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６および通信インタフェース１０７を有する。各ユニットが管理サーバ１００のバスに接続されている。
【００４０】
プロセッサ１０１は、管理サーバ１００全体を制御する。プロセッサ１０１は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。また、プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００４１】
ＲＡＭ１０２は、管理サーバ１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００４２】
ＨＤＤ１０３は、管理サーバ１００の補助記憶装置である。ＨＤＤ１０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。管理サーバ１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００４３】
画像信号処理部１０４は、プロセッサ１０１からの命令に従って、管理サーバ１００に接続されたディスプレイ１１に画像を出力する。ディスプレイ１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、有機ＥＬ（Electro-Luminescence）ディスプレイなど各種のディスプレイを用いることができる。管理サーバ１００は、ディスプレイ１１を一体に備えてもよい。
【００４４】
入力信号処理部１０５は、管理サーバ１００に接続された入力デバイス１２から入力信号を取得し、プロセッサ１０１に出力する。入力デバイス１２としては、マウスやタッチパネルなどのポインティングデバイスやキーボードなどの各種の入力デバイスを用いることができる。管理サーバ１００には、複数の種類の入力デバイスが接続されてもよい。管理サーバ１００は、入力デバイス１２を一体に備えてもよい。
【００４５】
媒体リーダ１０６は、記録媒体１３に記録されたプログラムやデータを読み取る装置である。記録媒体１３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体１３として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ１０６は、例えば、プロセッサ１０１からの命令に従って、記録媒体１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４６】
通信インタフェース１０７は、ネットワーク１０を介して、ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄと通信を行う。通信インタフェース１０７は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
【００４７】
なお、ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄも管理サーバ１００と同様のハードウェアにより実現できる。
図４は、管理サーバの機能例を示す図である。管理サーバ１００は、記憶部１１０、収集部１２０、差分抽出部１３０、分析部１４０および不要レジストリ判定部１５０を有する。記憶部１１０は、例えば、ＲＡＭ１０２またはＨＤＤ１０３に確保した記憶領域として実現できる。収集部１２０、差分抽出部１３０、分析部１４０および不要レジストリ判定部１５０は、例えば、プロセッサ１０１が実行するプログラムのモジュールとして実現できる。
【００４８】
記憶部１１０は、レジストリ管理テーブル、ソフトウェア管理テーブル、フォルダ管理テーブル、対応管理テーブルおよび収集時刻テーブルを記憶する。レジストリ管理テーブルは、各ＰＣから収集したレジストリ情報の管理に用いられるテーブルである。ソフトウェア管理テーブルは、各ＰＣから収集したソフトウェア一覧の管理に用いられるテーブルである。フォルダ管理テーブルは、各ＰＣから収集したフォルダ情報の管理に用いられるテーブルである。フォルダ情報は、各ＰＣから収集されるファイル情報（ファイルのパスを含む）から取得することもできる（すなわち、フォルダ情報はファイル情報の一例と考えることができる）。対応管理テーブルは、ＰＣが有するソフトウェアまたはフォルダとレジストリとの対応関係の管理に用いられるテーブルである。収集時刻テーブルは、各ＰＣからレジストリ情報、ソフトウェア一覧、フォルダ情報を収集した時刻の管理に用いられるテーブルである。
【００４９】
ここで、レジストリ情報は、各ＰＣで動作するＯＳに関する基本情報やアプリケーションソフトウェアの設定情報などを含む。ソフトウェア一覧は、各ＰＣのＯＳによって管理される登録済みのソフトウェア（以下の説明において、登録ソフトウェアと称することがある）の一覧である。ソフトウェア一覧は、ＯＳによって管理されない未登録のソフトウェア（以下の説明において、未登録ソフトウェアと称することがある）を含まない。
【００５０】
あるソフトウェアがＯＳのソフトウェア一覧に登録されるか否かは、当該ソフトウェアのインストール時の動作によって決まる。例えば、ソフトウェアのインストーラが、ＯＳにより管理されるソフトウェア一覧の情報に自ソフトウェアのソフトウェア名を登録すれば、当該ソフトウェア名がＯＳのソフトウェア一覧に登録される。一方、ソフトウェアのインストーラが、ＯＳにより管理されるソフトウェア一覧の情報に自ソフトウェアのソフトウェア名を登録しなければ、当該ソフトウェア名はＯＳのソフトウェア一覧には登録されない。
【００５１】
また、記憶部１１０は、収集部１２０が各ＰＣからレジストリ情報、ソフトウェア一覧およびフォルダ情報を収集するスケジュールの情報を記憶する。例えば、収集のスケジュールは、１日１回（例えば、１日のうちのある時刻）など、スケジュールの情報によって予め定められる。
【００５２】
収集部１２０は、各ＰＣからレジストリ情報、ソフトウェア一覧およびフォルダ情報を定期的に収集する。収集処理をポーリングと称することがある。収集部１２０は、収集した各情報をレジストリ管理テーブル、ソフトウェア管理テーブル、フォルダ管理テーブルに登録する。また、収集部１２０は、各ＰＣから各情報を収集した時刻を収集時刻テーブルに登録する。
【００５３】
差分抽出部１３０は、今回収集したレジストリ情報、ソフトウェア一覧およびフォルダ情報と前回収集したレジストリ情報、ソフトウェア一覧およびフォルダ情報との差分を抽出する。具体的には、差分抽出部１３０は、前回収集した情報の中には含まれないが、今回収集した情報の中には含まれるレジストリ、登録ソフトウェアおよびフォルダを、レジストリ、登録ソフトウェアおよびフォルダの増加分として抽出する。
【００５４】
分析部１４０は、レジストリと登録ソフトウェアとの対応付けを行い、記憶部１１０に記憶された対応管理テーブルを更新する。具体的には、分析部１４０は、レジストリ情報の増加分とソフトウェア一覧の増加分に基づいて、登録ソフトウェアに対応するレジストリを特定する。分析部１４０は、登録ソフトウェアとレジストリとの対応関係を対応管理テーブルに登録する。
【００５５】
分析部１４０は、何れの登録ソフトウェアにも対応付けられなかったレジストリ情報のうち、ＰＣ間で共通するレジストリ群（未対応のレジストリ群）を特定する。ここで、レジストリ群は、第１の実施の形態のＯＳ管理情報の項目群の一例である。そして、分析部１４０は、特定された当該レジストリを、未登録ソフトウェアに対応付ける。まず、分析部１４０は、各ＰＣのフォルダ情報の増加分に基づいて、未登録ソフトウェアに対応するフォルダ群を特定する。
【００５６】
具体的には、分析部１４０は、あるタイミングで収集したフォルダ情報の増分のうち、何れの登録ソフトウェアにも対応付けられなかったレジストリ情報をもつＰＣのみで共通するフォルダを未登録ソフトウェアに対応するフォルダ群と特定する。なお、何れの登録ソフトウェアにも対応付けられなかったレジストリ情報をもつＰＣを、未登録ソフトウェアをもつＰＣと考えることができる。分析部１４０は、特定したフォルダ群と未対応のレジストリ群との対応関係を、対応管理テーブルに登録する。特定したフォルダ群は未登録ソフトウェアに対応するものなので、未登録ソフトウェアと未対応のレジストリ群とが、対応管理テーブル上で関連付けられることになる。
【００５７】
不要レジストリ判定部１５０は、記憶部１１０に記憶された対応管理テーブルに基づいて、不要レジストリの判定を行う。具体的には、不要レジストリ判定部１５０は、対応管理テーブルに登録された情報から、あるＰＣにおいて、ソフトウェア一覧になく、かつ、対応するフォルダも存在しないが、レジストリのみが残っているソフトウェア（未検出ソフトウェアと称することがある）を特定する。未検出ソフトウェアは、既にアンインストールされたソフトウェアであるが、削除漏れなどにより、対応するレジストリのみが残っているソフトウェアである。当該レジストリが残っていると、他のソフトウェアの動作に影響を与える可能性があるため、不要レジストリ判定部１５０は、当該レジストリが残っているＰＣに不要レジストリの削除指示を行う。削除指示を受けたＰＣは、指示された不要レジストリを削除する。
【００５８】
図５は、レジストリの例を示す図である。レジストリ２０は、キーおよび値を含む。値は、データ名およびデータを含む。キーは、ツリー構造により値の格納場所を指定する情報である。値に含まれるデータ名は、レジストリに登録されたデータの名称（例えば、“ＤＭ  Ｇｒｏｕｐ”など）である。値に含まれるデータは、データの設定値（例えば、“５”など）である。データの設定値として、データ名“ＤＭ  ＦｕｌｌＰａｔｈ  Ｎａｍｅ”のようにファイル名“Ｃ：＼Ｓｗ＼ｍｐｗ．ｄｍ”が設定されることもある。なお、当該ファイル名はフルパスで指定されており、“Ｃ：＼Ｓｗ＼”の部分（パス部分）は、当該ファイルを格納しているフォルダを示している。
【００５９】
図６は、ポーリングの例を示す図である。図６では、収集部１２０が定期的にＰＣ２００からレジストリ情報３１およびソフトウェア一覧３２を収集する例を示している。例えば、収集部１２０は、スケジュールされた時刻Ｔ１，Ｔ２，Ｔ３にＰＣ２００からレジストリ情報３１およびソフトウェア一覧３２を収集する（ポーリング）。なお、図示を省略しているが、収集部１２０は、時刻Ｔ１，Ｔ２，Ｔ３においてＰＣ２００からフォルダ情報も収集する。ポーリングの時刻によって、収集される情報は異なる。時間の経過とともに、ＰＣ２００に対してソフトウェアがインストールされたりアンインストールされたりするからである。
【００６０】
例えば、時刻Ｔ２に収集されたレジストリ情報３１には、ソフトウェアＡ，Ｂ，Ｃ，Ｄに関するレジストリが含まれる。時刻Ｔ２に収集されたソフトウェア一覧３２には、ソフトウェアＡ，Ｂが含まれる。なお、ソフトウェアＤは未登録ソフトウェアである。このため、時刻Ｔ２に収集されたソフトウェア一覧３２にはソフトウェアＤが含まれない。また、時刻Ｔ２に収集されたソフトウェア一覧３２にはソフトウェアＣが含まれない。時刻Ｔ２の時点でアンインストールされているためである。また、時刻Ｔ２に収集されたレジストリ情報３１にソフトウェアＣのレジストリが含まれるのは、ソフトウェアＣのアンインストール時に、ソフトウェアＣのレジストリが削除されずに残ったためである。
【００６１】
なお、図６では、説明を分かりやすくするため、便宜的に“ソフトウェアＡに関するレジストリ”などとレジストリをソフトウェア名でラベルしている。しかし、収集部１２０がレジストリ情報３１およびソフトウェア一覧３２を収集した時点では、管理サーバ１００は、ソフトウェアとレジストリとの対応関係を把握していない。
【００６２】
図７は、レジストリ管理テーブルの例を示す図である。レジストリ管理テーブル１１１，１１１ａは、記憶部１１０に格納される。レジストリ管理テーブル１１１は、今回（今回のポーリング時に）収集されたレジストリ情報である。レジストリ管理テーブル１１１ａは、前回（前回のポーリング時に）収集されたレジストリ情報である。記憶部１１０は、レジストリ管理テーブル１１１，１１１ａにより、少なくとも最新の２回分のレジストリ情報を記憶する。以下では、レジストリ管理テーブル１１１に登録される情報を例示するが、レジストリ管理テーブル１１１ａにも同様の情報が登録される。
【００６３】
レジストリ管理テーブル１１１は、マシンＩＤ（IDentifier）およびレジストリの項目を含む。マシンＩＤの項目には、ＰＣの識別情報（マシンＩＤ）が登録される。レジストリの項目には、レジストリのキーおよび値を示す情報が登録される。
【００６４】
例えば、レジストリ管理テーブル１１１には、マシンＩＤが“ＰＣ１”およびレジストリが“ＲＧ１１”という情報が登録される。これは、ＰＣ２００（マシンＩＤ“ＰＣ１”）から今回収集されたレジストリ情報に、レジストリ“ＲＧ１１”が含まれていることを示す。レジストリ管理テーブル１１１には、ＰＣ２００のレジストリ情報に含まれる複数のレジストリが登録される。
【００６５】
また、レジストリ管理テーブル１１１には、ＰＣ２００ａ，２００ｂ，２００ｃ，２００ｄから収集されたレジストリ情報も同様に登録される。マシンＩＤ“ＰＣ２”は、ＰＣ２００ａのマシンＩＤである。マシンＩＤ“ＰＣ３”は、ＰＣ２００ｂのマシンＩＤである。マシンＩＤ“ＰＣ４”は、ＰＣ２００ｃのマシンＩＤである。マシンＩＤ“ＰＣ５”は、ＰＣ２００ｄのマシンＩＤである。
【００６６】
図８は、ソフトウェア管理テーブルの例を示す図である。ソフトウェア管理テーブル１１２，１１２ａは、記憶部１１０に格納される。ソフトウェア管理テーブル１１２は、今回収集されたソフトウェア一覧である。ソフトウェア管理テーブル１１２ａは、前回収集されたソフトウェア一覧である。記憶部１１０は、ソフトウェア管理テーブル１１２，１１２ａにより、少なくとも最新の２回分のソフトウェア一覧を記憶する。以下では、ソフトウェア管理テーブル１１２に登録される情報を例示するが、ソフトウェア管理テーブル１１２ａにも同様の情報が登録される。
【００６７】
ソフトウェア管理テーブル１１２は、マシンＩＤおよびソフトウェア名の項目を含む。マシンＩＤの項目には、マシンＩＤが登録される。ソフトウェア名の項目には、ソフトウェア名が登録される。
【００６８】
例えば、ソフトウェア管理テーブル１１２には、マシンＩＤが“ＰＣ１”およびソフトウェア名が“ＳＷ１１”という情報が登録される。これは、ＰＣ２００（マシンＩＤ“ＰＣ１”）から今回収集されたソフトウェア一覧には、ソフトウェア名“ＳＷ１１”のソフトウェアが含まれていることを示す。ソフトウェア管理テーブル１１２には、ＰＣ２００のソフトウェア一覧に含まれる複数のソフトウェアが登録される。ソフトウェア管理テーブル１１２には、ＰＣ２００ａ，２００ｂ，２００ｃ，２００ｄから収集されたソフトウェア一覧も同様に登録される。
【００６９】
図９は、フォルダ管理テーブルの例を示す図である。フォルダ管理テーブル１１３，１１３ａは、記憶部１１０に格納される。フォルダ管理テーブル１１３は、今回収集されたフォルダ情報である。フォルダ管理テーブル１１３ａは、前回収集されたフォルダ情報である。記憶部１１０は、フォルダ管理テーブル１１３，１１３ａにより少なくとも最新の２回分のフォルダ情報を記憶する。以下では、フォルダ管理テーブル１１３に登録される情報を例示するが、フォルダ管理テーブル１１３ａにも同様の情報が登録される。
【００７０】
フォルダ管理テーブル１１３は、マシンＩＤ、フォルダ名および作成時刻の項目を含む。マシンＩＤの項目には、マシンＩＤが登録される。フォルダ名の項目には、フォルダ名が登録される。フォルダ名は、フルパスの情報を含む。作成時刻の項目には、フォルダが作成された時刻が登録される。
【００７１】
例えば、フォルダ管理テーブル１１３には、マシンＩＤが“ＰＣ１”、フォルダ名が“ＦＤ１１”および作成時刻が“Ｔｃ１１”という情報が登録される。これは、ＰＣ２００（マシンＩＤ“ＰＣ１”）から今回収集されたフォルダ情報には、フォルダ名“ＦＤ１１”のフォルダが含まれていることを示す。また、フォルダ名“ＦＤ１１”のフォルダがＰＣ２００において作成された時刻が“Ｔｃ１１”であることを示す。フォルダ管理テーブル１１３には、ＰＣ２００のフォルダ情報に含まれる複数のフォルダが登録される。フォルダ管理テーブル１１３には、ＰＣ２００ａ，２００ｂ，２００ｃ，２００ｄから収集されたフォルダ情報も同様に登録される。
【００７２】
図１０は、対応管理テーブルの例を示す図である。対応管理テーブル１１４は、記憶部１１０に格納される。対応管理テーブル１１４は、レジストリ、ソフトウェア名およびフォルダ名の項目を含む。
【００７３】
レジストリの項目には、レジストリのキーおよび値を示す情報が登録される。レジストリの項目には複数のレジストリ（レジストリ群）が登録され得る。ソフトウェア名の項目には、ソフトウェア名が登録される。フォルダ名の項目には、フォルダ名が登録される。フォルダ名の項目には複数のフォルダ群が登録され得る。ただし、ソフトウェア名およびフォルダ名の項目には、何れか一方に情報が登録される。例えば、ソフトウェア名が登録される場合、フォルダ名は設定なし“−”（ハイフン）となる。また、フォルダ名が登録される場合、ソフトウェア名は設定なし“−”となる。
【００７４】
例えば、対応管理テーブル１１４には、レジストリが“ＲＧ１１，・・・”、ソフトウェア名が“ＳＷ１１”、フォルダ名が“−”という情報が登録される。これは、レジストリ群“ＲＧ１１，・・・”がソフトウェア名“ＳＷ１１”の登録ソフトウェアに対応することを示す。
【００７５】
また、対応管理テーブル１１４には、レジストリが“ＲＧ１２，・・・”、ソフトウェア名が“−”、フォルダ名が“ＦＤ１１，・・・”という情報が登録される。これは、レジストリ群“ＲＧ１２，・・・”がフォルダ名“ＦＤ１１，・・・”のフォルダ群に対応することを示す。
【００７６】
図１１は、収集時刻テーブルの例を示す図である。収集時刻テーブル１１５は、記憶部１１０に格納される。収集時刻テーブル１１５は、マシンＩＤおよび収集時刻の項目を含む。マシンＩＤの項目には、マシンＩＤが登録される。収集時刻の項目には、各ＰＣに対してポーリングを行った時刻が登録される。
【００７７】
例えば、収集時刻テーブル１１５には、マシンＩＤが“ＰＣ１”、収集時刻が“Ｔｐ１”という情報が登録される。これは、ＰＣ２００に対して時刻“Ｔｐ１”にポーリングを行ったことを示す。
【００７８】
次に、管理サーバ１００により実行される処理手順を説明する。
図１２は、管理サーバのデータ収集例を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
【００７９】
（Ｓ１１）収集部１２０は、スケジュールされた時刻に達すると、ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄからデータ収集を行う（ポーリング）。収集されるデータには、レジストリ情報、ソフトウェア一覧およびフォルダ情報が含まれる。
【００８０】
（Ｓ１２）収集部１２０は、収集したレジストリ情報を、収集元ＰＣのマシンＩＤに対応付けてレジストリ管理テーブル１１１に登録する。収集部１２０は、収集したソフトウェア一覧を、収集元ＰＣのマシンＩＤに対応付けてソフトウェア管理テーブル１１２に登録する。収集部１２０は、収集したフォルダ情報を、収集元ＰＣのマシンＩＤに対応付けてフォルダ管理テーブル１１３に登録する。収集部１２０は、ポーリングを行った時刻を、ポーリング対象としたＰＣのマシンＩＤに対応付けて収集時刻テーブル１１５に登録する。
【００８１】
（Ｓ１３）差分抽出部１３０は、レジストリ情報、ソフトウェア一覧およびフォルダ情報について、今回のポーリング時と前回のポーリング時との差分をマシンＩＤ毎に抽出する。例えば、差分抽出部１３０は、レジストリ管理テーブル１１１，１１１ａを比較して、レジストリ情報の差分をマシンＩＤ毎に抽出する。差分抽出部１３０は、ソフトウェア管理テーブル１１２，１１２ａを比較して、ソフトウェア名の差分をマシンＩＤ毎に抽出する。差分抽出部１３０は、フォルダ管理テーブル１１３，１１３ａを比較してフォルダ情報の差分をマシンＩＤ毎に抽出する。これにより、差分抽出部１３０は、前回ポーリング時からのレジストリ情報、ソフトウェア一覧およびフォルダ情報の増加分を取得する。
【００８２】
（Ｓ１４）分析部１４０は、ステップＳ１３で抽出した各情報の増加分に基づいて、登録ソフトウェアとレジストリとの対応関係を決定する。また、分析部１４０は、登録ソフトウェアに対応付けられなかったレジストリと未登録ソフトウェアとの対応関係を決定する。分析部１４０は、決定結果により対応管理テーブル１１４を更新する。詳細は後述される。
【００８３】
（Ｓ１５）収集部１２０は、次回ポーリング時刻まで待機する。例えば、ポーリングの周期は、１日１回程度（２４時間周期）である。ただし、１２時間周期や４８時間周期など、他の周期でもよい。そして、処理をステップＳ１１に進める。
【００８４】
図１３は、対応管理テーブルの更新例を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。以下の手順はステップＳ１４に相当する。
（Ｓ２１）分析部１４０は、レジストリとソフトウェアまたはフォルダとの対応関係の情報を対応管理テーブル１１４から読み出す。
【００８５】
（Ｓ２２）分析部１４０は、ステップＳ１３で抽出したソフトウェア一覧の増加分の中から複数のＰＣで共通するソフトウェアを特定する。分析部１４０は、複数のＰＣのソフトウェア一覧の増加分に含まれるソフトウェア名を特定することで、複数のＰＣで共通するソフトウェアを特定できる。
【００８６】
（Ｓ２３）分析部１４０は、ステップＳ２２で特定した共通のソフトウェアを有する複数のＰＣについて、ステップＳ１３で抽出したレジストリ情報の増加分の中からレジストリの共通部分（キーおよび値がＰＣ間で共通するレジストリ群）を検出する。レジストリの共通部分の検出は、共通のソフトウェアを有する各ＰＣのレジストリ情報（レジストリの集合）に対するＡＮＤ演算を行う処理ということもできる。このとき、例えば、共通するキーおよび値をもつレジストリが特定のツリーの配下すべてに該当する場合は、これらレジストリのすべてをそれぞれ指定するのではなく、それらのレジストリが属するツリーの上位キーを特定することにより、共通するレジストリ群を特定してもよい。この場合、該当の上位キーを指定することで、上位キーの配下の複数のレジストリを範囲指定できる。例えば、キーＡの配下に、キーＡ１，Ａ２，Ａ３が存在する場合、キーＡを指定することで、キーＡ１，Ａ２，Ａ３を範囲指定できる。
【００８７】
（Ｓ２４）分析部１４０は、登録ソフトウェアとレジストリとの対応関係を決定する。すなわち、分析部１４０は、ステップＳ２２で特定した登録ソフトウェアとステップＳ２３で検出したレジストリ群とを対応付ける。また、分析部１４０は、対応関係の決定結果に基づいて、対応管理テーブル１１４に既登録の関係を見直す。例えば、既にある登録ソフトウェアに対応付けられているレジストリ群の一部が、別の登録ソフトウェアに対応付けられるものであることが新たな対応付けの結果によって判明することもある。その場合、分析部１４０は、既登録のレジストリ群の当該一部を、別の登録ソフトウェアへ対応付け、当該一部と既存の登録ソフトウェアとの対応付けを解除する。
【００８８】
（Ｓ２５）分析部１４０は、ステップＳ１３で抽出したレジストリ情報の増加分のうち、何れのソフトウェアとも対応付いていないレジストリについて、ＰＣ間でレジストリの共通部分（共通の未対応レジストリ）を検出する。ここで検出された未対応レジストリは、各ＰＣのソフトウェア一覧に登録されていない未登録ソフトウェアに対応するレジストリと考えることができる。
【００８９】
（Ｓ２６）分析部１４０は、収集時刻テーブル１１５のマシンＩＤおよび収集時刻と、フォルダ管理テーブル１１３のマシンＩＤ、フォルダ名および作成時刻を参照し、各ＰＣのインストール途中のフォルダを特定する。あるソフトウェアがインストール途中であり未完全なフォルダ群（あるソフトウェアに対して未だ一部しか作成されていないフォルダ群）を、対応関係の決定処理から除外するためである。具体的には、分析部１４０は、今回のポーリング時刻以前の一定期間内に作成されたフォルダをインストール途中のソフトウェアのフォルダと特定する。例えば、一定期間は、ポーリング時刻から３０分前の時刻からポーリング時刻までの期間とするなど、ソフトウェアのインストールに要する時間に応じて予め定められる。
【００９０】
（Ｓ２７）分析部１４０は、ステップＳ１３で抽出したフォルダ情報の増加分のうち、共通の未対応レジストリを有するＰＣ間のみで共通するフォルダ群を検出する。共通するフォルダ群の検出は、共通の未対応レジストリを有する各ＰＣのフォルダ情報（フォルダの集合）に対するＡＮＤ演算を行う処理ということもできる。ただし、ステップＳ２６での特定結果に応じて、何れかのＰＣにおいて着目するフォルダの作成時刻がポーリング時刻に近い場合（例えば、前述のようにポーリング時刻以前の３０分以内）は、当該ＰＣを除外したＰＣ間において、共通するフォルダ群を検出する。分析部１４０は、ステップＳ２６の結果により、ある共通するフォルダ群の検出に用いるＰＣを選択しているということもできる。
【００９１】
（Ｓ２８）分析部１４０は、ステップＳ２７で検出したフォルダ群と未対応レジストリとの対応関係を決定する。すなわち、分析部１４０は、ステップＳ２７で検出したフォルダ群とステップＳ２５で検出した共通の未対応レジストリとを対応付ける。また、分析部１４０は、対応関係の決定結果に基づいて、対応管理テーブル１１４に既登録の関係を見直す。例えば、既にあるフォルダ群に対応付けられているレジストリ群の一部が、別のフォルダ群に対応付けられるものであることが新たな対応付けの結果によって判明することもある。その場合、分析部１４０は、既登録のレジストリ群の当該一部を、別のフォルダ群へ対応付け、当該一部と既存のフォルダ群との対応付けを解除する。
【００９２】
（Ｓ２９）分析部１４０は、ステップＳ２４，Ｓ２８で決定した対応関係を対応管理テーブル１１４に登録する。
なお、複数のＰＣに対し、あるソフトウェアの異なるバージョンのものがインストールされることもある。そこで、ステップＳ２２で複数のＰＣで共通するソフトウェアを特定する際、分析部１４０は、バージョン番号のみが異なるものを同じソフトウェアとみなしてよい。また、ソフトウェア名をテキストマッチングする際に、マッチングの類似度が比較的高ければ同一とみなしてよい。
【００９３】
また、レジストリに関しても、インストール時の設定などにより、同じソフトウェアであってもＰＣによってはキー名が異なることもある。このため、ステップＳ２３，Ｓ２５におけるレジストリの共通部分の取得でも、レジストリのツリー構造のマッチングにより、キー名が異なっても下位のデータ名が類似していれば同じとみなしてよい。
【００９４】
更に、ステップＳ２７において、共通するフォルダ群を検出する際、絶対パスが完全一致していなくてもよい（通常、インストール先として指定されるパスは可変であるため）。例えば、フォルダ内部の構造（フォルダのツリー構造やファイル内容）の類似度が高ければ同じソフトウェアに対応するフォルダとみなしてよい。このように、分析部１４０は、ソフトウェア名、レジストリ、フォルダのマッチングを行う際に、これらが完全一致するとは限らないことを考慮して揺らぎを許容する。第２の実施の形態の例では、フォルダについてＰＣ間で共通部分を取得するものとしたが、分析部１４０は、ファイルについてＰＣ間で共通部分を取得して未登録ソフトウェアとの対応付けを行ってもよい。その場合も、分析部１４０は、フォルダと同様に（ステップＳ２６と同様に）作成時刻によって対応付け対象のファイルを絞り込んでもよい。
【００９５】
ここで、ステップＳ２４において、分析部１４０は、登録ソフトウェアとレジストリとの既登録の対応関係に対し、更に見直しを図ることもできる。例えば、分析部１４０は、ある登録ソフトウェアについて、対応管理テーブル１１４に既登録の対応関係と今回の対応関係の決定結果とを比較し、両者が異なるとき、今回の対応関係の決定結果により既存の対応関係を更新してもよい。より具体的には、分析部１４０は、今回の対応関係に含まれるレジストリ群と既存の対応関係に含まれるレジストリ群との重複部分を当該登録ソフトウェアに対応付けてもよい。登録ソフトウェアに対応付けられるレジストリ群を絞り込むことで、対応付けの精度を向上できるからである。
【００９６】
同様に、ステップＳ２８において、分析部１４０は、フォルダ群とレジストリとの既登録の対応関係に対し、更に見直しを図ることもできる。例えば、分析部１４０は、あるフォルダ群について、対応管理テーブル１１４に既登録の対応関係と今回の対応関係の決定結果とを比較し、両者が異なるとき、今回の対応関係の決定結果により既存の対応関係を更新してもよい。より具体的には、分析部１４０は、今回の対応関係に含まれるレジストリ群と既存の対応関係に含まれるレジストリ群との重複部分を当該フォルダ群に対応付けてもよい。当該フォルダ群に対応付けられるレジストリ群を絞り込むことで、対応付けの精度を向上できるからである。
【００９７】
図１４は、ポーリングにより収集される情報の具体例を示す図である。図１４では、ＰＣ２００に対する時刻Ｔ１１，Ｔ１２における２回のポーリングを例示している。なお、図６と同様に、説明の便宜上、レジストリに対して“ソフトウェアＡに関するレジストリ”などとソフトウェア名“ソフトウェアＡ”をラベリングしている。レジストリ情報の収集時点において、管理サーバ１００は各レジストリが何れのソフトウェアに対応するものかを把握しているわけではない。
【００９８】
収集部１２０は、ポーリングにより、レジストリ情報３３およびソフトウェア一覧３４をＰＣ２００から取得する。収集部１２０は、ポーリングにより、フォルダ情報もＰＣ２００から取得する。差分抽出部１３０は、時刻Ｔ１１と時刻Ｔ１２においてポーリングにより収集された情報の差分を抽出することで、時刻Ｔ１１から時刻Ｔ１２の間にＰＣ２００に追加された登録ソフトウェア、レジストリおよびフォルダを得る。
【００９９】
分析部１４０は、時刻Ｔ１１，Ｔ１２それぞれで取得したレジストリのキーおよび値をマッチングする。図１３で説明したように、マッチングにはキー構造の類似度や下位のデータの類似度が考慮される。時刻Ｔ１１で取得したレジストリ情報３３には含まれないが、時刻Ｔ１２で取得したレジストリ情報３３に含まれるレジストリが時刻Ｔ１１から時刻Ｔ１２の間にＰＣ２００に追加されたレジストリである。図１４の例では、時刻Ｔ１１の時点ではＰＣ２００のレジストリ情報３３に、ソフトウェアＡ，Ｂ，Ｃ，Ｄ，Ｅのレジストリは存在していない。一方、時刻Ｔ１２の時点では、ＰＣ２００のレジストリ情報３３に、ソフトウェアＡ，Ｂ，Ｃ，Ｄ，Ｅのレジストリは存在している。よって、時刻Ｔ１２の時点のレジストリ情報の増加分は、ソフトウェアＡ，Ｂ，Ｃ，Ｄ，Ｅのレジストリ情報である（ただし、分析部１４０は、この時点ではソフトウェアＡ，Ｂ，Ｃ，Ｄ，Ｅとの対応関係を把握しているわけではない）。
【０１００】
分析部１４０は、時刻Ｔ１１，Ｔ１２それぞれで取得したソフトウェア一覧３４のソフトウェア名をテキストマッチングする。図１３で説明したように、マッチングにはバージョンの相違やテキストの類似度を考慮する。図１４の例では、時刻Ｔ１１の時点では、ＰＣ２００のソフトウェア一覧３４に、ソフトウェアＡ，Ｂ，Ｃのソフトウェア名は存在していない。一方、時刻Ｔ１２の時点では、ＰＣ２００のソフトウェア一覧３４に、ソフトウェアＡ，Ｂのソフトウェア名が存在している。よって、時刻Ｔ１２の時点のソフトウェア一覧の増加分はソフトウェアＡ，Ｂのソフトウェア名である。
【０１０１】
ソフトウェアＣは、時刻Ｔ１１の後、ＰＣ２００にインストールされたが、時刻Ｔ１２の前に、ＰＣ２００からアンインストールされたため、時刻Ｔ１２で収集されたＰＣ２００のソフトウェア一覧３４には含まれない。また、ソフトウェアＤ，Ｅは、時刻Ｔ１２で収集されたＰＣ２００のソフトウェア一覧３４には含まれない未登録ソフトウェアである。
【０１０２】
分析部１４０は、同様にして、時刻Ｔ１１から時刻Ｔ１２の間にＰＣ２００に追加されたフォルダ情報も取得する。
図１５は、登録ソフトウェアとレジストリとの対応付けの具体例を示す図である。図１５は、時刻Ｔ１２に収集部１２０がＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄから収集したソフトウェア一覧およびレジストリ情報について、時刻Ｔ１１での収集結果からの増加分の例を示している。“検出ソフト（増加分）”で示される行は、ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄから収集したソフトウェア一覧の増加分を示す。“レジストリ情報（増加分）”で示される行は、ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄから収集したレジストリ情報の増加分を示す。
【０１０３】
例えば、差分抽出部１３０は、ＰＣ２００に対してソフトウェアＡ，Ｂのソフトウェア名の増加を検出する。差分抽出部１３０は、ＰＣ２００ａに対してソフトウェアＡ，Ｘのソフトウェア名の増加を検出する。差分抽出部１３０は、ＰＣ２００ｂに対してソフトウェアＣ，Ｘのソフトウェア名の増加を検出する。差分抽出部１３０は、ＰＣ２００ｃに対してソフトウェアＣのソフトウェア名の増加を検出する。差分抽出部１３０は、ＰＣ２００ｄに対してソフトウェアＢのソフトウェア名の増加を検出する。ソフトウェアＡ，Ｂ，Ｃ，Ｄ，Ｘは、何れもソフトウェア一覧に登録されている登録ソフトウェアである。
【０１０４】
分析部１４０は、各ＰＣのソフトウェア一覧の増加分の中からソフトウェアＡのみが共通するＰＣ２００，２００ａを特定する。分析部１４０は、ＰＣ２００，２００ａから収集したレジストリ情報の増加分の中から共通のレジストリ群Ｒ１１を検出する。分析部１４０は、ソフトウェアＡとレジストリ群Ｒ１１とを対応付ける。
【０１０５】
分析部１４０は、各ＰＣのソフトウェア一覧の増加分の中からソフトウェアＢのみが共通するＰＣ２００，２００ｄを特定する。分析部１４０は、ＰＣ２００，２００ｄから収集したレジストリ情報の増加分の中から共通のレジストリ群Ｒ１２，Ｒ１４を検出する。分析部１４０は、ソフトウェアＢとレジストリ群Ｒ１２，Ｒ１４とを対応付ける（ただし、後述するようにレジストリ群Ｒ１４は、実際はソフトウェアＣに対応付けられるべきである）。
【０１０６】
分析部１４０は、検出ソフトウェアの増加分の中からソフトウェアＣのみが共通するＰＣ２００ｂ，２００ｃを特定する。分析部１４０は、ＰＣ２００ｂ，２００ｃから収集したレジストリ情報の増加分の中から共通のレジストリ群Ｒ１４を検出する。分析部１４０は、ソフトウェアＣとレジストリ群Ｒ１４とを対応付ける。
【０１０７】
分析部１４０は、検出ソフトウェアの増加分の中からソフトウェアＸのみが共通するＰＣ２００ａ，２００ｂを特定する。分析部１４０は、ＰＣ２００ａ，２００ｂから収集したレジストリ情報の増加分の中から共通のレジストリＲ１３を検出する。分析部１４０は、ソフトウェアＸとレジストリ群Ｒ１３とを対応付ける。
【０１０８】
分析部１４０は、ここまでで対応付けたソフトウェアとレジストリとの対応関係を見直す。例えば、あるソフトウェアとレジストリ群との対応関係に対し、当該レジストリ群が他のソフトウェアに対応付けられた他のレジストリ群を含む場合は、対応付けを修正する。より具体的には、レジストリ群Ｒ１４は、ＰＣ２００ｂ，２００ｃに対する分析によって、ソフトウェアＣに対応付けられている。更に、レジストリ群Ｒ１２，Ｒ１４は、ＰＣ２００，２００ｄに対する分析によって、ソフトウェアＢに対応付けられている。すなわち、ソフトウェアＢに対応付けられたレジストリ群Ｒ１２，Ｒ１４は、ソフトウェアＣに対応付けられたレジストリ群Ｒ１４を含む。よって、分析部１４０は、ソフトウェアＢとレジストリ群Ｒ１２，Ｒ１４との対応関係を修正し、ソフトウェアＢをレジストリ群Ｒ１２に対応付けしなおす（ソフトウェアＣとレジストリ群Ｒ１４との対応関係を維持する）。
【０１０９】
こうして、各ＰＣにおけるレジストリ情報の増加分のうちの一部が、ソフトウェアＡ，Ｂ，Ｃ，Ｘに対応付けられる。このとき、ＰＣ２００には、レジストリ情報の増加分のうち、何れのソフトウェアとも対応付けられていない未対応のレジストリ群ＲＡが存在する。ＰＣ２００ｃには、レジストリ情報の増加分のうち、何れのソフトウェアとも対応付けられていない未対応のレジストリ群ＲＢが存在する。ＰＣ２００ｄには、レジストリ情報の増加分のうち、何れのソフトウェアとも対応付けられていない未対応のレジストリ群ＲＣが存在する。ＰＣ２００ａ，２００ｂには、未対応のレジストリ群は存在していない。
【０１１０】
図１６は、フォルダ群とレジストリ群との対応付けの具体例を示す図である。ここで、分析部１４０は、レジストリ情報と同様に、各ＰＣにおけるフォルダ情報の増加分のうち、ソフトウェアＡ，Ｂ，Ｃ，Ｘに対応するフォルダ群を検出できる。具体的には、ＰＣ２００，２００ａで共通する部分は、ソフトウェアＡに対応するフォルダ群である。また、ＰＣ２００，２００ｄで共通する部分は、ソフトウェアＢに対応するフォルダ群である。ＰＣ２００ｂ，２００ｃで共通する部分は、ソフトウェアＣに対応するフォルダ群である。ＰＣ２００ａ，２００ｂで共通する部分は、ソフトウェアＸに対応するフォルダ群である。
【０１１１】
図１６では、“フォルダ情報（増加分）”の行に、各ＰＣにおけるフォルダ情報の増加分を例示しているが、ソフトウェアＡ，Ｂ，Ｃ，Ｘに対応するフォルダ群については、対応付けの対象外とする（図１６のフォルダ情報の増加分には含まれていない）。これらのフォルダ群は、登録ソフトウェアのフォルダ群であり、登録ソフトウェアは、図１５の処理によって、既にレジストリ群との対応付けが済んでいるからである。なお、収集部１２０が各ＰＣから収集する登録ソフト情報に、登録ソフトウェアと登録ソフトウェアのインストールフォルダとの情報が含まれることも考えられる。その場合、分析部１４０は、登録ソフト情報から、例えばソフトウェアＡ，Ｂ，Ｃ，Ｘに対応するフォルダ群を検出してもよい。
【０１１２】
更に、分析部１４０は、フォルダ管理テーブル１１３の作成時刻と収集時刻テーブル１１５の収集時刻とを参照し、各ＰＣにおいて作成時刻から収集時刻までが所定期間内のフォルダ群も対応付けの対象外とする（図１６のフォルダ情報の増加分には含まれていない）。
【０１１３】
したがって、図１６で示す“フォルダ情報（増加分）”に含まれるフォルダは、未登録ソフトウェアのインストールフォルダ、または、登録／未登録ソフトウェアとは無関係なフォルダである。登録／未登録ソフトウェアとは無関係なフォルダとして、例えば、ユーザが任意に作成したフォルダや、あるソフトウェアが自ソフトウェアのインストールフォルダとは異なるパスに作成したフォルダである。
【０１１４】
具体的には、分析部１４０は、上記の処理対象外のフォルダを除いて、ＰＣ２００のフォルダ増加分としてフォルダ群Ｆ２１を特定する。分析部１４０は、上記の処理対象外のフォルダを除くと、ＰＣ２００ａにはフォルダ増加分なしと特定する。分析部１４０は、同様にＰＣ２００ｂのフォルダ増加分としてフォルダ群Ｆ２２を特定する。分析部１４０は、同様にＰＣ２００ｃのフォルダ増加分としてフォルダ群Ｆ２３を特定する。分析部１４０は、同様にＰＣ２００ｄのフォルダ増加分としてフォルダ群Ｆ２４を特定する。
【０１１５】
分析部１４０は、ＰＣ２００，２００ｂ，２００ｃ，２００ｄそれぞれのフォルダ群Ｆ２１，Ｆ２２，Ｆ２３，Ｆ２４について、未対応のレジストリ群の存在しないＰＣ２００ｂのフォルダ群Ｆ２２と共通する部分Ｐ１１を検出する。部分Ｐ１１は、登録／未登録ソフトウェアとは無関係なフォルダと考えることができる。なぜなら、フォルダ群Ｆ２２は登録ソフトウェアに対応するものではなく、かつ、ＰＣ２００ｂには、未対応のレジストリ群が存在していない（未登録ソフトウェアが存在していない）からである。
【０１１６】
分析部１４０は、フォルダ群Ｆ２１，Ｆ２３，Ｆ２４（部分Ｐ１１を除く）のうち、共通する部分Ｐ１２を検出する。部分Ｐ１２は、ＰＣ２００，２００ｃ，２００ｄで共通するフォルダ群である。また、前述の未対応のレジストリ群ＲＡ，ＲＢ，ＲＣの共通部分Ｐ１も、ＰＣ２００，２００ｃ，２００ｄで共通するレジストリ群である。したがって、フォルダ群Ｆ２１，Ｆ２３，Ｆ２４の共通部分Ｐ１２は、未対応のレジストリ群ＲＡ，ＲＢ，ＲＣの共通部分Ｐ１に対応するフォルダ群であると考えることができる。よって、分析部１４０は、フォルダ群Ｆ２１，Ｆ２３，Ｆ２４の共通部分Ｐ１２に相当するフォルダ群と、レジストリ群ＲＡ，ＲＢ，ＲＣの共通部分Ｐ１に相当するレジストリ群とを対応付ける。通常、ソフトウェアは、インストール時に、自ソフトウェアを動作させるための情報をレジストリへ追加する。したがって、この場合、共通部分Ｐ１２に相当するフォルダ群は、未登録ソフトウェア（例えば、図１４のソフトウェアＤ）のインストール時に当該未登録ソフトウェアの情報を格納するために作成されたフォルダ（インストールフォルダ）であると考えることができる。例えば、このタイミングで、フォルダ群Ｆ２４に含まれる全てのフォルダの、未登録ソフトウェアへの対応付けが完了する。
【０１１７】
分析部１４０は、フォルダ群Ｆ２１，Ｆ２３（部分Ｐ１１，Ｐ１２を除く）のうち、共通する部分Ｐ１３を検出する。部分Ｐ１３は、ＰＣ２００，２００ｃで共通するフォルダ群である。また、前述の未対応のレジストリ群ＲＡ，ＲＢの共通部分Ｐ２も、ＰＣ２００，２００ｃで共通するレジストリ群である。したがって、フォルダ群Ｆ２１，Ｆ２３の共通部分Ｐ１３は、未対応のレジストリ群ＲＡ，ＲＢの共通部分Ｐ２に対応するフォルダ群であると考えることができる。よって、分析部１４０は、フォルダ群Ｆ２１，Ｆ２３の共通部分Ｐ１３に相当するフォルダ群と、レジストリ群ＲＡ，ＲＢの共通部分Ｐ２に相当するレジストリ群とを対応付ける。部分Ｐ１２の場合と同様に、共通部分Ｐ１３に相当するフォルダ群は、未登録ソフトウェア（部分Ｐ１２に対応する未登録ソフトウェアとは異なる未登録ソフトウェアであり、例えば図１４のソフトウェアＥ）のインストールフォルダであると考えることができる。例えば、このタイミングで、フォルダ群Ｆ２１に含まれる全てのフォルダの、未登録ソフトウェアへの対応付けが完了する。
【０１１８】
ＰＣ２００ｃでは、未対応のレジストリ群ＲＢのうち、何れのフォルダ群とも対応付けられていない部分Ｐ３が存在する。ＰＣ２００ｃでは、フォルダ群Ｆ２３のうち、何れのレジストリ群とも対応付けられていない部分Ｐ１４が存在する。分析部１４０は、部分Ｐ３に相当するレジストリ群と、部分Ｐ１４に相当するフォルダ群とを対応付けてもよい。あるいは、分析部１４０は、次回以降のポーリングにより収集した情報に基づいて、レジストリ群ＲＢのうち部分Ｐ３に対応付けるフォルダ群およびフォルダ群Ｆ２３のうち部分Ｐ１４に対応付けるレジストリ群を決定してもよい。
【０１１９】
分析部１４０は、こうして決定した登録ソフトウェア名とレジストリ群との対応関係を対応管理テーブル１１４に登録する。また、分析部１４０は、フォルダ群とレジストリ群との対応関係を対応管理テーブル１１４に登録する。ここでレジストリ群に対応付けられたフォルダ群は、未登録ソフトウェアのインストールフォルダであると考えられる。このため、フォルダ群とレジストリ群との対応関係は、未登録ソフトウェアとレジストリ群との対応関係といえる。
【０１２０】
更に、分析部１４０は、次の方法によって、対応付けの対象外とするレジストリ群を決定してもよい。
図１７は、対応付けの対象外とするＰＣの決定方法の例を示す図である。分析部１４０による登録ソフトウェアとレジストリ群との対応付けは、インストール処理が完了している登録ソフトウェアに対して行われることが好ましい。ポーリング時にインストール中である登録ソフトウェアが存在する場合、ソフトウェア一覧には登録ソフトウェアのソフトウェア名が存在するが、当該登録ソフトウェアに対応するレジストリ群は作成途中であるという状況があり得る。この場合に対応付けを行ってしまうと、登録ソフトウェアと作成途中の未完全なレジストリ群とが対応付けられてしまい、適切な対応関係を管理できなくなる。具体的には次の通りである。
【０１２１】
仮に、管理サーバ１００が、あるタイミングのポーリングにより、ＰＣ２００，２００ａに対しソフトウェア一覧にソフトウェアＡが追加されたことを検出したとする。このとき、ＰＣ２００ではソフトウェアＡがインストール済であるが、ＰＣ２００ａではソフトウェアＡがインストール途中である状況が起こり得る。この場合、ＰＣ２００のレジストリ情報ではソフトウェアＡの完全なレジストリ群Ｒ１１が含まれる。一方、ＰＣ２００ａのレジストリ情報ではソフトウェアＡのレジストリ群Ｒ１１が全部含まれるわけではなく、レジストリ群Ｒ１１の一部Ｒ１１ａが含まれるのみである。すなわち、ＰＣ２００のレジストリ群Ｒ１１に含まれるレジストリ部分ＲＸが、ＰＣ２００ａのレジストリ情報には欠落している。このような状況で、ＰＣ２００，２００ａでレジストリ情報の共通部分を特定してソフトウェアＡに対応付けるとすると、レジストリ群Ｒ１１のうち、レジストリ部分ＲＸを欠いた一部Ｒ１１ａがソフトウェアＡに対応付けられてしまう。
【０１２２】
そこで、分析部１４０は、該当の登録ソフトウェアに対応するフォルダの作成時刻を調べ、ポーリング時刻とほぼ一致（例えば、前述のように、作成時刻からポーリング時刻までが所定期間内である）場合、当該登録ソフトウェアをインストール中であると判断し、レジストリ群の共通部分の抽出対象とするＰＣから除外してもよい。例えば、図１６で説明したように、分析部１４０は、フォルダ情報のうちソフトウェアＡに対応するフォルダ群を特定し得る。
【０１２３】
分析部１４０は、ＰＣ２００ａ以外に、ソフトウェアＡが追加されてインストールが完了しているＰＣがあれば、当該ＰＣとＰＣ２００とのレジストリの共通部分を用いてソフトウェアＡに対応するレジストリ群の特定を行える。ただし、ＰＣ２００ａ以外にソフトウェアＡが追加されてインストールが完了しているＰＣがなければ、今回はソフトウェアＡとレジストリとの対応付けを行えないことになる。すなわち、分析部１４０は、図１３のステップＳ２２において、ソフトウェアＡを複数のＰＣ間で共通するソフトウェアとして特定しても、ステップＳ２３，Ｓ２４の処理の対象外とする。これにより作成中のレジストリ群と登録ソフトウェアとが対応付けられることを抑えられる。
【０１２４】
ソフトウェアＡを対応付けの対象外とした場合、分析部１４０は、次回のポーリング結果に応じて、ソフトウェアＡとレジストリ群との対応付けを行ってもよい。次回のポーリング時に、ＰＣ２００ａでレジストリ群Ｒ１１の作成が完了していれば、分析部１４０は、ソフトウェアＡとレジストリ群Ｒ１１とを適切に対応付けることができる。ただし、次回のポーリングの結果から、ソフトウェアＡに対応するレジストリ群を特定する場合、分析部１４０は、ＰＣ２００，２００ａから次回ポーリングで取得したレジストリ情報を、前回との差分をとらずに比較し、共通のレジストリ群Ｒ１１を特定することになる。そして、分析部１４０は、当該共通のレジストリ群Ｒ１１をソフトウェアＡに対応付ける。
【０１２５】
こうして、管理サーバ１００は、登録ソフトウェアおよび未登録ソフトウェアとレジストリとの対応付けを適切に行える。管理サーバ１００によれば、登録ソフトウェアだけでなく、未登録ソフトウェアによって使用されるレジストリも、未登録ソフトウェアに対応付けて適切に管理できる。なお、対応管理テーブル１１４の例では、未登録ソフトウェアのインストールフォルダと、レジストリとを対応付けるものとした。これに対し、分析部１４０は、インストールフォルダの情報から未登録ソフトウェアの識別名を決定し、当該識別名とレジストリとの対応付けを行ってもよい。例えば、分析部１４０は、インストールフォルダのパス内において、ＯＳがアプリケーションソフトウェアの格納用に用意した所定のフォルダの直下の文字列を未登録ソフトウェアの識別名としてもよい。あるいは、インストールフォルダに含まれる実行形式のファイル（例えば、ｅｘｅ形式のファイルなど）のファイル名（例えば、ａｐｐＺ．ｅｘｅ）から未登録ソフトウェアの識別名（例えば、ａｐｐＺなど）を決定してもよい。すると、分析部１４０は、未登録ソフトウェアの識別名とレジストリとを対応付けることができる。この場合にも、分析部１４０は、未登録ソフトウェアの識別名とインストールフォルダとを対応付けた情報を更に記憶部１１０に格納して保持することで、対応管理テーブル１１４と同等の情報を管理できる。
【０１２６】
そして、不要レジストリ判定部１５０は、分析部１４０により作成された対応管理テーブル１１４に基づいて、ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄにおける不要レジストリを判定する。
【０１２７】
図１８は、不要レジストリの判定処理を示す図である。以下、図１８に示す処理をステップ番号に沿って説明する。管理サーバ１００は、例えば、ポーリング後の分析部１４０の処理後に以下の手順を開始する。
【０１２８】
（Ｓ３１）不要レジストリ判定部１５０は、レジストリとソフトウェアまたはフォルダとの対応関係の情報を対応管理テーブル１１４から読み出す。
（Ｓ３２）差分抽出部１３０は、前回のポーリングで取得したソフトウェア一覧およびフォルダ情報と今回のポーリングで取得したソフトウェア一覧およびフォルダ情報の差分を抽出し、削除されたソフトウェアまたはフォルダを検出する。具体的には、あるＰＣについて、前回のポーリングで取得したソフトウェア一覧には含まれるが、今回のポーリングで取得したソフトウェア一覧には含まれないソフトウェアが、当該ＰＣから削除されたソフトウェア（未検出ソフトウェア）である。また、あるＰＣについて、前回のポーリングで取得したフォルダ情報には含まれるが、今回のポーリングで取得したフォルダ情報には含まれないフォルダが、当該ＰＣから削除されたフォルダである。差分抽出部１３０は抽出結果を不要レジストリ判定部１５０に通知する。
【０１２９】
（Ｓ３３）不要レジストリ判定部１５０は、対応管理テーブル１１４から読み出した情報に基づいて、何れかのＰＣから削除されたソフトウェアまたはフォルダに対応するレジストリが当該ＰＣに残存するか否かを判定する。残存する場合、処理をステップＳ３４に進める。残存しない場合、処理を終了する。例えば、ＰＣ２００から削除されたソフトウェアまたはフォルダに対応するレジストリが、ＰＣ２００のマシンＩＤに対応付けてレジストリ管理テーブル１１１に存在している場合、当該レジストリはＰＣ２００に残存していることになる。
【０１３０】
（Ｓ３４）不要レジストリ判定部１５０は、該当のＰＣに対し、残存するレジストリを不要レジストリと判定する。不要レジストリ判定部１５０は、当該ＰＣに対して、不要レジストリの削除を指示する。これにより、当該ＰＣから不要レジストリが削除される。
【０１３１】
このようにして、管理サーバ１００はＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄにおける不要レジストリの判定を行える。管理サーバ１００は、ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄにより不要レジストリを削除させることで、ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄ上の他のソフトウェアの動作に対し不要レジストリによる悪影響が及ぶことを防げる。
【０１３２】
また、登録ソフトウェアに対応付けられていなくても、未登録ソフトウェアに対応付けられたレジストリは、不要レジストリとは判断されないことになる。このため、未登録ソフトウェアによって使用されるレジストリが、不要レジストリと誤判断されて削除されてしまうことを防げる。
【０１３３】
更に、ステップＳ３２，Ｓ３３では不要レジストリ判定部１５０は、次のように不要レジストリを判定してもよい。例えば、対応管理テーブル１１４に登録されたソフトウェア名とレジストリ群との１つの組について、レジストリ管理テーブル１１１には該当のレジストリ群が存在するが、ソフトウェア管理テーブル１１２には該当のソフトウェア名が存在しないＰＣを特定する。この場合、当該ＰＣには該当のソフトウェア名で示されるソフトウェアがアンインストールされたが、アンインストール時にレジストリを消し損なったと判断できる。不要レジストリ判定部１５０は、当該ソフトウェアに対応するレジストリ群を不要レジストリと判定する。こうして、不要レジストリ判定部１５０は、各ＰＣに対し、対応管理テーブル１１４に登録されたソフトウェア名とレジストリ群との組毎に、不要レジストリを判定し得る。また、前回ポーリングと今回ポーリングの間にインストールされアンインストールされたソフトウェア（例えば、ソフトウェアＣ）に対応するレジストリも不要レジストリとして判定できる。
【０１３４】
同様に、例えば対応管理テーブル１１４に登録されたフォルダ群とレジストリ群との１つの組について、レジストリ管理テーブル１１１には該当のレジストリ群が存在するが、フォルダ管理テーブル１１３には該当のフォルダ群が存在しないＰＣを特定する。この場合、当該ＰＣには該当のフォルダ群で示される未登録ソフトウェアがアンインストールされたが、アンインストール時にレジストリを消し損なったと判断できる。不要レジストリ判定部１５０は、当該フォルダ群に対応するレジストリ群を不要レジストリと判定する。こうして、不要レジストリ判定部１５０は、各ＰＣについて、対応管理テーブル１１４に登録されたフォルダ群とレジストリ群との組毎に、不要レジストリを判定し得る。また、前回ポーリングと今回ポーリングの間にインストールされアンインストールされた未登録ソフトウェアに対応するレジストリも不要レジストリとして判定できる。
【０１３５】
ここで、あるＰＣにおいて、あるレジストリ部分が複数のソフトウェアによって共通に利用されることも考えられる。その場合、当該複数のソフトウェアの一部がアンインストールされたからといって、当該レジストリ部分を不要レジストリと判定して削除させてしまうと、他のソフトウェアが動作しなくなるおそれもある。具体的には次の通りである。
【０１３６】
図１９は、複数のソフトウェアによるレジストリの共通利用の例を示す図である。例えば、ＰＣ２００にソフトウェアＹ，Ｚがインストールされ、ＰＣ２００ａにソフトウェアＹがインストールされ、ＰＣ２００ｂにソフトウェアＺがインストールされているケースを考える。例えば、ソフトウェアＹ，Ｚは、登録ソフトウェアである。
【０１３７】
管理サーバ１００は、ＰＣ２００ａとソフトウェアＹがインストールされた他のＰＣ（図示を省略している）とで、レジストリ情報の共通部分を得ることで、ソフトウェアＹに対応するレジストリ群を得る。また、管理サーバ１００は、ＰＣ２００ｂとソフトウェアＺがインストールされた他のＰＣ（図示を省略している）とで、レジストリ情報の共通部分を得ることで、ソフトウェアＺに対応するレジストリ群を得る。ソフトウェアＹに対応するレジストリ群と、ソフトウェアＺに対応するレジストリ群とでは、共通に利用される部分が存在する。
【０１３８】
このとき、ＰＣ２００からソフトウェアＹまたはソフトウェアＺの何れか一方のみが削除され、削除された方のソフトウェアに対応するレジストリを不要レジストリとして削除してしまうと、残った方のソフトウェアが共通部分のレジストリを利用できなくなる。この場合、残った方のソフトウェアの動作に支障がでる。すなわち、ＰＣ２００において、ソフトウェアＹ，Ｚで共通に利用される部分は、ソフトウェアＹおよびソフトウェアＺの何れか一方が削除されても不要レジストリとすべきでない部分である。そこで、不要レジストリ判定部１５０は不要レジストリの判定を次のように行ってもよい。
【０１３９】
図２０は、不要レジストリの他の判定処理を示すフローチャートである。以下、図２０に示す処理をステップ番号に沿って説明する。図２０の手順では、図１８の手順に対し、ステップＳ３３に代えて、ステップＳ３３ａ，３３ｂ，３３ｃを実行する点が、図１８と異なる。そこで、以下の説明では、ステップＳ３３ａ，Ｓ３３ｂ，Ｓ３３ｃを説明し、他の手順の説明を省略する。
【０１４０】
（Ｓ３３ａ）不要レジストリ判定部１５０は、対応管理テーブル１１４から読み出した情報に基づいて、何れかのＰＣから削除されたソフトウェアまたはフォルダに対応するレジストリが当該ＰＣに残存するか否かを判定する。判定方法はステップＳ３３と同様である。残存する場合、処理をステップＳ３３ｂに進める。残存しない場合、処理を終了する。
【０１４１】
（Ｓ３３ｂ）不要レジストリ判定部１５０は、対応管理テーブル１１４を参照して、残存していると判定されたレジストリのうち、該当のＰＣからアンインストールされていない他のソフトウェアまたは削除されていない他のフォルダにも対応している部分があるか否かを判定する。ある場合、処理をステップＳ３３ｃに進める。ない場合、処理をステップＳ３４に進める。
【０１４２】
（Ｓ３３ｃ）不要レジストリ判定部１５０は、残存するレジストリのうちアンインストールされていない他のソフトウェアまたは他のフォルダに対応する部分以外を不要と判定する。不要レジストリ判定部１５０は、不要部分の削除を該当のＰＣに指示する。これにより、該当のＰＣからレジストリの当該不要部分が削除される。
【０１４３】
このように、管理サーバ１００は、複数のソフトウェアによって共通に利用されるレジストリが存在する場合、複数のソフトウェアの何れかのソフトウェアが削除されても、当該レジストリを不要レジストリとして削除しないよう管理できる。
【０１４４】
ここで、通常、ソフトウェアのインストール時に、インストーラがソフトウェアの動作のための設定情報をレジストリに登録する。ソフトウェアのアンインストール時には、アンインストーラが、インストール時に登録したレジストリの情報を削除する。しかし、削除漏れにより、不要なレジストリが残存することがある。不要なレジストリが残存することで、その後のソフトウェアのインストール時（例えば、同ソフトウェアの再インストール、新バージョンのインストール、関連ソフトウェアの新規インストール時）などに、ソフトウェアの動作に不具合が生じることがある。また、不要レジストリが過剰に蓄積することでＰＣの性能劣化（例えば、記憶容量が無駄に使用されるなど）にもつながる。
【０１４５】
管理サーバ１００によれば、対応管理テーブル１１４に基づいて、不要レジストリを判定し、各ＰＣから削除できる。その結果、他のソフトウェアの動作に対する影響を抑えられる。また、不要レジストリが過剰に蓄積されないようにすることで、ＰＣの性能劣化も抑えられる。
【０１４６】
なお、管理サーバ１００の管理対象のマシンは、ＰＣ２００，２００ａ，２００ｂ，２００ｃ，２００ｄのような物理マシンに限らず、物理マシン上で動作する仮想マシンでもよい。
【０１４７】
また、第１の実施の形態の情報処理は、演算部１ｂにプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、プロセッサ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体１３に記録できる。
【０１４８】
例えば、プログラムを記録した記録媒体１３を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体１３に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【０１４９】
以上の第１，第２の実施の形態を含む実施形態に関し、更に以下の付記を開示する。
（付記１）  コンピュータに、
管理対象の複数のマシンより、ＯＳが管理するＯＳ管理情報、ファイル情報、および、登録ソフト情報をそれぞれ取得し、
前記登録ソフト情報、および、前記ＯＳ管理情報に基づき、前記複数のマシンそれぞれにインストールされたソフトウェア、および、当該ソフトウェアが使用する前記ＯＳ管理情報の項目群に関する第１の管理情報を生成し、
前記第１の管理情報、および、前記複数のマシンの前記ファイル情報に基づき、使用するソフトウェアが特定されておらず、かつ、対応するファイルが存在する前記ＯＳ管理情報の項目群を、前記登録ソフト情報に含まれない第１のソフトウェアが使用するＯＳ管理情報の項目群である第１の項目群として特定する、
処理を実行させる管理プログラム。
【０１５０】
（付記２）  前記複数のマシンのファイル情報に含まれるフォルダおよびファイルの作成時刻に基づいて、前記第１のソフトウェアと前記第１の項目群とを対応付ける、付記１記載の管理プログラム。
【０１５１】
（付記３）  前記ＯＳ管理情報、前記ファイル情報、および、前記登録ソフト情報の前記複数のマシンへの問い合わせ時刻と、前記フォルダの作成時刻との比較に応じて前記対応付けに用いるマシンを選択する、付記２記載の管理プログラム。
【０１５２】
（付記４）  前記比較により前記問い合わせ時刻において前記第１のソフトウェアをインストール途中であるマシンを特定し、当該マシン以外のマシンから取得した情報を用いて、前記対応付けを行う、付記３記載の管理プログラム。
【０１５３】
（付記５）  何れかのソフトウェアに対応付けた前記第１の項目群を、他のソフトウェアに対応付けた第２の項目群に基づいて変更する、付記１乃至４の何れか１つに記載の管理プログラム。
【０１５４】
（付記６）  前記第２の項目群は、前記第１の項目群の一部であり、
前記何れかのソフトウェアに対応させる項目群を、前記第１の項目群から前記第２の項目群を除外した項目群に変更する、付記５記載の管理プログラム。
【０１５５】
（付記７）  前記第１のソフトウェアを含む複数のソフトウェアと複数の項目群との対応関係の情報を生成し、前記対応関係の情報に基づいて、前記複数のマシンそれぞれが有する前記ＯＳ管理情報の項目群を削除対象とするか否かを判定する、付記１乃至６の何れか１つに記載の管理プログラム。
【０１５６】
（付記８）  何れかのマシンにおいて、前記対応関係の情報に含まれる項目群は存在するが、当該項目群に対応する何れのソフトウェアも存在しない場合、当該項目群のうち、当該マシンに存在する他の何れのソフトウェアにも対応付けられていない部分を削除対象と判定する、付記７記載の管理プログラム。
【０１５７】
（付記９）  前記登録ソフト情報に基づいて、共通のソフトウェアがインストールされた２以上のマシンで共通する項目群を、当該ソフトウェアが使用する項目群と特定する、付記１乃至８の何れか１つに記載の管理プログラム。
【０１５８】
（付記１０）  前記第１の項目群の指定を、使用するソフトウェアが特定されていない前記ＯＳ管理情報のうち、２以上のマシンが共通に有するファイルに対応付けられる範囲を特定することで行う、付記１乃至９の何れか１つに記載の管理プログラム。
【０１５９】
（付記１１）  前記ＯＳ管理情報、前記ファイル情報、および、前記登録ソフト情報の前回取得分と今回取得分との差分により、前回の取得時から今回の取得時の間に追加された前記ＯＳ管理情報の項目群、フォルダ、および、ソフトウェアをマシン毎に検出し、各マシンに追加されたソフトウェアが使用する前記ＯＳ管理情報の項目群を、追加された項目群の中から特定する、付記１乃至１０の何れか１つに記載の管理プログラム。
【０１６０】
（付記１２）  管理対象の複数のマシンより取得された、ＯＳが管理するＯＳ管理情報、ファイル情報、および、登録ソフト情報を記憶する記憶部と、
前記登録ソフト情報、および、前記ＯＳ管理情報に基づき、前記複数のマシンそれぞれにインストールされたソフトウェア、および、当該ソフトウェアが使用する前記ＯＳ管理情報の項目群に関する第１の管理情報を生成し、前記第１の管理情報、および、前記複数のマシンの前記ファイル情報に基づき、使用するソフトウェアが特定されておらず、かつ、対応するファイルが存在する前記ＯＳ管理情報の項目群を、前記登録ソフト情報に含まれない第１のソフトウェアが使用する前記ＯＳ管理情報の項目群である第１の項目群として特定する演算部と、
を有する管理装置。
【０１６１】
（付記１３）  コンピュータが、
管理対象の複数のマシンより、ＯＳが管理するＯＳ管理情報、ファイル情報、および、登録ソフト情報をそれぞれ取得し、
前記登録ソフト情報、および、前記ＯＳ管理情報に基づき、前記複数のマシンそれぞれにインストールされたソフトウェア、および、当該ソフトウェアが使用する前記ＯＳ管理情報の項目群に関する第１の管理情報を生成し、
前記第１の管理情報、および、前記複数のマシンの前記ファイル情報に基づき、使用するソフトウェアが特定されておらず、かつ、対応するファイルが存在する前記ＯＳ管理情報の項目群を、前記登録ソフト情報に含まれない第１のソフトウェアが使用する前期ＯＳ管理情報の項目群である第１の項目群として特定する、
管理方法。
【符号の説明】
【０１６２】
１  管理装置
１ａ  記憶部
１ｂ  演算部
２，３，４  マシン
【図１】
0006447307.tif 000002
【図２】
0006447307.tif 000003
【図３】
0006447307.tif 000004
【図４】
0006447307.tif 000005
【図５】
0006447307.tif 000006
【図６】
0006447307.tif 000007
【図７】
0006447307.tif 000008
【図８】
0006447307.tif 000009
【図９】
0006447307.tif 000010
【図１０】
0006447307.tif 000011
【図１１】
0006447307.tif 000012
【図１２】
0006447307.tif 000013
【図１３】
0006447307.tif 000014
【図１４】
0006447307.tif 000015
【図１５】
0006447307.tif 000016
【図１６】
0006447307.tif 000017
【図１７】
0006447307.tif 000018
【図１８】
0006447307.tif 000019
【図１９】
0006447307.tif 000020
【図２０】
0006447307.tif 000021