(57)【要約】      （修正有）【課題】認証処理の負荷を軽減する。【解決手段】認証装置は、ライセンス認証の対象ソフトウェアの指定受け付け部と、ソフトウェアに対応付けられた監視対象プロセスの識別情報と起動中のプロセスの識別情報とを記憶する記憶部を参照して、監視対象プロセスが起動中であるか否かを判定する第１判定部と、起動中である場合、対応する表示領域の選択状態を該プロセスの識別情報に対応付けて記憶する記憶部を参照して、監視対象プロセスに対応する表示領域が選択中であるか否かを判定する第２判定部と、表示領域が選択中である場合、入力情報を取得する第１取得部と、ソフトウェアのライセンス情報を該ソフトウェアに対応付けて記憶する記憶部を参照して、ソフトウェアに対応付けられたライセンス情報を取得する第２取得部と、取得された入力情報と取得されたライセンス情報との照合を行う照合部と、照合結果に応じた制御を行う認証制御部と、を含む。【選択図】図２
2017194835.tif 000002
【特許請求の範囲】
【請求項１】
ライセンス認証の対象のソフトウェアの指定を受け付け、
ソフトウェアに対応付けられた監視対象プロセスの識別情報と起動中のプロセスの識別情報とを記憶する記憶部を参照して、前記指定を受け付けたソフトウェアに対応付けられた監視対象プロセスが起動中であるか否かを判定し、
前記監視対象プロセスが起動中であると判定された場合、起動中のプロセスに対応する表示領域の選択状態を該起動中のプロセスの識別情報に対応付けて記憶する前記記憶部を参照して、前記指定を受け付けたソフトウェアに対応付けられた前記監視対象プロセスに対応する表示領域が選択中であるか否かを判定し、
前記表示領域が選択中であると判定された場合、入力装置により入力された入力情報を取得し、
ソフトウェアのライセンス情報を該ソフトウェアに対応付けて記憶する前記記憶部を参照して、前記指定を受け付けたソフトウェアに対応付けられたライセンス情報を取得し、
取得された前記入力情報と取得された前記ライセンス情報との照合を行い、
照合結果に応じた制御を行う、
処理をコンピュータに実行させることを特徴とする認証プログラム。
【請求項２】
前記表示領域の選択が開始された後、該選択が解除されるまでの間に、前記入力装置により入力された入力情報を取得する、
処理を前記コンピュータに実行させることを特徴とする請求項１記載の認証プログラム。
【請求項３】
前記入力装置により入力された入力情報が一時的に所定の記憶領域に記憶され、前記表示領域が選択中であると判定された場合、前記記憶領域に記憶された入力情報を取得する、
処理を前記コンピュータに実行させることを特徴とする請求項１記載の認証プログラム。
【請求項４】
前記ソフトウェアに対応付けられた前記監視対象プロセスの他の識別情報を記憶する前記記憶部を参照して、前記監視対象プロセスの識別情報と前記他の識別情報とに基づいて、前記指定を受け付けたソフトウェアに対応付けられた監視対象プロセスが起動中であるか否かを判定する、
処理を前記コンピュータに実行させることを特徴とする請求項１乃至３のうち何れか１項に記載の認証プログラム。
【請求項５】
前記コンピュータの再起動が行われた際、前記ライセンス情報の照合が行われていないソフトウェアに対応付けられた監視対象プロセスの識別情報が前記記憶部に記憶されている場合、該記憶部に記憶されている前記監視対象プロセスの識別情報に対応するソフトウェアのライセンス情報の照合を行う、
処理をさらに前記コンピュータに実行させることを特徴とする請求項１乃至４のうち何れか１項に記載の認証プログラム。
【請求項６】
前記ソフトウェアのライセンス情報と該ライセンス情報のパターンとを対応付けて記憶する前記記憶部を参照して、前記指定を受け付けたソフトウェアに対応付けられたライセンス情報と該ラインセンス情報のパターンとを取得し、
取得された前記入力情報が、取得された前記パターンを含まない場合、前記認証結果を失敗とする制御を行う、
処理をさらに前記コンピュータに実行させることを特徴とする請求項１乃至５のうち何れか１項に記載の認証プログラム。
【請求項７】
取得された前記入力情報が、取得された前記パターンを含み、且つ前記入力情報の文字列が前記ライセンス情報の文字列に含まれる場合、前記認証結果を成功とする制御を行う、
処理をさらに前記コンピュータに実行させることを特徴とする請求項６記載の認証プログラム。
【請求項８】
取得された前記入力情報が、取得された前記パターンを含み、且つ前記入力情報の文字列から該文字列の並び順に応じて抜き出された複数の文字を順番に配置した文字列が前記ライセンス情報の文字列と一致する場合、前記認証結果を成功とする制御を行う、
処理をさらに前記コンピュータに実行させることを特徴とする請求項６または７記載の認証プログラム。
【請求項９】
ライセンス認証の対象のソフトウェアの指定を受け付け、
ソフトウェアに対応付けられた監視対象プロセスの識別情報と起動中のプロセスの識別情報とを記憶する記憶部を参照して、前記指定を受け付けたソフトウェアに対応付けられた監視対象プロセスが起動中であるか否かを判定し、
前記監視対象プロセスが起動中であると判定された場合、起動中のプロセスに対応する表示領域の選択状態を該起動中のプロセスの識別情報に対応付けて記憶する前記記憶部を参照して、前記指定を受け付けたソフトウェアに対応付けられた前記監視対象プロセスに対応する表示領域が選択中であるか否かを判定し、
前記表示領域が選択中であると判定された場合、入力装置により入力された入力情報を取得し、
ソフトウェアのライセンス情報を該ソフトウェアに対応付けて記憶する前記記憶部を参照して、前記指定を受け付けたソフトウェアに対応付けられたライセンス情報を取得し、
取得された前記入力情報と取得された前記ライセンス情報との照合を行い、
照合結果に応じた制御を行う、
処理をコンピュータが実行することを特徴とする認証方法。
【請求項１０】
ライセンス認証の対象のソフトウェアの指定を受け付ける受け付け部と、
ソフトウェアに対応付けられた監視対象プロセスの識別情報と起動中のプロセスの識別情報とを記憶する記憶部を参照して、前記指定を受け付けたソフトウェアに対応付けられた監視対象プロセスが起動中であるか否かを判定する第１判定部と、
前記監視対象プロセスが起動中であると判定された場合、起動中のプロセスに対応する表示領域の選択状態を該起動中のプロセスの識別情報に対応付けて記憶する前記記憶部を参照して、前記指定を受け付けたソフトウェアに対応付けられた前記監視対象プロセスに対応する表示領域が選択中であるか否かを判定する第２判定部と、
前記表示領域が選択中であると判定された場合、入力装置により入力された入力情報を取得する第１取得部と、
ソフトウェアのライセンス情報を該ソフトウェアに対応付けて記憶する前記記憶部を参照して、前記指定を受け付けたソフトウェアに対応付けられたライセンス情報を取得する第２取得部と、
取得された前記入力情報と取得された前記ライセンス情報との照合を行う照合部と、
照合結果に応じた制御を行う認証制御部と、
を備えることを特徴とする認証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認証プログラム、認証方法および認証装置に関する。
【背景技術】
【０００２】
ソフトウェアをコンピュータにインストールする際、該ソフトウェアを使用するユーザに正当な権限があるかを確認するライセンス認証が行われる。例えば、ソフトウェアに付随するライセンス情報（文字列等）によりライセンス認証が行われる場合、該ライセンス認証は、入力されたライセンス情報に基づいて行われる。
【０００３】
関連する技術として、インストールしているが利用されていないソフトウェアを検出し、利用していないソフトウェアの排除を実施し、ソフトウェアの購入ライセンス数を適正化する技術が提案されている（例えば、特許文献１を参照）。
【０００４】
また、コンピュータ端末におけるソフトウェアのライセンス違反状態を解消する技術が提案されている（例えば、特許文献２を参照）。また、組織のユーザの端末のソフトウェアを含む環境のキッティングの管理に関して、作業の手間等を削減する技術が提案されている（例えば、特許文献３を参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−３０１４６５号公報
【特許文献２】特開２０１１−２４３１２１号公報
【特許文献３】国際公開第２０１５／１３６６４３号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
入力されたライセンス情報に基づいてライセンス認証が行われる場合、コンピュータは、ライセンス認証のために入力されたライセンス情報を特定し、特定されたライセンス情報に基づいて、ライセンス認証を行う。
【０００７】
ライセンス認証が行われる際、コンピュータに対して、ライセンス情報以外の各種の入力がされている場合がある。この場合、コンピュータに対する各種の入力の中から、ライセンス認証のために入力されたライセンス情報を特定することは難しい。
【０００８】
コンピュータに対する全ての入力を解析して、その中から入力されたライセンス情報を特定し、該ライセンス情報に基づく認証が行われる場合、ライセンス情報を特定するための処理量が多くなり、認証処理の負荷が高くなる。
【０００９】
１つの側面として、本発明は、認証処理の負荷を軽減することを目的とする。
【課題を解決するための手段】
【００１０】
１つの態様では、認証装置は、ライセンス認証の対象のソフトウェアの指定を受け付ける受け付け部と、ソフトウェアに対応付けられた監視対象プロセスの識別情報と起動中のプロセスの識別情報とを記憶する記憶部を参照して、前記指定を受け付けたソフトウェアに対応付けられた監視対象プロセスが起動中であるか否かを判定する第１判定部と、前記監視対象プロセスが起動中であると判定された場合、起動中のプロセスに対応する表示領域の選択状態を該起動中のプロセスの識別情報に対応付けて記憶する前記記憶部を参照して、前記指定を受け付けたソフトウェアに対応付けられた前記監視対象プロセスに対応する表示領域が選択中であるか否かを判定する第２判定部と、前記表示領域が選択中であると判定された場合、入力装置により入力された入力情報を取得する第１取得部と、ソフトウェアのライセンス情報を該ソフトウェアに対応付けて記憶する前記記憶部を参照して、前記指定を受け付けたソフトウェアに対応付けられたライセンス情報を取得する第２取得部と、取得された前記入力情報と取得された前記ライセンス情報との照合を行う照合部と、照合結果に応じた制御を行う認証制御部と、を含む。
【発明の効果】
【００１１】
１つの側面によれば、認証処理の負荷を軽減することができる。
【図面の簡単な説明】
【００１２】
【図１】実施形態のシステムの全体構成の一例を示す図である。
【図２】クライアント端末の一例を示す機能ブロック図である。
【図３】管理サーバの一例を示す機能ブロック図である。
【図４】ディスプレイに表示される画面例を示す図である。
【図５】ディスプレイに表示される他の画面例を示す図である。
【図６】管理サーバに記憶される各種情報の一例を示す図である。
【図７】クライアント端末に記憶される各種情報の一例を示す図である。
【図８】プロセス管理テーブルの一例を示す図である。
【図９】管理サーバの処理の一例を示すフローチャート（その１）である。
【図１０】管理サーバの処理の一例を示すフローチャート（その２）である。
【図１１】管理エージェントの処理の一例を示すフローチャート（その１）である。
【図１２】管理エージェントの処理の一例を示すフローチャート（その２）である。
【図１３】管理エージェントの処理の一例を示すフローチャート（その３）である。
【図１４】照合部による照合の例を示す図（その１）である。
【図１５】照合部による照合の例を示す図（その２）である。
【図１６】照合部による照合の例を示す図（その３）である。
【図１７】管理エージェントの処理の一例を示すフローチャート（その４）である。
【図１８】照合部による照合の例を示す図（その４）である。
【図１９】照合部による照合の例を示す図（その５）である。
【図２０】変形例における管理エージェントの処理の一例を示すフローチャート（その１）である。
【図２１】変形例における管理エージェントの処理の一例を示すフローチャート（その２）である。
【図２２】クライアント端末のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１３】
＜実施形態のシステムの全体構成の一例＞
以下、図面を参照して、実施形態について説明する。図１は、実施形態のシステム１の全体構成の一例を示す。システム１において、管理サーバ２は、複数のクライアント端末３Ａ、３Ｂ、３Ｃ、・・・（以下、クライアント端末３と総称することがある）とネットワーク４を介して接続される。
【００１４】
管理サーバ２は、各クライアント端末３にソフトウェアを配布し、各クライアント端末３にインストールされるソフトウェアの管理を行うサーバである。例えば、管理サーバ２には、各クライアント端末３にインストールされるソフトウェア（資産と称することもある）を管理するプログラムがインストールされる。
【００１５】
以下、管理サーバ２にインストールされるプログラムを、資産管理ミドルウェアと称することがある。該プログラムは、ミドルウェアには限定されない。例えば、該プログラムは、アプリケーションプログラムであってもよい。
【００１６】
クライアント端末３は、コンピュータの一例である。クライアント端末３には、管理サーバ２の資産管理ミドルウェアにより管理されるソフトウェアがインストールされる。クライアント端末３では、資産管理ミドルウェアと連携する認証プログラムが動作する。該認証プログラムにより、ソフトウェアインストール時のライセンス認証が行われる。
【００１７】
ネットワーク４は、管理サーバ２と各クライアント端末３とを接続するネットワークである。ネットワーク４は、例えば、社内ネットワークである。ただし、ネットワーク４は、社内ネットワークには限定されない。
【００１８】
各クライアント３上で動作する認証プログラム（以下、資産管理エージェントまたは管理エージェントと称することもある）は、管理サーバ２で動作する資産管理ミドルウェアにより制御される。各クライアント３には、資産管理ミドルウェアが許容するソフトウェアのみのインストールが許容される。
【００１９】
＜クライアント端末の一例＞
次に、クライアント端末３の一例について説明する。図２は、クライアント端末３の一例を示す。クライアント端末３は、管理エージェント１０と第１通信部２１と表示制御部２２と端末記憶部２３とを含む。
【００２０】
クライアント端末３には、入力装置２４とディスプレイ２５とが接続される。クライアント端末３は、入力装置２４およびディスプレイ２５の機能を含んでもよい。また、入力装置２４およびディスプレイ２５の機能は、タッチパネルディスプレイにより実現されてもよい。
【００２１】
管理エージェント１０は、上述した資産管理エージェントである。第１通信部２１は、ネットワーク４を介して、管理サーバ２と通信を行う。表示制御部２２は、ディスプレイ２５の表示制御を行う。端末記憶部２３は、種々の情報を記憶する。端末記憶部２３は、記憶部の一例である。
【００２２】
管理エージェント１０は、端末制御部１１と受け付け部１２と起動状態判定部１３と選択状態判定部１４とキーロガー１５とライセンス情報取得部１６と照合部１７と認証制御部１８とを含む。
【００２３】
端末制御部１１は、管理エージェント１０における種々の制御を行う。受け付け部１２は、入力装置２４からの入力を受け付ける。
【００２４】
起動状態判定部１３は、監視対象プロセスが起動中であるか否かを判定する。起動状態判定部１３は、第１判定部の一例である。クライアント端末３のOperating System(OS)では、複数のプロセスが起動しているものとする。
【００２５】
監視対象プロセスは、ライセンス認証の対象として指定を受け付けたソフトウェアのインストールを実行するプロセスの一例である。起動状態判定部１３は、ＯＳ上で動作している複数のプロセスのうち、監視対象プロセスが起動中であるか否かを判定する。
【００２６】
選択状態判定部１４は、監視対象プロセスが起動中であると判定された場合、該監視対象プロセスに対応するウィンドウが選択中であるか否かを判定する。ディスプレイ２５に表示されるウィンドウ（該ウィンドウは、画面と称されることもある）は、表示領域の一例である。選択状態判定部１４は、第２判定部の一例である。
【００２７】
例えば、ディスプレイ２５に複数のウィンドウが表示されている場合、何れか１つのウィンドウが選択されると、該ウィンドウは、アクティブになる。選択されていない１以上の他のウィンドウは、非アクティブになる。
【００２８】
キーロガー１５は、入力装置２４から入力された入力情報を取得する。キーロガー１５は、第１取得部の一例である。入力装置２４は、キーボードやマウス等であってもよい。実施形態のキーロガー１５は、監視対象プロセスに対応するウィンドウがアクティブの場合、該ウィンドウに対して入力装置２４から入力された入力情報を取得する。
【００２９】
例えば、入力装置２４がキーボードである場合、キーロガー１５は、監視対象プロセスに対応するアクティブなウィンドウに対して、キーボードから１文字ずつ入力された複数の文字（例えば、キーボードの１つのキーに対応する文字）を文字情報として取得する。
【００３０】
また、入力装置２４により、クリップボードに記憶された文字情報を貼り付ける操作が行われた場合、受け付け部１２は該操作を受け付け、キーロガー１５は、貼り付けられた文字情報を取得する。
【００３１】
クリップボードは、所定の記憶領域の一例である。例えば、クリップボードは、Random Access Memory(RAM)のうち一部の領域であってもよい。上記の場合、クリップボードに、複数の文字を含む文字情報が記憶される。
【００３２】
ライセンス情報取得部１６は、監視対象プロセスが起動中であると判定された場合、ライセンス認証の対象として指定を受け付けたソフトウェアに対応付けられたライセンス情報を端末記憶部２３から取得する。ライセンス情報取得部１６は、第２取得部の一例である。
【００３３】
照合部１７は、キーロガー１５が取得した入力情報とライセンス情報取得部１６が取得したライセンス情報との照合を行う。認証制御部１８は、照合部１７の照合結果に基づいた制御を行う。
【００３４】
例えば、照合部１７が入力情報とライセンス情報との照合を行った結果、両者が一致する場合に、認証制御部１８は、ソフトウェアのライセンス認証が成功したとして、該認証の成功に応じた制御を行う。
【００３５】
実施形態では、入力情報とライセンス情報とが全て一致しない場合でも、認証制御部１８は、ソフトウェアのライセンス認証が成功したとして、該認証の成功に応じた制御を行う場合がある。
【００３６】
＜管理サーバの一例＞
次に、管理サーバ２の一例について説明する。図３は、管理サーバ２の一例を示す。管理サーバ２は、サーバ制御部３１と第２通信部３２とサーバ記憶部３３とを含む。サーバ制御部３１は、管理サーバ２における種々の制御を行う。
【００３７】
例えば、サーバ制御部３１は、所定のクライアント端末３にソフトウェアの配布制御を行う。第２通信部３２は、各クライアント端末３と通信を行う。例えば、第２通信部３２は、ネットワーク４を介して、所定のクライアント端末３にソフトウェア（例えば、バイナリデータ）を送信する。これにより、ソフトウェアの配布が行われる。端末記憶部２３は、種々の情報を記憶する。
【００３８】
＜ディスプレイに表示される画面例＞
次に、ディスプレイ２５に表示される画面例について説明する。図４は、ディスプレイ２５に表示される画面例を示す。
【００３９】
図４の例において、ディスプレイ２５には、３つのウィンドウＷ１、Ｗ２およびＷ３（以下、ウィンドウＷと総称する場合がある）が表示されている。ディスプレイ２５に表示されるウィンドウＷの数は３つには限定されない。
【００４０】
１つのウィンドウＷには１つのプロセスが対応する。図４の例のうち、ウィンドウＷ１は、ライセンス認証の対象であるソフトウェア（SOFT001）のライセンス情報を入力するウィンドウである。
【００４１】
例えば、クライアント端末３を操作する操作者（以下、ユーザとする）が入力装置２４を操作して、ソフトウェア（SOFT001）のインストール操作を行うと、該インストール操作を受け付け部１２が受け付ける。これにより、受け付け部１２は、ライセンス認証の対象のソフトウェア（SOFT001）の指定を受け付ける。
【００４２】
受け付け部１２が、該指定を受け付けると、表示制御部２２は、ソフトウェア（SOFT001）のライセンス情報の入力を要求するウィンドウＷ１をディスプレイ２５に表示する制御を行う。これにより、ディスプレイ２５には、上記のウィンドウＷ１が表示される。
【００４３】
ウィンドウＷ２は、電子メールの送受信を行うメーラのウィンドウである。ウィンドウＷ３は、ライセンス認証の対象であるソフトウェア（SOFT001）のライセンス情報を表示するウィンドウである。
【００４４】
各ウィンドウＷは、バーＢ（Ｂ１、Ｂ２およびＢ３）を含む。クライアント端末３を操作するユーザが、入力装置２４としてのマウスの操作を行うと、受け付け部１２は、該操作を受け付ける。
【００４５】
これにより、ディスプレイ２５に表示されるマウスポインタＰの位置が移動する。マウスポインタＰが何れかのウィンドウＷのバーＢに位置している状態で、マウスのクリック操作が行われた場合、受け付け部１２は、該操作を受け付ける。
【００４６】
これにより、ウィンドウＷが選択される。ウィンドウＷが選択されると、該ウィンドウＷの選択状態はアクティブになる。一方、選択されていない他のウィンドウＷは、非アクティブになる。
【００４７】
図４の例では、メーラのウィンドウＷ２の選択状態はアクティブになっており、ウィンドウＷ１およびＷ３の選択状態は非アクティブになっている。図４の例において、アクティブになっているウィンドウＷ２のバーＢ２にはハッチングが施されている。
【００４８】
図５は、ライセンス認証の対象であるソフトウェアのライセンス情報を入力するウィンドウが選択された場合の一例を示す。この場合、ウィンドウＷ１の選択状態はアクティブになる。
【００４９】
図５の例において、ウィンドウＷ１の「ライセンス情報を入力して下さい」という表示に対応する項目は、ライセンス情報を入力するための項目である。ウィンドウＷ１の選択状態がアクティブになっているため、ウィンドウＷ１の上記の項目に対する情報の入力が有効になる。
【００５０】
ディスプレイ２５には、ライセンス認証の対象であるソフトウェア（SOFT001）のライセンス情報を示すウィンドウＷ３が表示されている。クライアント端末３を操作するユーザは、ウィンドウＷ３の表示に基づいて、ソフトウェア「SOFT001」のライセンス情報を入力する。
【００５１】
受け付け部１２は、該ライセンス情報の入力を受け付ける。図５の例は、ライセンス情報のうち、「1234578-A」まで入力された状態を示す。図５の例において、ウィンドウＷ１の選択状態がアクティブになっていることを示すため、ウィンドウＷ１のバーＢ１にハッチングが施されている。
【００５２】
＜管理サーバが記憶する各種情報の一例＞
図６は、管理サーバ２のサーバ記憶部３３に記憶される各種情報の一例を示す。サーバ記憶部３３には、監視情報とライセンス割り当て情報と配布ソフトウェア情報とが記憶される。
【００５３】
監視情報は、ソフトウェア識別Identification(ID)とライセンス情報パターンと対象プロセス名とPortable Executable(PE)ヘッダとの項目を含むテーブルである。ソフトウェア識別ＩＤは、ソフトウェアを一意に識別するＩＤである。
【００５４】
ライセンス情報パターンは、ソフトウェアごとのライセンス情報のパターンを示す。例えば、図６の例において、「[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}」は、「0-9」、「A-F」または「a-f」を用いた８文字の文字列と、「-」と、「0-9」、「A-F」または「a-f」を用いた４文字の文字列とを並べたパターンであることを示す。
【００５５】
対象プロセス名は、監視対象プロセスの名称を示す。ＰＥヘッダは、監視対象プロセスの実行可能ファイル（EXE File）のヘッダ情報を示す。例えば、図６の例において、ソフトウェア識別ＩＤ「SOFT001」と「SOFT003」とは異なるソフトウェアを示すが、両者の対象プロセス名は同一である。
【００５６】
一方、ソフトウェア識別ＩＤ「SOFT001」と「SOFT003」との両者のＰＥヘッダの値は異なる。対象プロセス名とＰＥヘッダとを組み合わせることで、１つのソフトウェア識別ＩＤが特定される。
【００５７】
対象プロセス名は、監視対象プロセスの識別情報の一例である。また、ＰＥヘッダは、監視対象の他の識別情報の一例である。
【００５８】
監視情報は、例えば、上述した資産管理ミドルウェアに予め組み込まれていてもよい。この場合、管理サーバ２に資産管理ミドルウェアがインストールされることにより、サーバ記憶部３３に監視情報が記憶されてもよい。
【００５９】
ライセンス割り当て情報は、ソフトウェア識別ＩＤとソフトウェア名とライセンス情報とクライアント識別ＩＤと認証許容期間との項目を含むテーブルである。ソフトウェア名は、ソフトウェアの名称を示す。
【００６０】
ライセンス情報は、ソフトウェア識別ＩＤが示すソフトウェアのライセンス認証に用いられる情報である。クライアント識別ＩＤは、クライアント端末３を識別するＩＤである。異なるクライアント端末３に同一のソフトウェアがインストールされる場合、ライセンス認証に用いられるライセンス情報は異なる。
【００６１】
例えば、ソフトウェア識別ＩＤ「001」により識別されるソフトウェアが、クライアント識別ＩＤ「CLIENT001」と「CLIENT003」とによりそれぞれ識別される２つのクライアント端末３に配布される場合、ライセンス情報はそれぞれ異なる。
【００６２】
認証許容期間は、ライセンス認証が許容される期間である。ライセンス割り当て情報は、例えば、管理サーバ２を操作する操作者（以下、管理者とする）により、管理サーバ２に入力されてもよい。管理サーバ２は、ライセンス割り当て情報に関する入力を受け付けることで、ライセンス割り当て情報をサーバ記憶部３３に記憶してもよい。
【００６３】
配布ソフトウェア情報は、ソフトウェア識別ＩＤとソフトウェア媒体とクライアント識別ＩＤと配布タイミングと配布結果との項目を含むテーブルである。ソフトウェア媒体は、ソフトウェアの実体（例えば、バイナリデータ）である。
【００６４】
ソフトウェアの実体は、サーバ記憶部３３の異なる領域に記憶されていてもよい。この場合、ソフトウェア媒体の項目には、ソフトウェアの実体が記憶されているサーバ記憶部３３の領域を特定する情報（例えば、ファイル名）等が記憶されてもよい。
【００６５】
配布タイミングは、管理サーバ２がクライアント端末３にソフトウェアを配布するタイミングを示す。
【００６６】
例えば、配布タイミングが「ログイン時」を示す場合、クライアント識別ＩＤにより識別されるクライアント端末３にログイン処理が行われたことを管理サーバ２が認識したことに応じて、該管理サーバ２は、該クライアント端末３にソフトウェアを配布してもよい。
【００６７】
また、配布タイミングが指定された時刻（図６の例の場合「時刻指定（１５：００）」）を示す場合、管理サーバ２は、指定された時刻において、クライアント端末３にソフトウェアを配布してもよい。
【００６８】
ソフトウェアを配布する先のクライアント端末３は、クライアント識別ＩＤにより識別される。配布結果は、管理サーバ２がクライアント端末３にソフトウェアの配布を行った結果を示す。
【００６９】
例えば、図６の例の場合、配布結果が「未インストール（配信済）」を示す場合、管理サーバ２からクライアント端末３にソフトウェアが配布されており、且つ配布されたソフトウェアが管理サーバ２にインストールされていないことを示す。
【００７０】
配布結果が「認証エラー」を示す場合、ソフトウェアのライセンス認証が失敗したことを示す。配布結果が「未配布」を示す場合、クライアント識別ＩＤにより識別されるクライアント端末３にソフトウェアが配布されていないことを示す。
【００７１】
配布結果が「認証済（正常）」を示す場合、ソフトウェアのライセンス認証が成功したことを示す。配布結果が「未認証（インストール済み）」を示す場合、ソフトウェアはクライアント端末３にインストールされており、且つライセンス認証が行われていないことを示す。
【００７２】
この場合、ソフトウェアのライセンス認証が行われていないため、クライアント端末３にインストールされたソフトウェアの使用が制限される。ライセンス認証が成功した後に、インストールされたソフトウェアの使用の制限が解除される。
【００７３】
クライアント端末３は、以上の例に示されるような配布結果を管理サーバ２に送信する。配布ソフトウェア情報のうち、配布結果以外の項目は、管理者により、管理サーバ２に入力されてもよい。管理サーバ２は、配布ソフトウェア情報に関する入力を受け付けることで、配布ソフトウェア情報をサーバ記憶部３３に記憶してもよい。
【００７４】
監視情報とライセンス割り当て情報と配布ソフトウェア情報とは、それぞれソフトウェア識別ＩＤを含む。従って、監視情報とライセンス割り当て情報と配布ソフトウェア情報とは、ソフトウェア識別ＩＤにより関連付けられる。
【００７５】
＜クライアント端末が記憶する各種情報の一例＞
図７は、クライアント識別ＩＤ「CLIENT001」により識別されるクライアント端末３の端末記憶部２３が記憶する各種情報の一例を示す。図７の例に示されるように、端末記憶部２３には、監視情報とライセンス割り当て情報と配布ソフトウェア情報とが記憶される。
【００７６】
これらの各情報は、管理サーバ２のサーバ記憶部３３に記憶される各情報のうち、クライアント識別ＩＤ「CLIENT001」により識別されるクライアント端末３に配布されるソフトウェアに関する情報である。他のクライアント端末３の端末記憶部２３にも上記の各種情報が記憶される。
【００７７】
図７の例の場合、クライアント識別ＩＤ「CLIENT001」により識別されるクライアント端末３には、ソフトウェア識別ＩＤ「SOFT001」と「SOFT003」とによりそれぞれ識別される２つのソフトウェアが配布される。配布されたソフトウェアは、端末記憶部２３に記憶される。
【００７８】
図８は、プロセス管理テーブルの一例を示す。クライアント端末３で実行されるＯＳ上では、複数のプロセスが動作する。端末制御部１１は、ＯＳ上で動作している各プロセスをプロセス管理テーブルにより管理する。プロセス管理テーブルは、端末記憶部２３に記憶されてよい。
【００７９】
プロセス管理テーブルは、プロセスＩＤとプロセス名と選択状態との項目を含むテーブルである。プロセスＩＤは、プロセスを識別するＩＤである。プロセス名は、プロセスの名称である。
【００８０】
選択状態は、上述したように、それぞれのプロセスについて、対応するウィンドウがアクティブ（選択中）であるか否かを示す。対応するウィンドウがアクティブであるプロセスは「Active」を示し、対応するウィンドウが選択中でないプロセスは「Non-Active」を示す。図８の例の場合、プロセス名「program.exe」が選択中であることを示す。
【００８１】
＜管理サーバの処理の流れの一例を示すフローチャート＞
図９は、監視情報とライセンス割り当て情報と配布ソフトウェア情報とを管理サーバ２がクライアント端末３に配布する処理の流れの一例を示す。サーバ制御部３１は、資産管理ミドルウェアがインストールされたか否かを判定する（ステップＳ１）。
【００８２】
例えば、管理者が、管理サーバ２に資産管理ミドルウェアをインストールする操作を行うと、管理サーバ２は、該操作を受け付ける。管理サーバ２が該操作を受け付けることにより、資産管理ミドルウェアが管理サーバ２にインストールされる。
【００８３】
ステップＳ１でＹＥＳの場合、サーバ制御部３１は、ライセンス割り当て情報の入力を受け付けたか否かを判定する（ステップＳ２）。ステップＳ２でＹＥＳの場合、サーバ制御部３１は、配布ソフトウェア情報の入力を受け付けたか否かを判定する（ステップＳ３）。
【００８４】
例えば、管理者がライセンス割り当て情報および配布ソフトウェア情報を管理サーバ２に入力すると、該管理サーバ２は、入力されたライセンス割り当て情報および配布ソフトウェア情報を受け付けて、これらの情報をサーバ記憶部３３に記憶してもよい。ステップＳ１、ステップＳ２またはステップＳ３でＮＯの場合、処理は、ステップＳ１に戻る。
【００８５】
ステップＳ３でＹＥＳの場合、サーバ制御部３１は、サーバ記憶部３３に各種情報を記憶する（ステップＳ４）。資産管理ミドルウェアがインストールされることにより、監視情報がサーバ記憶部３３に記憶される。
【００８６】
管理サーバ２が、ライセンス割り当て情報に関する情報の入力を受け付けることにより、ライセンス割り当て情報がサーバ記憶部３３に記憶される。管理サーバ２が、配布ソフトウェア情報に関する情報の入力を受け付けることにより、配布ソフトウェア情報がサーバ記憶部３３に記憶される。
【００８７】
サーバ制御部３１は、ライセンス割り当て情報に基づいて、クライアント識別ＩＤにより識別される各クライアント端末３に、記憶された各種情報（監視情報、ライセンス割り当て情報および配布ソフトウェア情報）を送信する（ステップＳ５）。配布ソフトウェア情報は、ソフトウェアの実体を含む。これにより、ソフトウェアがクライアント端末３に配布される。
【００８８】
図１０は、管理サーバ２が配布結果を受信する処理の流れの一例を示す。上述したステップＳ５において、クライアント端末３は、管理サーバ２から各種情報（監視情報、ライセンス割り当て情報および配布ソフトウェア情報）を受信する。
【００８９】
クライアント端末３は、受信した各種情報に基づいて、配布されたソフトウェアのインストールおよびライセンス認証を行う。端末制御部１１は、処理を行った結果を示す配布結果を管理サーバ２に送信する制御を行う。
【００９０】
第１通信部２１は、この制御に基づいて、配布結果を管理サーバ２に送信する。この配布結果には、クライアント識別ＩＤおよびソフトウェア識別ＩＤが含まれる。
【００９１】
管理サーバ２は、配布結果をクライアント端末３から受信したか否かを判定する（ステップＳ６）。ステップＳ６でＮＯの場合、処理は次のステップには進まない。
【００９２】
ステップＳ６でＹＥＳの場合、サーバ制御部３１は、サーバ記憶部３３に記憶されている配布ソフトウェア情報のうち配布結果の項目の情報を、受信した配布結果の情報に基づいて、更新する（ステップＳ７）。
【００９３】
上述したように、クライアント端末３から受信した配布結果には、クライアント識別ＩＤおよびソフトウェア識別ＩＤが含まれる。サーバ制御部３１は、受信した配布結果に含まれるクライアント識別ＩＤおよびソフトウェア識別ＩＤに対応する配布結果の項目の情報を更新する。
【００９４】
＜管理エージェントの処理の流れの一例を示すフローチャート＞
次に、管理エージェントの処理の流れについて説明する。実施形態では、管理サーバ２から配布されたソフトウェアがクライアント端末３にインストールされた際に、該ソフトウェアのライセンス認証が行われるものとする。
【００９５】
以下、クライアント端末３を識別するクライアント識別ＩＤは「CLIENT001」であるものとする。上述したように、管理サーバ２は、サーバ記憶部３３に記憶されている配布ソフトウェア情報のうち配布タイミングの項目の情報に基づいて、クライアント端末３に各種情報（監視情報、ライセンス割り当て情報および配布ソフトウェア情報）を送信する。
【００９６】
図１１の例に示されるように、管理エージェント１０は、クライアント端末３が、管理サーバ２から上記の各種情報を受信したか否かを判定する（ステップＳ１１）。
【００９７】
ステップＳ１１でＮＯの場合、処理は次のステップに進まない。ステップＳ１１でＹＥＳの場合、端末制御部１１は、受信した監視情報、ライセンス割り当て情報および配布ソフトウェア情報を端末記憶部２３に記憶する（ステップＳ１２）。
【００９８】
端末制御部１１は、ライセンス認証の対象であるソフトウェアの指定を受け付け部１２が受け付けたか否かを判定する（ステップＳ１３）。例えば、ユーザは、入力装置２４を用いて、ソフトウェアのインストールを行うインストールプログラム（以下、インストーラと称することがある）を実行する操作を行う。
【００９９】
受け付け部１２が該操作を受け付けた際に、端末制御部１１は、ライセンス認証のソフトウェアの指定を受け付けたと判定してもよい。以下、受け付け部１２は、ソフトウェア識別ＩＤが「SOFT001」であるソフトウェアの指定を受け付けたとする。
【０１００】
ステップＳ１３でＮＯの場合、処理は、次のステップには進まない。ステップＳ１３でＹＥＳの場合、端末制御部１１は、キーロガー１５を起動する（ステップＳ１４）。そして、端末制御部１１は、指定されたソフトウェアに対応する監視対象プロセスが起動中であるか否かを判定する（ステップＳ１５）。
【０１０１】
指定されたソフトウェアのインストールが実行された場合、ＯＳ上で、ソフトウェアのインストールを行うためのプロセスが動作する。該プロセスが監視対象プロセスである。例えば、上述のインストーラが実行されると、ＯＳ上で、監視対象プロセスが起動する。
【０１０２】
起動状態判定部１３は、端末記憶部２３に記憶されている監視情報およびプロセス管理テーブルを参照して、指定されたソフトウェアに対応付けられた監視対象プロセスが起動中であるか否かを判定する。
【０１０３】
監視情報において、ソフトウェアを識別するソフトウェア識別ＩＤと監視対象プロセス名とが対応付けられている。プロセス管理テーブルにおいて、起動中のプロセスＩＤとプロセス名とが対応付けられている。
【０１０４】
例えば、上述したように、ライセンス認証の対象であるソフトウェアのソフトウェア識別ＩＤは「SOFT001」である。図７の例では、端末記憶部２３に記憶されている監視情報において、ソフトウェア識別ＩＤ「SOFT001」に対応する監視対象プロセス名は「program.exe」である。
【０１０５】
起動状態判定部１３は、端末記憶部２３に記憶されたプロセス管理テーブルのうちプロセス名の項目を参照して、監視対象プロセス名「program.exe」が含まれているかを判定する。
【０１０６】
図８の例では、プロセス管理テーブルのうち、プロセスＩＤ「1004」とプロセス名「program.exe」とが対応している。該プロセス名は上記の監視対象プロセス名である。従って、起動状態判定部１３は、指定されたソフトウェアに対応付けられた監視対象プロセスが起動中であると判定する（ステップＳ１５でＹＥＳ）。
【０１０７】
一方、監視対象プロセス名「program.exe」がプロセス管理テーブルに含まれていない場合（ステップＳ１５でＮＯ）、起動状態判定部１３は、指定されたソフトウェアに対応付けられた監視対象プロセスが起動中でないと判定する。
【０１０８】
ステップＳ１５でＮＯの場合、端末制御部１１は、端末記憶部２３に記憶されているライセンス割り当て情報を参照して、指定されたソフトウェアのライセンス認証で指定される認証期間が認証許容範囲内であるか否かを判定する（ステップＳ１６）。
【０１０９】
ライセンス割り当て情報において、ライセンス認証の対象であるソフトウェアのソフトウェア識別ＩＤ「SOFT001」に対応する認証許容期間の項目の情報は、「10/01-10/02」を示す。
【０１１０】
端末制御部１１は、現在の日付が「10/01-10/02」の範囲内であれば、指定されたソフトウェアのライセンス認証で指定される認証期間が認証許容範囲内であると判定する（ステップＳ１６でＹＥＳ）。この場合、処理はステップＳ１５に戻る。
【０１１１】
一方、端末制御部１１は、現在の日付が「10/01-10/02」の範囲外である場合（ステップＳ１６でＮＯ）、指定されたソフトウェアのライセンス認証で指定される認証期間が認証許容範囲外であると判定する。この場合、ライセンス認証は失敗する。ステップＳ１２でＮＯの場合、処理は、「Ａ」に進む。
【０１１２】
クライアント端末３のＯＳ上では、監視対象プロセス名と同じ名称のプロセスが動作している可能性がある。その場合、監視対象プロセス以外のプロセス（監視対象プロセス名と同じプロセス名のプロセス）に基づいて、ステップＳ１５の判定がＹＥＳになる可能性がある。
【０１１３】
そこで、起動状態判定部１３は、端末記憶部２３に記憶されている監視情報を参照して、ライセンス認証の対象であるソフトウェアのソフトウェア識別ＩＤに対応するＰＥヘッダを認識する。
【０１１４】
また、起動状態判定部１３は、プロセス管理テーブルを参照して、ライセンス認証の対象であるソフトウェアのソフトウェア識別ＩＤに対応するプロセス名を認識し、該プロセス名により識別されるプロセスのＰＥヘッダを確認する。
【０１１５】
例えば、起動状態判定部１３は、確認対象のプロセスを分析して、該プロセスに含まれるＰＥヘッダを確認してもよい。起動状態判定部１３は、確認したＰＥＤヘッダと監視情報に基づいて認識されたＰＥヘッダとが一致するか否かを判定する（ステップＳ１７）。
【０１１６】
ステップＳ１７でＮＯの場合、両者のＰＥヘッダが一致しないため、認識されたプロセス名のプロセスは、監視対象プロセスではないことが判別される。この場合、処理はステップＳ１６に進む。
【０１１７】
ステップＳ１７でＹＥＳの場合、起動状態判定部１３は、ソフトウェアのライセンス認証の対象である監視対象プロセスが起動中であると判定する。起動状態判定部１３は、プロセス名とＰＥヘッダとの２つの情報に基づいて、監視対象プロセスが起動中であるかを判定するため、監視対象プロセスが起動中であるか否かを判定する精度が向上する。
【０１１８】
ステップＳ１７でＹＥＳの場合、選択状態判定部１４は、ライセンス認証の対象であるソフトウェアの監視対象プロセスに対応するウィンドウＷがアクティブ（選択中）であるか否かを判定する（ステップＳ１８）。
【０１１９】
選択状態判定部１４は、端末記憶部２３に記憶されたプロセス管理テーブルを参照して、監視対象プロセス名に対応する選択状態が「Active」であるか否かを判定する。ステップＳ１８でＹＥＳの場合、ライセンス認証の対象であるソフトウェアの監視対象プロセスに対応するウィンドウＷはアクティブ（選択中）であると判定される。
【０１２０】
この場合に、キーロガー１５は、受け付け部１２が入力装置２４から受け付けた入力情報を取得する処理を行う（ステップＳ１９）。ステップＳ１９の処理が終わると、処理は「Ｂ」に進む。
【０１２１】
一方、ステップＳ１８でＮＯの場合、ライセンス認証の対象であるソフトウェアの監視対象プロセスに対応するウィンドウＷは選択中でないと判定される（「Non-Active（非アクティブ）」であると判定される）。この場合、処理はステップＳ１６に進む。
【０１２２】
ステップＳ１９の処理について、図１２を参照して、説明する。選択状態判定部１４は、ライセンス認証の対象であるソフトウェアの監視対象プロセスに対応するウィンドウＷが非アクティブになったかを判定する（ステップＳ１９−１）。
【０１２３】
つまり、ステップＳ１９−１において、選択状態判定部１４は、ライセンス認証の対象であるソフトウェアの監視対象プロセスに対応するウィンドウＷがアクティブの状態を解除され、非アクティブになったかを判定する。
【０１２４】
選択状態判定部１４は、プロセス管理テーブルに基づいて、上記のウィンドウＷが非アクティブになったかを判定してもよい。ステップＳ１９−１でＹＥＳの場合、入力情報を取得する処理は終了する。
【０１２５】
ステップＳ１９−１でＮＯの場合、選択状態判定部１４は、受け付け部１２が、入力装置２４としてのキーボードから入力を受け付けたかを判定する（ステップＳ１９−２）。ステップＳ１９−２でＹＥＳの場合、キーロガー１５は、受け付け部１２が受け付けたキーボードの入力を取得する（ステップＳ１９−３）。ステップＳ１９−２でＮＯの場合、ステップＳ１９−３の処理は実行されない。
【０１２６】
選択状態判定部１４は、受け付け部１２が、入力装置２４としてのマウスから入力を受け付けたかを判定する（ステップＳ１９−４）。ステップＳ１９−４でＹＥＳの場合、キーロガー１５は、受け付け部１２が受け付けたマウスの入力を取得する（ステップＳ１９−５）。ステップＳ１９−４でＮＯの場合、ステップＳ１９−５の処理は行われない。
【０１２７】
選択状態判定部１４は、受け付け部１２が、入力装置としてのキーボードまたはマウスからクリップボードの貼り付け操作を受け付けたかを判定する（ステップＳ１９−６）。
【０１２８】
ステップＳ１９−６でＹＥＳの場合、キーロガー１５は、クリップボード（上述したＲＡＭ）に一時的に記憶されている文字情報を取得する（ステップＳ１９−７）。ステップＳ１９−６でＮＯの場合、ステップＳ１９−７の処理は行われない。
【０１２９】
以上により、キーロガー１５は入力情報を取得する。ステップＳ１９の処理は、指定を受け付けたソフトウェアに対応する監視対象プロセスが起動中であり、且つ該監視対象プロセスに対応するウィンドウがアクティブ（選択中）の場合に行われる。
【０１３０】
これにより、クライアント端末３に対して複数の入力がされたとしても、キーロガー１５は、アクティブになっているウィンドウに対する入力情報を取得するため、取得する対象の入力情報が絞られる。
【０１３１】
このため、上記の複数の入力の全てを解析する処理を行うことなく、クライアント端末３に対する複数の入力から、入力されたライセンス情報が特定される。これにより、入力されたライセンス情報を特定するための処理量が増加することを抑制でき、認証処理の負荷が軽減される。
【０１３２】
次に、ステップＳ１９以降の処理（「Ｂ」以降の処理）について、図１３の例を参照して、説明する。ステップＳ１９以降の処理は、照合部１７が取得された入力情報とライセンス情報とを照合して、認証制御部１８が照合結果に基づいて認証制御を行う処理の一例である。
【０１３３】
ライセンス情報取得部１６は、ライセンス認証の対象であるソフトウェアのライセンス情報およびライセンス情報パターンを取得する（ステップＳ２０）。
【０１３４】
ライセンス認証の対象であるソフトウェアを識別するソフトウェア識別ＩＤは「SOFT001」である。ライセンス情報取得部１６は、監視情報を参照して、該ソフトウェア識別ＩＤに対応するライセンス情報パターンを認識する。
【０１３５】
また、ライセンス情報取得部１６は、ライセンス割り当て情報を参照して、ソフトウェア識別ＩＤ「SOFT001」に対応するライセンス情報を認識する。照合部１７は、取得された入力情報がライセンス情報パターンに含まれるか否かを判定する（ステップＳ２１）。
【０１３６】
取得された入力情報がライセンス情報パターンに含まれない場合（ステップＳ２１でＮＯ）について、図１４の例を参照して、説明する。図１４の例に示されるように、監視情報のうち、ソフトウェア識別ＩＤ「SOFT001」に対応するライセンス情報パターンは、「[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}」である。
【０１３７】
また、ソフトウェア識別ＩＤ「SOFT001」に対応するライセンス情報は「12345678-ABCD」である。
【０１３８】
一方、キーロガー１５が取得した入力情報は「X2345678-ABCD」である。図１４の例に示されるように、該入力情報は、キー入力（入力装置２４としてのキーボードからの入力）がされた文字の入力順に並べた文字列である。
【０１３９】
上述したように、上記のライセンス情報パターンは、「0-9」、「A-F」または「a-f」を用いた８文字の文字列と、「-」と、「0-9」、「A-F」または「a-f」を用いた４文字の文字列とを並べたパターンであることを示す。
【０１４０】
上記の入力情報のうち「X」は、ライセンス情報パターンが最初の８文字の文字列が示す「0-9」にも「A-F」にも「a-f」にも該当しない。従って、キーロガー１５が取得した入力情報「X2345678-ABCD」は、ソフトウェア識別ＩＤ「SOFT001」に対応するライセンス情報パターンに含まれない。
【０１４１】
この場合、照合部１７による照合の結果、キーロガー１５が取得した入力情報は、ライセンス認証の対象であるソフトウェアに対応するライセンス情報パターンに含まれないため、認証制御部１８は、ライセンス認証が失敗したと判定する。図１３の例に示されるように、ステップＳ２１でＮＯの場合、処理は「Ｃ」に進む。
【０１４２】
照合部１７が、入力情報がライセンス情報パターンに含まれないと判定しただけで、認証制御部１８はライセンス認証が失敗したことを判定できる。これにより、入力情報とライセンス情報との詳細な照合が行われなくても、ライセンス認証の失敗が判定されるため、認証処理の負荷が軽減される。
【０１４３】
図１３の例において、ステップＳ２１でＹＥＳの場合、照合部１７は、取得された入力情報とライセンス情報とが全て一致するか否かを判定する（ステップＳ２２）。取得された入力情報とライセンス情報とが全て一致する場合（ステップＳ２２でＹＥＳ）について、図１５の例を参照して、説明する。
【０１４４】
図１５の例の場合、照合部１７による照合の結果、入力情報は、ライセンス情報と全て一致する。この場合、認証制御部１８は、ライセンス認証が成功したと判定する。図１３の例に示されるように、ステップＳ２１でＹＥＳの場合、処理は「Ｄ」に進む。
【０１４５】
実施形態では、取得された入力情報とライセンス情報とが全て一致しない場合でも、所定条件下で、認証制御部１８はライセンス認証が成功したと判定する。
【０１４６】
ただし、認証制御部１８は、照合部１７による照合の結果、取得された入力情報とライセンス情報とが全て一致したか否かにのみ基づいて、ライセンス認証の成否を判定してもよい。この場合、照合部１７による照合に関する処理は、ステップＳ２２のみが行われる。
【０１４７】
ステップＳ２２でＮＯの場合、照合部１７は、キーロガー１５が取得した入力情報を入力順に配置する（ステップＳ２３）。そして、照合部１７は、入力情報の文字数からライセンス情報の文字数を減じた文字数分だけステップＳ２４〜ステップＳ２７のループ処理を行う。
【０１４８】
照合部１７は、入力情報の比較開始位置をずらして、ライセンス情報の文字数分の文字列を入力情報から抽出する（ステップＳ２５）。比較開始位置の初期値は、入力順に配置された入力情報の１文字目である。
【０１４９】
そして、照合部１７は、抽出された文字列と入力情報の文字列とが一致するか否かを判定する（ステップＳ２６）。ステップＳ２６でＹＥＳの場合、認証制御部１８は、ライセンス認証が成功したと判定して、処理は「Ｄ」に進む。一方、ステップＳ２６でＮＯの場合、ステップＳ２５およびステップＳ２６の処理が再び行われる。
【０１５０】
ステップＳ２４〜ステップＳ２７の処理について、図１６の例を参照して説明する。図１６の例の場合、入力情報は「X12345678-ABCDYZ」である。この入力情報のうち、「X12345678」は、「0-9」、「A-F」または「a-f」を用いた８文字の文字列「12345678」を含む。
【０１５１】
また、上記の入力情報は「-」を含む。また、上記の入力情報のうち、「ABCDYZ」は、「0-9」、「A-F」または「a-f」を用いた４文字の文字列「ABCD」を含む。従って、図１６の例の入力情報は、ライセンス情報パターンを含む。
【０１５２】
入力情報は「X12345678-ABCDYZ」であるため、入力情報の文字数は「１６」である。ライセンス情報は「12345678-ABCD」であるため、ライセンス情報の文字数は「１３」である。
【０１５３】
よって、照合部１７は、ステップＳ２４〜ステップＳ２７のループ処理を最大３回（＝１６−１３）繰り返す。照合部１７は、１３文字（＝ライセンス情報の文字数）の文字列を入力情報から抽出する。該文字列の抽出は、比較開始位置を基準として行われる。
【０１５４】
上述したように、比較開始位置の初期値は、入力順に配置された入力情報の１文字目である。従って、照合部１７は、入力情報「X12345678-ABCDYZ」の１文字目から１３文字の文字列を抽出する。
【０１５５】
抽出される文字列は、「X12345678-ABC」である。照合部１７は、抽出された文字列とライセンス情報の文字列とが一致するかを判定する。ライセンス情報は「12345678-ABCD」であるため、この場合、照合部１７は、両者の文字列が一致しないと判定する。
【０１５６】
従って、照合部１７は、１３文字の文字列を入力情報から再び抽出する。この際、照合部１７は、比較開始位置を１文字ずらして、１６文字の文字列である入力情報の２文字目から１３文字の文字列を抽出する。
【０１５７】
抽出される文字列は「12345678-ABCD」であるため、照合部１７は、抽出された文字列とライセンス情報の文字列とが一致すると判定する。この場合、認証制御部１８は、ライセンス認証が成功したと判定する。
【０１５８】
例えば、正当な権限を持つユーザが、ライセンス情報を誤って入力する場合がある。この場合、受け付け部１２が受け付けた入力情報の文字列は、ライセンス情報の文字列と全ては一致しない。
【０１５９】
この場合、ステップＳ２４〜ステップＳ２７のループ処理が行われることで、ライセンス情報の誤入力を考慮したライセンス認証が行われる。
【０１６０】
上述した例の場合、ステップＳ２４〜ステップＳ２７のループ処理が最大３回繰り返される。ステップＳ２４〜ステップＳ２７のループ処理が３回繰り返されても、ステップＳ２６でＹＥＳと判定されない場合、処理は「Ｅ」に進む。
【０１６１】
「Ｄ」および「Ｅ」以降の処理について、図１７のフローチャートを参照して説明する。照合部１７は、入力情報からライセンス情報の文字数分だけ抜き出した文字を入力順に配置して形成される文字列の数のループ処理（ステップＳ２８〜ステップＳ３１）を行う。
【０１６２】
照合部１７は、入力情報からライセンス情報の文字数分だけ抜き出した文字を入力順（文字列の並び順）に配置する（ステップＳ２９）。照合部１７は、入力情報の文字列から、該文字列の並び順に応じて抜き出された複数の文字を順番に配置した文字列とライセンス情報の文字列とが一致するか否かを判定する（ステップＳ３０）。
【０１６３】
ステップＳ３０でＹＥＳの場合、認証制御部１８はライセンス認証が成功したと判定する。ステップＳ３０でＮＯの場合、ステップＳ２９およびステップＳ３０の処理が繰り返される。
【０１６４】
ステップＳ２８〜ステップＳ３１のループ処理について、図１８の例を参照して説明する。図１８の例の場合、入力情報は「1X2345678-A1BCD」である。この入力情報の文字数は「１５」である。この入力情報のうち、「1X2345678」は、「0-9」、「A-F」または「a-f」を用いた８文字の文字列「12345678」を含む。
【０１６５】
また、上記の入力情報は「-」を含む。また、上記の入力情報のうち、「A1BCD」は、「0-9」、「A-F」または「a-f」を用いた４文字の文字列「ABCD」を含む。従って、図１８の例の入力情報は、ライセンス情報パターンを含む。
【０１６６】
照合部１７は、入力情報の文字列からライセンス情報の文字数（＝１３）の分だけ抜き出した文字を入力順に配置する。照合部１７は、入力情報「1X2345678-A1BCD」から、入力順に応じて、１３文字を抜き出し、入力順に配置する。
【０１６７】
例えば、照合部１７が、入力情報「1X2345678-A1BCD」から、１文字目と２文字目とを除外した１３文字を抜き出して、抜き出された１３文字を入力順に配置した場合、配置された文字列は「2345678-A1BCD」となる。
【０１６８】
この場合、配置された文字列は、ライセンス情報の文字列と一致しないため、照合部１７は、ステップＳ３０でＮＯと判定する。
【０１６９】
例えば、照合部１７が、入力情報「1X2345678-A1BCD」から、１文字目と１２文字目とを除外した１３文字を抜き出して、抜き出された１３文字を入力順に配置した場合、配置された文字列は「X2345678-ABCD」となる。
【０１７０】
この場合、配置された文字列は、ライセンス情報と一致しないため、照合部１７は、ステップＳ３０でＮＯと判定する。
【０１７１】
例えば、照合部１７が、入力情報「1X2345678-A1BCD」から、２文字目と１２文字目とを除外した１３文字を抜き出して、抜き出された１３文字を入力順に配置した場合、配置された文字列は「12345678-ABCD」となる。
【０１７２】
この場合、配置された文字列は、ライセンス情報と一致するため、照合部１７は、ステップＳ３０でＹＥＳと判定する。
【０１７３】
上述したステップＳ２４〜ステップＳ２７の処理では、ライセンス情報の文字列と全て一致する文字列を含み、且つ該文字列に他の文字が付加されるような誤入力がされたとしても、認証制御部１８は、ラインセンス認証が成功したと判定する。
【０１７４】
一方、ステップＳ２８〜ステップＳ３１の処理では、ライセンス情報の文字列と全て一致する文字列を含まないような誤入力がされたとしても、認証制御部１８は、ライセンス認証が成功したと判定する。
【０１７５】
例えば、上述した例の場合、ライセンス情報の文字列と全て一致する文字列の中に誤入力に基づく文字が含まれている場合でも、照合部１７は、ステップＳ３０でＹＥＳと判定し、認証制御部１８は、ライセンス認証が成功したと判定する。
【０１７６】
１５文字の文字列（入力情報の文字列）から、１３文字の文字列（ライセンス情報の文字列）を抜き出す際の組み合わせは複数ある。全ての組み合わせについて、図１７の例で示されるステップＳ２８〜ステップＳ３１のループ処理が行われる。
【０１７７】
全ての組み合わせについて、ステップＳ２８〜ステップＳ３１のループ処理が行われたとしても、ステップＳ３０の判定でＹＥＳにならない場合がある。図１９の例を参照して、説明する。
【０１７８】
図１９の例において、入力情報は「32345678-ABCD1」である。この入力情報の文字数は「１３」である。この入力情報のうち、「32345678」は、「0-9」、「A-F」または「a-f」を用いた８文字の文字列「12345678」を含む。
【０１７９】
また、上記の入力情報は「-」を含む。また、上記の入力情報のうち、「ABCD1」は、「0-9」、「A-F」または「a-f」を用いた４文字の文字列「ABCD」を含む。従って、図１８の例の入力情報は、ライセンス情報パターンを含む。
【０１８０】
一方、入力情報の文字列「32345678-ABCD1」からライセンス情報の文字数の分だけ抜き出した文字を入力順に配置したとしても、上記の入力情報の文字列は、ライセンス情報の文字列「12345678-ABCD」を含まない。
【０１８１】
この場合、全ての組み合わせについて、図１７の例で示されるステップＳ２８〜ステップＳ３１のループ処理が行われたとしても、ステップＳ３０の判定でＹＥＳにならない。ステップＳ２８〜ステップＳ３１のループ処理において、ステップＳ３０がＹＥＳにならないと、認証制御部１８は、ライセンス認証が失敗したと判定する。
【０１８２】
認証制御部１８は、ライセンス認証が失敗したと判定した場合またはステップＳ１６において認証許容範囲外であると判定された場合、ライセンス認証の対象であるソフトウェアの起動禁止またはアンインストールの制御を行う（ステップＳ３２）。認証制御部１８は、クライアント端末３のＯＳに対して該制御を行う。
【０１８３】
認証制御部１８は、ライセンス認証が成功したと判定した場合、ライセンス認証となるソフトウェアをクライアント端末３にインストールし、正常に処理を終了する（ステップＳ３３）。
【０１８４】
ステップＳ３２またはステップＳ３３の処理が行われた後、キーロガー１５は停止する（ステップＳ３４）。以上の各処理により、管理サーバ２からクライアント端末３にソフトウェアが配布される。端末制御部１１は、配布結果を管理サーバ２に送信する（ステップＳ３５）。
【０１８５】
また、端末制御部１１は、上述した各処理におけるライセンス認証の対象であるソフトウェアに関するデータ（レコード）を削除する（ステップＳ３６）。例えば、配布ソフトウェア情報の配布結果が認証エラーまたは認証済み（正常）を示すレコードは、配布ソフトウェア情報から削除される。
【０１８６】
以上に説明したように、ライセンス認証の指定を受け付けたソフトウェアに対応する監視対象プロセスに対応するウィンドウがアクティブの場合に、キーロガー１５は、選択状態がアクティブであるウィンドウに対する入力を取得する。
【０１８７】
これにより、キーロガー１５は、クライアント端末３に対する全ての入力を解析して、その中からライセンス情報を特定する処理を行うことなく、選択中のウィンドウに対する入力を取得するため、ライセンス認証を行うための認証処理の負荷が低くなる。
【０１８８】
＜変形例＞
次に、変形例について説明する。変形例は、ラインセンス認証の対象であるソフトウェアがクライアント端末３にインストールされた後であり、且つライセンス認証が行われる前に、クライアント端末３のＯＳが再起動された場合の例である。
【０１８９】
端末制御部１１は、ライセンス認証の対象であるソフトウェアのクライアント端末３に対するインストールが完了した後、且つライセンス認証が行われる前に、ＯＳが再起動されたか否かを判定する（ステップＳ４１）。
【０１９０】
ステップＳ４１でＮＯの場合、変形例における管理エージェントの処理は終了する。ステップＳ４１でＹＳＥの場合、端末制御部１１は、端末記憶部２３に記憶されている配布ソフトウェア情報にレコードがあるか否かを判定する（ステップＳ４２）。
【０１９１】
ステップＳ４２でＮＯの場合、変形例における管理エージェントの処理は終了する。ステップＳ４２でＹＥＳの場合、キーロガー１５が起動する（ステップＳ４３）。
【０１９２】
ステップＳ４１でＹＥＳの場合、配布ソフトウェア情報に存在するレコードは、配布結果が「未認証（インストール済）」を示すレコードだけである。ステップＳ４１でＹＥＳの場合、ライセンス認証の対象であるソフトウェアのインストールは完了している。
【０１９３】
従って、配布結果が「未インストール（配信済）」を示すレコードは配布ソフトウェア情報に存在しない。また、ステップＳ４１でＹＥＳの場合、ライセンス認証が行われていないため、配布結果が「認証エラー」または「認証済（正常）」を示すレコードは配布ソフトウェア情報に存在しない。
【０１９４】
配布ソフトウェア情報には、配布結果が「未認証（インストール済）」を示すレコードが複数存在する場合がある。図２０のフローチャートに示されるように、配布ソフトウェア情報のレコード数分のループ処理が行われる（ステップＳ４３）。
【０１９５】
起動状態判定部１３は、配布ソフトウェア情報のうち、配布結果が「未認証（インストール済）」を示すレコードに対応するプロセス（監視対象プロセス）が起動中であるか否かを判定する（ステップＳ４４）。
【０１９６】
ステップＳ１７〜ステップＳ３３までの処理は、図１１、図１２、図１３および図１７の各処理と同様であるため、説明を省略する。図２１の例に示されるように、ステップＳ３２またはステップＳ３３までのループ処理（ステップＳ４３に対応するループ処理）が行われる（ステップＳ４５）。
【０１９７】
ステップＳ３４〜ステップＳ３６の各処理は、図１７の例と同様であるため、説明を省略する。
【０１９８】
図２０および図２１のフローチャートでは、配布ソフトウェア情報のレコード数分のループ処理が行われるが、配布ソフトウェア情報のレコード数分のキーロガー１５が起動されてもよい。
【０１９９】
例えば、配布ソフトウェア情報のレコード数が２つの場合、２つのキーロガー１５が起動されてもよい。この場合、２つのキーロガー１５は、監視情報のうちソフトウェア識別ＩＤに対応するそれぞれの対象プロセス名を監視対象プロセスとする。
【０２００】
従って、変形例では、ラインセンス認証の対象であるソフトウェアがクライアント端末３にインストールされた後であり、且つライセンス認証が行われる前に、クライアント端末３のＯＳが再起動された場合であっても、上述した実施形態と同様の処理が行われる。このため、ライセンス認証の負荷が低くなる。
【０２０１】
＜クライアント端末のハードウェア構成の一例＞
次に、図２２の例を参照して、クライアント端末３のハードウェア構成の一例を説明する。図２２の例に示すように、バス１００に対して、プロセッサ１１１とＲＡＭ１１２とRead Only Memory(ROM)１１３と補助記憶装置１１４と媒体接続部１１５と通信インタフェース１１６とが接続される。また、該バス１００に対して、キーボード１１７とマウス１１８とディスプレイ２５とが接続される。
【０２０２】
プロセッサ１１１はＲＡＭ１１２に展開されたプログラムを実行する。実行されるプログラムとしては、実施形態における処理を行う認証プログラムが適用されてもよい。
【０２０３】
ＲＯＭ１１３はＲＡＭ１１２に展開されるプログラムを記憶する不揮発性の記憶装置である。補助記憶装置１１４は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等を補助記憶装置１１４に適用してもよい。媒体接続部１１５は、可搬型記録媒体１１９と接続可能に設けられている。
【０２０４】
可搬型記録媒体１１９としては、可搬型のメモリ（半導体メモリ等）や光学式ディスク（例えば、Compact Disc(CD)やDigital Versatile Disc(DVD)等）を適用してもよい。この可搬型記録媒体１１９に実施形態の処理を行う認証プログラムが記録されていてもよい。
【０２０５】
クライアント端末３のうち、端末記憶部２３は、ＲＡＭ１１２や補助記憶装置１１４等により実現されてもよい。第１通信部２１は、通信インタフェース１１６により実現されてもよい。
【０２０６】
管理エージェント１０および表示制御部２２は、与えられた認証プログラムをプロセッサ１１１が実行することにより実現されてもよい。入力装置２４は、キーボード１１７やマウス１１８等により実現されてもよい。
【０２０７】
ＲＡＭ１１２、ＲＯＭ１１３、補助記憶装置１１４および可搬型記録媒体１１９は、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
【０２０８】
＜その他＞
本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【０２０９】
１    システム
２    管理サーバ
３    クライアント端末
４    ネットワーク
１１    端末制御部
１２    受け付け部
１３    起動状態判定部
１４    選択状態判定部
１５    キーロガー
１６    ライセンス情報取得部
１７    照合部
１８    認証制御部
２１    第１通信部
２２    表示制御部
３１    サーバ制御部
３２    第２通信部
３３    サーバ記憶部
１１１    プロセッサ
１１２    ＲＡＭ
１１３    ＲＯＭ
【図１】
2017194835.tif 000003
【図２】
2017194835.tif 000004
【図３】
2017194835.tif 000005
【図４】
2017194835.tif 000006
【図５】
2017194835.tif 000007
【図６】
2017194835.tif 000008
【図７】
2017194835.tif 000009
【図８】
2017194835.tif 000010
【図９】
2017194835.tif 000011
【図１０】
2017194835.tif 000012
【図１１】
2017194835.tif 000013
【図１２】
2017194835.tif 000014
【図１３】
2017194835.tif 000015
【図１４】
2017194835.tif 000016
【図１５】
2017194835.tif 000017
【図１６】
2017194835.tif 000018
【図１７】
2017194835.tif 000019
【図１８】
2017194835.tif 000020
【図１９】
2017194835.tif 000021
【図２０】
2017194835.tif 000022
【図２１】
2017194835.tif 000023
【図２２】
2017194835.tif 000024