(57)【特許請求の範囲】
【請求項１】
コンピュータに、
ソフトウェアの検出条件の複数の生成規則のいずれかに従って生成された第１の検出条件による過去の判定で、前記コンピュータに導入されていると判定された特定のソフトウェアについて、前記コンピュータへの導入の有無を、前記第１の検出条件によって判定し、
前記特定のソフトウェアの導入の有無が前記第１の検出条件で判定できない場合、前記複数の生成規則それぞれに従って生成できる複数の検出条件のうちの、前記第１の検出条件とは別の第２の検出条件により、前記特定のソフトウェアの導入の有無を判定する、
処理を実行させるソフトウェア導入判定プログラム。
【請求項２】
前記コンピュータに、さらに、
前記複数の生成規則に従って生成できる前記第２の検出条件のいずれにおいても前記特定のソフトウェアの導入の有無を判定できない場合、前記特定のソフトウェアが前記コンピュータから削除されたと判定する、
処理を実行させる請求項１記載のソフトウェア導入判定プログラム。
【請求項３】
前記第２の検出条件による判定では、前記第１の検出条件に含まれる値を、予め設定値候補として用意された他の値に変更した、前記第２の検出条件を生成する、
請求項１または２記載のソフトウェア導入判定プログラム。
【請求項４】
前記複数の生成規則それぞれは、ソフトウェアの動作環境に対応付けられており、
前記第２の検出条件による判定では、前記コンピュータの判定時における動作環境に対応する生成規則に従って生成された前記第２の検出条件により判定する、
請求項１乃至３のいずれかに記載のソフトウェア導入判定プログラム。
【請求項５】
コンピュータが、
ソフトウェアの検出条件の複数の生成規則のいずれかに従って生成された第１の検出条件による過去の判定で、前記コンピュータに導入されていると判定された特定のソフトウェアについて、前記コンピュータへの導入の有無を、前記第１の検出条件によって判定し、
前記特定のソフトウェアの導入の有無が前記第１の検出条件で判定できない場合、前記複数の生成規則それぞれに従って生成できる複数の検出条件のうちの、前記第１の検出条件とは別の第２の検出条件により、前記特定のソフトウェアの導入の有無を判定する、
ソフトウェア導入判定方法。
【請求項６】
ソフトウェアの導入の有無を判定するソフトウェア導入判定装置であって、
ソフトウェアの検出条件の複数の生成規則を記憶する記憶部と、
前記複数の生成規則のいずれかに従って生成された第１の検出条件による過去の判定で、前記ソフトウェア導入判定装置に導入されていると判定された特定のソフトウェアについて、前記ソフトウェア導入判定装置への導入の有無を、前記第１の検出条件によって判定し、前記特定のソフトウェアの導入の有無が前記第１の検出条件で判定できない場合、前記複数の生成規則それぞれに従って生成できる複数の検出条件のうちの、前記第１の検出条件とは別の第２の検出条件により、前記特定のソフトウェアの導入の有無を判定する演算部と、
を有するソフトウェア導入判定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア導入判定プログラム、ソフトウェア導入判定方法、およびソフトウェア導入判定装置に関する。
【背景技術】
【０００２】
多数の機器が接続されたコンピュータネットワークでは、管理サーバによりインベントリが収集される。インベントリとは、ネットワーク上の端末装置などの機器に実装されたソフトウェアなどの資源を一覧にしたものである。端末装置からインベントリを収集する場合、例えば管理サーバから端末装置に、インベントリ収集要求が出される。すると端末装置は、例えば、自装置内にどのようなソフトウェアが導入されているのかを調査し、調査結果を、インベントリ情報として管理サーバに送信する。このように収集したインベントリ情報は、ライセンス管理やセキュリティ維持のための現状把握に利用される。
【０００３】
ネットワークを介した機器の管理技術としては、例えば、コンピュータの障害やセットアップ、アプリケーションのインストールなどの際に適切な処置やサポートを的確且つ迅速に行うユーザサポートサーバが考えられている。このユーザサポートサーバは、ユーザ側のコンピュータごとのソフトウェアなどの構成情報、及びユーザ側からの問合せ情報に基づいて、ユーザ側のコンピュータに関するサポート情報を作成する。
【０００４】
なお管理対象の機器が仮想マシンの場合もある。仮想マシンの管理技術としては、例えば、仮想マシンの動作に使用されている１またはそれ以上のファイルと、１またはそれ以上のテンプレートファイルとを比較し、比較結果に基づいて、仮想マシンの設定状況を示す構成情報を生成する技術がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−００５４１３号公報
【特許文献２】特開２０１２−２０３６４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ソフトウェアの検出は、予め用意されたソフトウェア検出条件を用いて行われる。例えばソフトウェア検出条件を充足するソフトウェアがあれば、そのソフトウェアが導入されていると判定される。ソフトウェア検出条件は、資産管理ベンダまたはユーザシステムの管理者により、例えば手作業で作成される。ソフトウェア検出条件には、特定のファイルの存否や所定の環境設定の値などによる、ソフトウェアの有無の判定基準が示されている。
【０００７】
ソフトウェア検出条件を用いれば、ソフトウェア検出条件が充足するかどうかを判定すればよいため、高速かつ低負荷で、ソフトウェアの導入の有無の判定が可能である。その一方、ソフトウェア検出条件は固定的であるため、ソフトウェアのバージョンアップや、ソフトウェアの動作環境の変化があると、以前と同じソフトウェア検出条件ではソフトウェアを検出することができない場合がある。その結果、ソフトウェアの導入状況を正しく把握するのが困難となっている。
【０００８】
１つの側面では、本件は、ソフトウェアの導入の有無の判定精度を向上させることを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、コンピュータに、以下の処理を実行させるソフトウェア導入判定プログラムが提供される。コンピュータは、ソフトウェア導入判定プログラムに基づいて、ソフトウェアの検出条件の複数の生成規則のいずれかに従って生成された第１の検出条件による過去の判定で、コンピュータに導入されていると判定された特定のソフトウェアについて、コンピュータへの導入の有無を、第１の検出条件によって判定する。そして、コンピュータは、特定のソフトウェアの導入の有無が第１の検出条件で判定できない場合、複数の生成規則それぞれに従って生成できる複数の検出条件のうちの、第１の検出条件とは別の第２の検出条件により、特定のソフトウェアの導入の有無を判定する。
【発明の効果】
【００１０】
１態様によれば、ソフトウェアの導入の有無の判定精度が向上する。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係る情報処理装置の一例を示す図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】端末装置のハードウェアの一構成例を示す図である。
【図４】各装置の機能の一例を示すブロック図である。
【図５】ソフトウェア検出条件生成情報の一例を示す図である。
【図６】条件定義管理テーブルの一例を示す図である。
【図７】設定値候補管理テーブルの一例を示す図である。
【図８】構成管理テーブルの一例を示す図である。
【図９】ソフトウェア辞書の一例を示す図である。
【図１０】検出ソフトウェア管理テーブルの一例を示す図である。
【図１１】検出条件管理テーブルの一例を示す図である。
【図１２】新たに導入されたソフトウェアを検出するソフトウェア検出条件の生成例を示す図である。
【図１３】環境の変化に応じてソフトウェア検出条件を変更する例を示す図である。
【図１４】環境に合わせたソフトウェア検出条件の生成例を示す図である。
【図１５】ソフトウェア検出処理の手順の一例を示す図である。
【図１６】ソフトウェア検出条件生成・適用処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る情報処理装置の一例を示す図である。情報処理装置（コンピュータ）１０は、記憶部１１と演算部１２とを有している。情報処理装置１０にはソフトウェア１３を導入（インストール）することができる。導入されたソフトウェア１３は、例えば実行形式のファイルや、そのファイルに記述されたプログラムの実行に使用するデータを含む。またソフトウェア１３の導入時には、そのソフトウェア１３を実行するための環境設定が、情報処理装置１０で行われる。例えば情報処理装置１０のレジストリ１４に、ソフトウェア１３用の設定値が格納される。レジストリ１４とは、ソフトウェアの設定値の記録に用いられるデータベースである。
【００１３】
情報処理装置１０は、ソフトウェア１３の導入の有無を判定する機能を有する。このような機能を有する情報処理装置１０は、ソフトウェア導入判定装置と呼ぶこともできる。例えば情報処理装置１０は、外部のサーバからインベントリ収集の要求を受信した際に、ソフトウェア１３の導入の有無を判定する。その場合、情報処理装置１０は、ソフトウェア１３の導入の有無の判定結果を、サーバに送信する。
【００１４】
ソフトウェア１３の導入の有無を判定するために、記憶部１１には、ソフトウェアの検出条件についての複数の生成規則１１ａ，１１ｂが格納されている。複数の生成規則１１ａ，１１ｂに従って、複数の検出条件１２ａ，１２ｂが生成できる。ここで、ソフトウェア１３は、生成規則１１ａに従って生成された検出条件１２ａによる過去の判定で、情報処理装置１０に導入されていると判定されているものとする。
【００１５】
そして、ソフトウェアの導入の有無を判定するとき、情報処理装置１０の演算部１２は、ソフトウェア１３について、情報処理装置１０への導入の有無を、以前の判定で用いた検出条件１２ａによって判定する。検出条件１２ａが充足されていれば、ソフトウェア１３が導入されていると判定できる。検出条件１２ａが充足されていない場合、ソフトウェア１３の導入の有無が判定できない。
【００１６】
導入の有無が検出条件１２ａで判定できない場合、演算部１２は、複数の生成規則１１ａ，１１ｂそれぞれに従って生成できる複数の検出条件１２ａ，１２ｂのうちの、検出条件１２ａとは別の検出条件１２ｂにより、ソフトウェア１３の導入の有無を判定する。例えば、生成規則１１ｂに従って生成された検出条件１２ｂにより判定される。また演算部１２は、検出条件１２ａに含まれる値を、検出条件１２ａの生成元の生成規則１１ａにおいて許容される他の値に変更した検出条件により、ソフトウェア１３の導入の有無を判定することもできる。いずれかの検出条件が充足されていれば、ソフトウェア１３が導入されていると判定できる。
【００１７】
演算部１２は、複数の生成規則１１ａ，１１ｂに従って生成できる検出条件のいずれにおいてもソフトウェア１３の導入の有無を判定できない場合、ソフトウェア１３が情報処理装置１０から削除（アンインストール）されたと判定する。
【００１８】
なお、記憶部１１に格納されている複数の生成規則１１ａ，１１ｂそれぞれは、ソフトウェアの動作環境に対応付けられていてもよい。この場合、演算部１２は、ソフトウェア１３の導入の有無が検出条件１２ａで判定できない場合、判定時における動作環境に対応する生成規則に従って生成された検出条件１２ｂにより判定する。図１の例では、生成規則１１ａはバージョン７のＯＳ（Operating System）に適用でき、生成規則１１ｂはバージョン８のＯＳに適用できる。
【００１９】
このような情報処理装置１０において、ＯＳのバージョン７のときにソフトウェア１３が導入されると、レジストリ１４の設定項目「Ｘ」に値「ａ」が設定されるものとする。バージョン７のＯＳに適用できる生成規則１１ａから、レジストリ１４の設定項目「Ｘ」に値「ａ」が設定されていることを、ソフトウェア１３が導入されていると判定する検出条件１２ａを生成することができる。そこで、検出条件１２ａを用いてソフトウェア１３の導入の有無を判定すると、レジストリ１４から条件を満たす値を取得することができ、ソフトウェア１３が導入されていると判定される。
【００２０】
その後、ＯＳがバージョンアップされたものとする。このＯＳのバージョンアップでは、ソフトウェア１３の設定値が、レジストリ１４から削除され、ＡＰＩ（Application Programming Interface）１５の引数として読み出されるように、設定値の取得方法が変更されている。
【００２１】
ＯＳのバージョンアップ後に、ソフトウェア１３の導入の有無の判定を行うとき、最初に、以前と同じ検出条件１２ａが充足されるかどうかが判断される。図１の例では、レジストリ１４内の値が削除されているため、検出条件１２ａは充足されない。そこで、バージョンアップ後のＯＳに適用できる生成規則１１ｂに従って、検出条件１２ｂが生成される。検出条件１２ｂは、ＡＰＩ（ｎ）の復帰値が「ａ」であることを、ソフトウェア１３が導入されていると判定する条件としている。この検出条件１２ｂによりソフトウェア１３の導入の有無を判定すると、ＡＰＩ（ｎ）の復帰値として値「ａ」を取得することができる。その結果、ソフトウェア１３が導入されていることを正しく判定することができる。
【００２２】
このように、第１の実施の形態によれば、ソフトウェア１３を実行する環境が変化しても、ソフトウェア１３の導入の有無を、継続して正しく判定することができる。その結果、ソフトウェア１３の導入有無の判定精度が向上する。
【００２３】
また複数の生成規則１１ａ，１１ｂに従って生成できる検出条件のいずれにおいてもソフトウェア１３の導入の有無を判定できない場合、ソフトウェア１３が削除されたと判定することで、ソフトウェア１３が削除されたことを正しく判断できる。
【００２４】
なお、演算部１２は、例えば情報処理装置１０が有するプロセッサにより実現することができる。また、記憶部１１は、例えば情報処理装置１０が有するメモリにより実現することができる。
【００２５】
〔第２の実施の形態〕
次に、第２の実施の形態について説明する。第２の実施の形態は、管理サーバから複数の端末装置に、ソフトウェア検出条件の複数の生成規則を示すソフトウェア検出条件生成情報を送信し、各端末装置がそのソフトウェア検出条件生成情報を用いて、ソフトウェア検出条件を自動生成するものである。各端末装置で生成したソフトウェア検出条件のうち、ソフトウェアを検出できたものについては、管理サーバに送信され、管理サーバで管理される。
【００２６】
図２は、第２の実施の形態のシステム構成例を示す図である。管理サーバ２００は、ネットワーク２０を介して複数の端末装置１００，１００−１，１００−２，・・・に接続されている。管理サーバ２００は、複数の端末装置１００，１００−１，１００−２，・・・からのインベントリ収集を行い、ソフトウェアの導入状況を管理する。複数の端末装置１００，１００−１，１００−２，・・・は、ソフトウェア検出条件を用いて、自己に導入されているソフトウェアを検出する。また複数の端末装置１００，１００−１，１００−２，・・・は、過去に検出したソフトウェアが現在のソフトウェア検出条件で検出できない場合、ソフトウェア検出条件生成情報を用いて新たなソフトウェア検出条件を生成する。そして複数の端末装置１００，１００−１，１００−２，・・・は、生成したソフトウェア検出条件を用いて、ソフトウェアの検出を試みる。このように、ソフトウェア検出条件を自動生成すれば、ソフトウェアのバージョンアップや、ソフトウェアの実行基盤の変更があっても、ソフトウェアを検出できるようになる。
【００２７】
図３は、端末装置のハードウェアの一構成例を示す図である。端末装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００２８】
メモリ１０２は、端末装置１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００２９】
バス１０９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００３０】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、端末装置１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置（ＳＳＤ：Solid State Drive）を使用することもできる。
【００３１】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３２】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３３】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００３４】
機器接続インタフェース１０７は、端末装置１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００３５】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００３６】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、他の端末装置１００−１，１００−２，・・・や管理サーバ２００も、図３に示した端末装置１００と同様のハードウェアにより実現することができる。さらに、第１の実施の形態に示した情報処理装置１０も、図３に示した端末装置１００と同様のハードウェアにより実現することができる。
【００３７】
端末装置１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。端末装置１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、端末装置１００に実行させるプログラムをＨＤＤ１０３に格納しておくことができる。プロセッサ１０１は、ＨＤＤ１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。また端末装置１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ＨＤＤ１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００３８】
図４は、各装置の機能の一例を示すブロック図である。管理サーバ２００は、ソフトウェア検出情報記憶部２１０、検出用情報管理部２２０、インベントリデータベース２３０、およびインベントリ管理部２４０を有する。
【００３９】
ソフトウェア検出情報記憶部２１０は、ソフトウェアの検出に用いる情報を記憶する。例えばソフトウェア検出情報記憶部２１０には、ソフトウェア検出条件生成情報２１１とソフトウェア辞書２１２とが記憶される。ソフトウェア検出条件生成情報２１１は、ソフトウェア検出条件の生成規則に関する情報である。ソフトウェア辞書２１２は、ソフトウェアの有無の判定に使用するソフトウェア検出条件の集合である。ソフトウェア検出条件は、ソフトウェア検出に使用する情報の組み合わせである。ソフトウェア検出条件によって特定される各情報が、そのソフトウェア検出条件で示される条件を満たしていれば、ソフトウェアを検出したと判断できる。ソフトウェア検出情報記憶部２１０としては、例えば管理サーバ２００内のメモリまたはＨＤＤの記憶領域の一部が使用される。
【００４０】
検出用情報管理部２２０は、ソフトウェア検出条件生成情報２１１とソフトウェア辞書２１２を管理する。例えば検出用情報管理部２２０は、ソフトウェア検出条件生成情報２１１とソフトウェア辞書２１２を端末装置１００へ送信する。また検出用情報管理部２２０は、複数の端末装置１００，１００−１，１００−２，・・・から、更新されたソフトウェア検出条件を取得し、ソフトウェア検出情報記憶部２１０に格納する。
【００４１】
インベントリデータベース２３０は、複数の端末装置１００，１００−１，１００−２，・・・それぞれに導入されたソフトウェア資源に関するインベントリ情報を記憶する。
インベントリ管理部２４０は、複数の端末装置１００，１００−１，１００−２，・・・から、その端末装置に導入されているソフトウェアの情報を取得し、インベントリデータベース２３０に格納する。
【００４２】
端末装置１００は、検出用情報送受信部１１０、ソフトウェア検出情報記憶部１２０、ソフトウェア検出条件生成部１３０、およびソフトウェア検出部１４０を有する。
検出用情報送受信部１１０は、管理サーバ２００から、ソフトウェア検出条件生成情報２１１やソフトウェア辞書２１２を受信し、ソフトウェア検出情報記憶部１２０に格納する。また検出用情報送受信部１１０は、ソフトウェア検出条件生成部１３０によって作成されたソフトウェア検出条件をソフトウェア検出情報記憶部１２０から読み出し、そのソフトウェア検出条件を管理サーバ２００に送信する。
【００４３】
ソフトウェア検出情報記憶部１２０は、ソフトウェア検出条件生成情報１２１とソフトウェア辞書１２２とを記憶する。
ソフトウェア検出条件生成部１３０は、ソフトウェア検出条件生成情報１２１に基づいて、ソフトウェア検出条件を生成する。ソフトウェア検出条件生成部１３０は、生成したソフトウェア検出条件を、ソフトウェア検出情報記憶部１２０に格納する。
【００４４】
ソフトウェア検出部１４０は、ソフトウェア検出情報記憶部１２０に格納されたソフトウェア検出条件を用いて、端末装置１００に導入されているソフトウェアを検出する。ソフトウェア検出部１４０は、ソフトウェアの検出結果を、管理サーバ２００に送信する。
【００４５】
このような構成により、端末装置１００によるソフトウェアの検出と、管理サーバ２００によるインベントリ収集とが行われる。なお、図４には、端末装置１００の機能を示しているが、他の端末装置１００−１，１００−２，・・・も、端末装置１００と同様の機能を有している。また図４に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。さらに、図４に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【００４６】
次に、ソフトウェア検出情報記憶部１２０，２１０に格納されている情報について詳細に説明する。
図５は、ソフトウェア検出条件生成情報の一例を示す図である。ソフトウェア検出条件生成情報１２１には、条件定義管理テーブル１２１ａ、設定値候補管理テーブル１２１ｂ、および構成管理テーブル１２１ｃが含まれる。
【００４７】
条件定義管理テーブル１２１ａは、ソフトウェア検出条件に利用可能な条件を構成する要素と、その要素に設定する値の種別が登録されたデータテーブルである。設定値候補管理テーブル１２１ｂは、条件定義に示されている要素に対する設定値の候補を管理するデータテーブルである。構成管理テーブル１２１ｃは、個々のソフトウェア検出条件を構成する条件定義を管理するデータテーブルである。
【００４８】
図６は、条件定義管理テーブルの一例を示す図である。条件定義管理テーブル１２１ａには、複数の条件定義が設定されている。条件定義管理テーブル１２１ａには、「定義ＩＤ」、「検出の要件」、「環境」、「いつ」、「どこから」、「どのように」、「解析方法」、「利用情報」、および「利用情報の取得方法」の欄が設けられている。これらの欄のうち、「検出の要件」、「環境」、「いつ」、「どこから」、「どのように」、「解析方法」、「利用情報」、および「利用情報の取得方法」の欄の値は可変要素であり、ソフトウェア検出条件を生成する際に値が設定される。また、「いつ」、「どこから」、「どのように」、「解析方法」、「利用情報」、および「利用情報の取得方法」は、検出の要件となる情報の取得に用いる要素（情報取得用要素）である。
【００４９】
「定義ＩＤ」の欄には、条件定義の識別子（定義ＩＤ）が設定される。
「検出の要件」の欄には、ソフトウェアを検出するための要件が設定される。例えば検出の要件が「名称」であれば、情報取得用要素の設定値に基づいて、ソフトウェアの名称が取得できた場合、その条件定義に従って生成した条件が充足することとなる。検出の要件には、検出対象ソフトウェアの名称、検出対象ソフトウェアの表示バージョン、検出対象ソフトウェアの内部バージョン、検出対象ソフトウェアのベンダ名、検出対象ソフトウェアのプロダクトＩＤなどのライセンス識別情報などがある。
【００５０】
「環境」の欄には、どのようなシステム環境下で適用できる条件定義なのかが設定される。適用できる環境としては、例えばＯＳ種別、デバイス構成、インストール先、環境変数、ＣＰＵアーキテクチャなどが示される。
【００５１】
「いつ」の欄には、検出の要件となる情報をいつ（どのようなタイミングで）取得するのかが設定される。例えばインベントリ収集時に検出の要件となる情報を取得することが示される。
【００５２】
「どこから」の欄には、検出の要件となる情報をどこから取得するのかが設定される。検出の要件となる情報の取得元は、ファイル、レジストリ、プロセス、ネットワーク、サービス、イベント、メッセージなどである。例えば「どこから」の欄に「レジストリ」と設定されていれば、該当する条件定義に基づいて生成する条件における情報の取得元は、レジストリ内の位置が指定される。
【００５３】
「どのように」の欄には、検出の要件となる情報を、どのようにして取得するのか（取得手段）が設定される。取得手段は、ファイルアクセス、レジストリアクセス、ＡＰＩ呼び出し、コマンド実行、通信などである。例えば「どのように」の欄に「ＡＰＩ」と設定されていれば、該当する条件定義に基づいて生成する条件では、情報の取得方法として、ＡＰＩを用いた取得方法が指定される。
【００５４】
「解析方法」の欄には、検出の要件として取得した情報のどの部分を、どのように解析するのか（解析方法）が設定される。解析方法は、アクセス位置、復帰値判定・解析などである。例えば「解析方法」の欄に「ＡＰＩ復帰値（文字列）」と記載されていれば、該当する条件定義に基づいて生成する条件では、解析方法として、ＡＰＩ復帰値として得られる文字列についての解析方法が指定される。
【００５５】
「利用情報」の欄には、検出の要件となる情報の取得に利用する情報が設定される。利用情報は、例えばパス、プロセス名、コマンド引数、ユーザＩＤ、パッケージ名などである。
【００５６】
「利用情報の取得方法」の欄には、利用情報の取得方法が設定される。例えばユーザＩＤを使用する場合、そのユーザＩＤを、ログオンユーザ名から取得することが示される。「利用情報の取得方法」についても、取得する環境や、いつ・どこで・どこから・どのように取得するのかが設定できる。
【００５７】
図７は、設定値候補管理テーブルの一例を示す図である。設定値候補管理テーブル１２１ｂには、図６に示した条件定義の、「どこから」、「どのように」、「解析方法」、「利用情報」、および「利用情報の取得方法」の要素に設定可能な値の候補が列挙されている。設定値候補管理テーブル１２１ｂには、「値ＩＤ」、「定義ＩＤ」、「種別」、および「値」の欄が設定されている。
【００５８】
「値ＩＤ」の欄は、値の識別番号（値ＩＤ）が設定される。「定義ＩＤ」の欄には、値を適用する条件定義の定義ＩＤが設定される。「種別」の欄には、値を設定する項目の種別（「どこから」、「どのように」、「解析方法」、「利用情報」、および「利用情報の取得方法」のうちのどれなのか）が設定される。「値」の欄には、種別の欄に示される項目に設定可能な、具体的な値が設定される。
【００５９】
図８は、構成管理テーブルの一例を示す図である。構成管理テーブル１２１ｃには、ソフトウェア検出条件の生成情報を構成する条件定義の組み合わせが示されている。構成管理テーブル１２１ｃには、例えば構成ＩＤと定義ＩＤとの欄が設けられている。構成ＩＤの欄には、条件定義の組からなる生成情報の識別情報（構成ＩＤ）が設定される。定義ＩＤの欄には、生成情報を構成する条件定義の定義ＩＤが設定される。同じ構成ＩＤに対応する定義ＩＤの集合が、ソフトウェア検出条件の生成情報を構成する条件定義の組み合わせを示している。この条件定義の組み合わせが、ソフトウェア検出条件の生成規則である。
【００６０】
図８の例では、構成ＩＤ「C0001」に対応付けて、複数の定義ＩＤが設定されている。この場合、構成ＩＤ「C0001」に対応付けられた定義ＩＤそれぞれに応じた条件定義に応じて生成したすべての検出条件が満たされたときに、該当するソフトウェアを検出したと判断される。なお構成ＩＤ「C0001」に属する定義情報の組は、ＯＳ名が「ＯＳ＿Ａ」のデスクトップアプリケーション検出用のソフトウェア検出条件の生成に使用される。
【００６１】
図５〜図８に、端末装置１００側のソフトウェア検出条件生成情報１２１の例を示したが、管理サーバ２００に格納されたソフトウェア検出条件生成情報２１１の内容も、ソフトウェア検出条件生成情報１２１と同様である。
【００６２】
次に、ソフトウェア辞書１２２について説明する。
図９は、ソフトウェア辞書の一例を示す図である。ソフトウェア辞書１２２には、例えば検出ソフトウェア管理テーブル１２２ａと検出条件管理テーブル１２２ｂとが含まれる。検出ソフトウェア管理テーブル１２２ａには、ソフトウェア検出条件を適用して検出するソフトウェアが登録されている。検出条件管理テーブル１２２ｂには、ソフトウェア検出条件が登録されている。
【００６３】
図１０は、検出ソフトウェア管理テーブルの一例を示す図である。検出ソフトウェア管理テーブル１２２ａには、「条件ＩＤ」、「名称」、および「バージョン」の欄が設けられている。「条件ＩＤ」の欄には、ソフトウェア検出条件の識別子（条件ＩＤ）が設定される。「名称」の欄には、対応する条件ＩＤで示されるソフトウェア検出条件により検出するソフトウェアの名称が設定される。「バージョン」の欄には、検出するソフトウェアの版数が設定される。
【００６４】
図１１は、検出条件管理テーブルの一例を示す図である。検出条件管理テーブル１２２ｂに登録されている各エントリが、ソフトウェア検出条件で使用される情報取得条件である。検出条件管理テーブル１２２ｂには、「条件ＩＤ」、「構成ＩＤ」、「定義ＩＤ」、「どこから」、「どのように」、「解析方法」、「利用情報」、「利用情報の取得方法」の欄が設けられている。
【００６５】
「条件ＩＤ」の欄には、ソフトウェア検出条件の条件ＩＤが設定される。同じ条件ＩＤが設定された情報取得条件の組が、１つのソフトウェア検出条件となる。「構成ＩＤ」の欄には、そのソフトウェア検出条件を構成する条件定義の組み合わせを示す構成ＩＤが設定される。「定義ＩＤ」の欄には、そのソフトウェア検出条件を構成する情報取得条件の生成元となった条件定義の、定義ＩＤが設定される。「どこから」の欄には、検出の要件となる情報をどこから取得するのかを示す具体的な値が設定される。「どのように」の欄には、検出の要件となる情報をどのように取得するのかを示す具体的な値が設定される。「解析方法」の欄には、検出の要件となる情報をどのように解析するのかを示す具体的な値が設定される。「利用情報」の欄には、検出の要件となる情報の取得に利用する情報を示す具体的な値が設定される。「利用情報の取得方法」の欄には、利用情報の取得方法を示す具体的な値が設定される。
【００６６】
図９〜図１１に、端末装置１００側のソフトウェア辞書１２２の例を示したが、管理サーバ２００に格納されたソフトウェア辞書２１２の内容も、ソフトウェア辞書１２２と同様である。
【００６７】
以上のような構成のシステムにおいて、管理サーバ２００は、ソフトウェア検出条件生成情報２１１とソフトウェア辞書２１２とを、端末装置１００に配付する。端末装置１００は、配布されたソフトウェア検出条件生成情報２１１、ソフトウェア辞書２１２それぞれと同じ内容の、ソフトウェア検出条件生成情報１２１とソフトウェア辞書１２２とを記憶する。
【００６８】
端末装置１００のソフトウェア検出条件生成部１３０は、管理サーバ２００から受信したソフトウェア検出条件生成情報１２１からソフトウェア検出条件を生成する。例えば端末装置１００では、ソフトウェア検出条件生成情報１２１の構成管理テーブル１２１ｃに示されている定義ＩＤの組み合わせのうち、端末装置１００の環境に合致する組み合わせを抽出する。次に端末装置１００は、抽出した組み合わせに含まれる各条件定義の情報取得用要素に適合する値の候補を、設定値候補管理テーブル１２１ｂから抽出する。そして端末装置１００は、条件定義の情報取得用要素に、設定値候補管理テーブル１２１ｂから抽出した値を当てはめた組み合わせをソフトウェア検出条件の候補とする。端末装置１００は、これらの各候補について、その端末装置１００上でソフトウェア検出を試行し、ソフトウェアが検出できた候補を、そのソフトウェアを検出するためのソフトウェア検出条件とする。
【００６９】
端末装置１００は、ソフトウェア検出条件生成情報１２１から生成された複数のソフトウェア検出条件を用いて、ソフトウェアの導入有無を判定する。ソフトウェアの導入有無判定とは、端末装置１００上でソフトウェア検出条件が満たされた場合は、当該ソフトウェアが導入されていると判断し、ソフトウェア検出条件がみなされていない場合は当該ソフトウェアが導入されていないと判断する処理である。端末装置１００は、定期的（例えば１日１回）にソフトウェア検出を実施する。
【００７０】
複数の検出条件に含まれる第１の検出条件により、特定のソフトウェアが導入（インストール）されていると判定されていた端末装置１００において、第１の検出条件で特定のソフトウェアの導入有無が判定できない場合がある。この場合、端末装置１００は、複数のソフトウェア検出条件に含まれる他のソフトウェア検出条件を用いて特定のソフトウェアの導入有無判定を行う。
【００７１】
生成したソフトウェア検出条件を用いて前回検出したソフトウェアについて、今回の検出処理において、ソフトウェア検出条件で検出できなかった場合、端末装置１００は、以下の順に処理を行って環境の変化もしくはアンインストールを検出する。なお、環境の変化には、ソフトウェア自身のアップデートによる環境の変化や、ソフトウェアを実行させるための動作基盤（ＯＳなど）のアップデートによる環境の変化がある。
ａ）端末装置１００は、ソフトウェア検出条件で確定した値のうち、対応する条件定義において情報取得用要素となっている値に適用可能な別の値を、設定値候補管理テーブル１２１ｂから抽出し、抽出した値を用いて、ソフトウェアの検出を行う。
ｂ）端末装置１００は、処理ａ）でソフトウェアを検出できなかった場合は、ソフトウェア検出条件生成部１３０により、ソフトウェア検出条件の生成を再度実施し（検出手段の変更）、再生成した検出条件を用いて検出する。
【００７２】
処理ａ）または処理ｂ）のいずれにおいても検出できた場合は、端末装置１００は、環境の変化と判断し、当該ソフトウェアがアンインストールされたと判断する。
他のソフトウェア検出条件で特定のソフトウェアの導入有無が判定された場合、端末装置１００は、他のソフトウェア検出条件を管理対象クライアントで使用する。端末装置１００は、ソフトウェアまたは管理対象クライアントの環境変化などがない場合、生成したソフトウェア検出条件を、次回のソフトウェア検出時に再利用する。これによって、生成にかかるコスト（速度、負荷）が削減され、高い処理性能が維持される。また端末装置１００は、複数のソフトウェア検出条件のいずれを用いても特定のソフトウェアの導入有無が判定できなかった場合に、特定のソフトウェアがアンインストールされたと判定する。
【００７３】
一方、管理サーバ２００は、端末装置１００が動的に生成したソフトウェア検出条件を検出用情報管理部２２０により取得し、管理サーバ２００が保持するソフトウェア辞書２１２に自動的に追加する。なお端末装置１００で生成されたソフトウェア検出条件が、以前から存在するソフトウェア検出条件の情報取得用要素の値を変更したものであれば、管理サーバ２００は、該当するソフトウェア検出条件を更新する。
【００７４】
以上のような構成のシステムにより、例えば、端末装置１００に新たに導入されたソフトウェアを検出するソフトウェア検出条件を生成することができる。また端末装置１００の環境が変化した際には、環境の変化に応じてソフトウェア検出条件を変更することができる。ソフトウェア検出条件の変更では対応できないような環境の変化があった場合、新たな環境に合わせたソフトウェア検出条件を生成することもできる。
【００７５】
図１２は、新たに導入されたソフトウェアを検出するソフトウェア検出条件の生成例を示す図である。管理サーバ２００から端末装置１００へは、ソフトウェア検出条件生成情報２１１とソフトウェア辞書２１２とが配布される。端末装置１００は、配布されたものと同じ内容のソフトウェア検出条件生成情報１２１とソフトウェア辞書１２２とを保持する。そして端末装置１００は、定期的に、ソフトウェア辞書１２２に含まれるソフトウェア検出条件３１，３２を用いて、ソフトウェアを検出する。図１２の例では、「ソフトウェア検出条件３１を用いて名称「ソフトウェアＡ」のソフトウェア４１が検出され、ソフトウェア検出条件３２を用いて名称「ソフトウェアＢ」のソフトウェア４２が検出されている。
【００７６】
その後、端末装置１００に名称「ソフトウェアＣ」のソフトウェア４３が導入されたものとする。この場合、端末装置１００は、既存のソフトウェア検出条件３１，３２を用いてもソフトウェア４３を検出できない。そこで端末装置１００は、ソフトウェア検出条件生成情報１２１に従って、端末装置１００の環境に適用可能なソフトウェア検出条件の候補を作成し、ソフトウェア４３の検出を試みる。図１２の例では、ソフトウェア検出条件３３により、ソフトウェア４３が検出されている。
【００７７】
ソフトウェア４３の検出に使用したソフトウェア検出条件３３は、管理サーバ２００に送信され、管理サーバ２００のソフトウェア辞書２１２に格納される。これにより、端末装置１００におけるソフトウェア検出条件の生成結果が、管理サーバ２００にフィードバックされる。
【００７８】
このように、管理サーバ２００のソフトウェア辞書２１２に、対応するソフトウェア検出条件が含まれていないソフトウェア４３に関し、そのソフトウェア４３を検出可能なソフトウェア検出条件を自動生成できる。そのため、ユーザまたは資産管理ベンダによるソフトウェア検出条件の作成・更新から適用までの時間とコストを削減することができる。
【００７９】
すなわち、従来であれば、管理サーバ２００から提供されたソフトウェア検出条件で検出できないソフトウェアを検出しようとする場合、管理者などが新たなソフトウェア検出条件を手作業で定義することとなり、ソフトウェア数分の作業が発生する。そして、管理者などにより新たに作成されたソフトウェア検出条件が追加されるまで、当該ソフトウェアを検出することができない。それに対し、第２の実施の形態では、既存のソフトウェア検出条件によって検出できないソフトウェアであっても、自動生成したソフトウェア検出条件によって検出できる。ソフトウェア検出条件が自動生成されることから、管理者などの作業負担が軽減される。しかもソフトウェア検出条件の自動生成は、インベントリ収集時に行われるため、新たなソフトウェア４３が追加されると、迅速に対応するソフトウェア検出条件３３が生成される。
【００８０】
図１３は、環境の変化に応じてソフトウェア検出条件を変更する例を示す図である。図１３の例では、ソフトウェア４１のソフトウェア検出条件３１には、レジストリ１５０内の設定値を用いた複数の条件が含まれている。１つ目の条件は、レジストリ１５０内の項目名「Ｘ」の設定値が「ａ」であることである。２つ目の条件は、レジストリ１５０内の項目名「Ｙ」の設定値が「ｂ」であることである。これらの条件が共に満たされた場合、ソフトウェア４１が導入されていると判定される。
【００８１】
ここで、ソフトウェア検出条件３１を用いてソフトウェア４１を検出した後、次回のソフトウェア検出タイミングの前に、ソフトウェア４１がバージョンアップされ、レジストリ１５０内の設定値が変更されたものとする。図１３の例では、項目名「Ｙ」の設定値が「ｂ」から「ｃ」に変更されている。この場合、ソフトウェア検出条件３１によってソフトウェア４１を検出しようとしても、２つ目の条件が満たされず検出できない。
【００８２】
端末装置１００は、過去に検出できていたソフトウェア４１が検出できない場合、検出に用いたソフトウェア検出条件３１内の情報取得用要素の値を変更して、再度、検出を試みる。すると、レジストリ１５０内の項目名「Ｙ」の設定値が「ｃ」であるという条件にしたときに、２つ目の条件が満たされ、ソフトウェア４１が導入されていると正しく判定される。
【００８３】
ソフトウェア４１の検出に使用したソフトウェア検出条件３１ａは、管理サーバ２００に送信され、管理サーバ２００のソフトウェア辞書２１２に格納される。これにより、端末装置１００におけるソフトウェア検出条件の生成結果が、管理サーバ２００にフィードバックされる。
【００８４】
このように、端末装置１００の環境が変化したことにより、ソフトウェア辞書１２２に定義されたソフトウェア検出条件３１の値が異なるためにソフトウェア４１が検出できなくなった場合、情報取得用要素を変更してソフトウェア４１が検出される。その結果、ソフトウェアのバージョンアップなどの環境の変化とアンインストールとを区別し、ソフトウェア４１の有無の判断の正確性を向上させることが可能となる。
【００８５】
図１４は、環境に合わせたソフトウェア検出条件の生成例を示す図である。図１４の例では、プラットフォームの異なる複数の端末装置１００，１００−１が示されている。これらの端末装置１００，１００−１は、ＯＳの種別は同じであるが、バージョンが異なる。端末装置１００に実装されているバージョンのＯＳでは、名称「ソフトウェアＡ」のソフトウェア４１の環境設定における設定値が、レジストリ１５０に保持される。他方、端末装置１００−１に実装されているバージョンのＯＳでは、ソフトウェア４１と同種のソフトウェア４４の環境設定における設定値は、レジストリ１５０−１以外に保持され、ＡＰＩ１６０を用いて読み出すことができる。
【００８６】
このような場合において、管理サーバ２００から各端末装置１００，１００−１にソフトウェア検出条件生成情報２１１が配布される。ソフトウェア検出条件生成情報２１１には、ソフトウェアの検出条件の複数の生成規則が含まれる。例えば構成ＩＤ「C0001」に対応する生成規則５１と、構成ＩＤ「C0002」に対応する生成規則５２とが、ソフトウェア検出条件生成情報２１１に含まれる。構成ＩＤ「C0001」に対応する生成規則５１はＯＳ＿Ａのバージョン７のシステムに適用でき、構成ＩＤ「C0002」に対応する生成規則５２はＯＳ＿Ａのバージョン８のシステムに適用できる（図８参照）。
【００８７】
端末装置１００は、ＯＳ＿Ａのバージョン７のシステムである。そのため保持するソフトウェア検出条件生成情報１２１内の生成規則５１，５２のうち、構成ＩＤ「C0001」に対応する生成規則５１を用いてソフトウェア検出条件３１が生成される。生成されたソフトウェア検出条件３１は、ソフトウェア辞書１２２に含められる。ソフトウェア検出条件３１には、例えばレジストリ１５０内の設定値を検証することが示されている。図１４の例では、レジストリ１５０内に正しい設定値が設定されているため、ソフトウェア４１が導入されていることが正しく判断される。
【００８８】
端末装置１００−１は、ＯＳ＿Ａのバージョン８のシステムである。そのため保持するソフトウェア検出条件生成情報１２１内の生成規則５１，５２のうち、構成ＩＤ「C0002」に対応する生成規則５２を用いてソフトウェア検出条件３４が生成される。生成されたソフトウェア検出条件３４は、ソフトウェア辞書１２２に含められる。ソフトウェア検出条件３４には、ＡＰＩ１６０の復帰値を検証することが示されている。図１４の例では、ＡＰＩ１６０から正しい復帰値が得られるため、ソフトウェア４４が導入されていることが正しく判断される。
【００８９】
このように、新プラットフォームの登場（新たなＯＳ、またはアプリケーションの実行環境の追加）や、ＯＳまたはソフトウェアの仕様変更などによりソフトウェア辞書１２２，１２２−１に新たなソフトウェア検出条件を追加しなければならない場合がある。このような場合、従来であれば、ソフトウェア検出条件と検出処理の双方を変更しなければならないが、第２の実施の形態では、ソフトウェア検出条件生成情報を用いてソフトウェア検出条件を自動生成できる。その結果、ソフトウェアの動作環境が大きく変更されても、正しくソフトウェアを検出することができる。
【００９０】
次に、ソフトウェア検出処理の手順について詳細に説明する。
図１５は、ソフトウェア検出処理の手順の一例を示す図である。
［ステップＳ１０１］検出用情報送受信部１１０は、ソフトウェア辞書とソフトウェア検出条件生成情報とを、管理サーバ２００から取得する。検出用情報送受信部１１０は、取得したソフトウェア辞書とソフトウェア検出条件生成情報とを、ソフトウェア検出情報記憶部１２０に格納する。
【００９１】
［ステップＳ１０２］ソフトウェア検出部１４０は、ソフトウェア辞書１２２内に、過去に生成したソフトウェア検出条件があるか否かを判断する。例えばソフトウェア検出条件生成部１３０は、検出ソフトウェア管理テーブル１２２ａに、条件ＩＤに対応付けられたソフトウェアが少なくとも１つ登録されていれば、過去に生成したソフトウェア検出条件があると判断する。過去に生成したソフトウェア検出条件がある場合、処理がステップＳ１０３に進められる。過去に生成したソフトウェア検出条件がなければ、処理がステップＳ１１３に進められる。
【００９２】
［ステップＳ１０３］ソフトウェア検出部１４０は、検出ソフトウェア管理テーブル１２２ａに登録されている条件ＩＤに対応するソフトウェア検出条件それぞれを処理対象として、ステップＳ１０４〜ステップＳ１１１の処理を行う。
【００９３】
［ステップＳ１０４］ソフトウェア検出部１４０は、処理対象のソフトウェア検出条件が満たされるか否かを判断する。例えばソフトウェア検出部１４０は、処理対象のソフトウェア検出条件の条件ＩＤに対応する情報取得条件を、検出条件管理テーブル１２２ｂから抽出する。そしてソフトウェア検出部１４０は、抽出した情報取得条件それぞれに基づいて、情報の取得を試みる。ソフトウェア検出部１４０は、抽出した情報取得条件すべてについて、該当する情報を取得できた場合、処理対象のソフトウェア検出条件が満たされると判断する。ソフトウェア検出条件が満たされた場合、処理がステップＳ１１０に進められる。ソフトウェア検出条件が満たされない場合、処理がステップＳ１０５に進められる。
【００９４】
［ステップＳ１０５］ソフトウェア検出部１４０は、ステップＳ１０４で情報を取得できなかった情報取得条件の定義ＩＤを特定し、その定義ＩＤに対応する値を、設定値候補管理テーブル１２１ｂから抽出する。
【００９５】
［ステップＳ１０６］ソフトウェア検出部１４０は、抽出した値ごとに、ステップＳ１０７の処理を繰り返し実行する。
［ステップＳ１０７］ソフトウェア検出部１４０は、情報取得条件における、抽出した値の種別に対応する値を、抽出した値に変更して、その情報取得条件に応じた情報の検出処理を行う。
【００９６】
［ステップＳ１０８］ソフトウェア検出部１４０は、抽出したすべての値についてステップＳ１０７の処理が完了すると、処理をステップＳ１０９に進める。
［ステップＳ１０９］ソフトウェア検出部１４０は、処理対象のソフトウェア検出条件によりソフトウェアが検出できたか否かを判断する。ソフトウェアが検出できた場合、処理がステップＳ１１０に進められる。ソフトウェアが検出できなかった場合、処理がステップＳ１１１に進められる。なおソフトウェアの検出に成功した場合、ソフトウェア検出部１４０は、検出条件管理テーブル１２２ｂ内の情報取得条件の値を、ソフトウェア検出成功時の値に更新する。
【００９７】
［ステップＳ１１０］ソフトウェア検出部１４０は、処理対象のソフトウェア検出条件によって検出したソフトウェアを、検出済みソフトウェアとして検出結果に追加する。例えばソフトウェア検出部１４０は、処理対象のソフトウェア検出条件の条件ＩＤに対応付けて検出ソフトウェア管理テーブル１２２ａに登録されている、ソフトウェアの名称とバージョンとに検出済みのフラグを付けて、検出結果に記録する。その後、処理がステップＳ１１２に進められる。
【００９８】
［ステップＳ１１１］ソフトウェア検出部１４０は、処理対象のソフトウェア検出条件で以前検出できていたソフトウェアを、未検出のソフトウェアとして検出結果に追加する。例えばソフトウェア検出部１４０は、処理対象のソフトウェア検出条件の条件ＩＤに対応付けて検出ソフトウェア管理テーブル１２２ａに登録されている、ソフトウェアの名称とバージョンとに未検出のフラグを付けて、検出結果に記録する。
【００９９】
［ステップＳ１１２］ソフトウェア検出部１４０は、ソフトウェア検出条件それぞれについての処理が終了すると、処理をステップＳ１１３に進める。
［ステップＳ１１３］ソフトウェア検出条件生成部１３０は、ソフトウェア検出条件の生成・適用処理を行う。この処理の詳細は後述する（図１６参照）。
【０１００】
［ステップＳ１１４］検出用情報送受信部１１０は、生成した検出条件を管理サーバ２００に通知する。例えば検出用情報送受信部１１０は、ソフトウェア検出条件生成部１３０により生成されたソフトウェア検出条件をソフトウェア辞書１２２から抽出し、管理サーバ２００に送信する。また検出用情報送受信部１１０は、ステップＳ１０９において、情報取得条件の値を変更したソフトウェア検出条件がある場合、そのソフトウェア検出条件を、管理サーバ２００に送信する。管理サーバ２００では検出用情報管理部２２０がソフトウェア検出条件を受信し、ソフトウェア辞書２１２に格納する。
【０１０１】
［ステップＳ１１５］ソフトウェア検出部１４０は、検出結果を、管理サーバ２００に通知する。例えばソフトウェア検出部１４０は、検出ソフトウェアのリストと、未検出ソフトウェアのリストとを、管理サーバ２００に送信する。
【０１０２】
次に、ソフトウェア検出条件生成・適用処理について詳細に説明する。
図１６は、ソフトウェア検出条件生成・適用処理の手順を示すフローチャートである。
［ステップＳ２０１］ソフトウェア検出条件生成部１３０は、ソフトウェア検出条件生成情報１２１から、端末装置１００の環境に適合する条件定義の組み合わせ（生成規則）を抽出する。例えばソフトウェア検出条件生成部１３０は、構成管理テーブル１２１ｃから、端末装置１００の環境に合致する構成ＩＤに対応する定義ＩＤを特定する。そしてソフトウェア検出条件生成部１３０は、条件定義管理テーブル１２１ａから、特定した定義ＩＤに対応する条件定義を抽出する。
【０１０３】
［ステップＳ２０２］ソフトウェア検出条件生成部１３０は、ステップＳ２０１で抽出した組み合わせごとに、ステップＳ２０３からステップＳ２０５の処理を繰り返す。このように、環境に適合する条件定義の組み合わせに対してのみ処理を行うことで、端末装置１００に適用できないソフトウェア検出条件の生成せずに済み、処理が効率化される。
【０１０４】
［ステップＳ２０３］ソフトウェア検出条件生成部１３０は、組み合わせに含まれる条件定義それぞれについて、情報取得用要素に設定値の候補を設定し、情報の取得を試みる。設定値の候補は、設定値候補管理テーブル１２１ｂから取得できる。ソフトウェア検出条件生成部１３０は、１つの情報取得用要素について設定値の候補が複数ある場合、それぞれの候補を用いて、情報の取得を試みる。そしてソフトウェア検出条件生成部１３０は、各条件定義に関して、条件を充足する値を特定する。抽出した組み合わせのすべての条件定義に関し、条件を充足する値を特定できた場合、ソフトウェアが検出できたこととなる。
【０１０５】
［ステップＳ２０４］ソフトウェア検出条件生成部１３０は、ソフトウェアが検出できたか否かを判断する。ソフトウェアが検出できた場合、処理がステップＳ２０５に進められる。ソフトウェアが検出できなければ、処理がステップＳ２０７に進められる。
【０１０６】
［ステップＳ２０５］ソフトウェア検出条件生成部１３０は、ソフトウェアを検出したときの条件定義の設定値に基づくソフトウェア検出条件を、ソフトウェア辞書１２２に登録する。例えばソフトウェア検出条件生成部１３０は、新たな条件ＩＤを生成し、検出ソフトウェア管理テーブル１２２ａに登録する。そしてソフトウェア検出条件生成部１３０は、登録した条件ＩＤに対応付けて、ステップＳ２０３の処理で取得したソフトウェアの名称とバージョンとを、検出ソフトウェア管理テーブル１２２ａに登録する。さらにソフトウェア検出条件生成部１３０は、生成した条件ＩＤに対応付けて、ソフトウェアを検出したときの条件定義の組み合わせの構成ＩＤと、条件定義それぞれの定義ＩＤとを、検出条件管理テーブル１２２ｂに設定する。そしてソフトウェア検出条件生成部１３０は、設定した定義ＩＤに対応付けて、ソフトウェアの検出時に、その定義ＩＤに対応する条件定義に設定した情報取得用要素の設定値を、検出条件管理テーブル１２２ｂに設定する。
【０１０７】
［ステップＳ２０６］ソフトウェア検出部１４０は、ソフトウェア検出条件生成部１３０から、新たなソフトウェア検出条件によりソフトウェアが検出されたことの通知を受け、そのソフトウェアを検出済みソフトウェアとして、検出結果に追加する。なお検出されたソフトウェアが未検出ソフトウェアのリストに含まれていた場合、ソフトウェア検出部１４０は、該当リストから検出されたソフトウェアを削除する。
【０１０８】
［ステップＳ２０７］ソフトウェア検出条件生成部１３０は、ステップＳ２０１で抽出した組み合わせすべてについて処理が完了すると、ソフトウェア検出条件生成・適用処理を終了する。
【０１０９】
以上のようにして、環境の変化により、以前と同じソフトウェア検出条件では検出できなくなったソフトウェアであっても、別のソフトウェア検出条件を用いて検出することができる。その結果、ソフトウェアの検出精度が向上し、正しい検出結果を管理サーバ２００に送信することができる。
【０１１０】
また資産管理製品ベンダやユーザシステムの管理者が、個々のソフトウェアに対してソフトウェア検出条件を作成することなく、ソフトウェアを検出することが可能となる。これにより、管理者の作業負担が軽減される。
【０１１１】
さらに管理サーバ２００におけるソフトウェア辞書２１２を自動的に最新化することができる。その結果、管理サーバ２００から、各端末装置１００，１００−１，１００−２，・・・へ、最新のソフトウェア辞書を配信し、ソフトウェアの検出精度を高めることができる。
【０１１２】
なお、端末装置１００，１００−１，１００−２，・・・で生成したソフトウェア検出条件は、端末装置１００，１００−１，１００−２，・・・内に保持され、繰り返し利用される。これにより、初回および環境変化があった場合を除き、端末装置１００，１００−１，１００−２，・・・の性能を劣化させることなく、ソフトウェアを検出することが可能となる。
【０１１３】
なお第２の実施の形態では、インベントリの収集対象を端末装置１００，１００−１，１００−２，・・・としているが、サーバなどの他のコンピュータをインベントリの収集対象とすることもできる。その場合、インベントリの収集対象となるコンピュータに、図４に示した端末装置１００と同様の機能が設けられる。また端末装置１００，１００−１，１００−２，・・・には、携帯情報端末やタブレット端末も含まれる。さらに端末装置１００，１００−１，１００−２，・・・は、仮想マシンであってもよい。
【０１１４】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１１５】
１０  情報処理装置
１１  記憶部
１１ａ，１１ｂ  生成規則
１２  演算部
１２ａ，１２ｂ  検出条件
１３  ソフトウェア
１４  レジストリ
１５  ＡＰＩ
【図１】
0006369333.tif 000002
【図２】
0006369333.tif 000003
【図３】
0006369333.tif 000004
【図４】
0006369333.tif 000005
【図５】
0006369333.tif 000006
【図６】
0006369333.tif 000007
【図７】
0006369333.tif 000008
【図８】
0006369333.tif 000009
【図９】
0006369333.tif 000010
【図１０】
0006369333.tif 000011
【図１１】
0006369333.tif 000012
【図１２】
0006369333.tif 000013
【図１３】
0006369333.tif 000014
【図１４】
0006369333.tif 000015
【図１５】
0006369333.tif 000016
【図１６】
0006369333.tif 000017