(57)【要約】【課題】ネットワークの複数のワークステーションでのソフトウェア・プログラムの使用を制御する方法（３００）およびシステムを提供すること。【解決手段】各ワークステーションで動作するエージェントが、新しいプロセスを検出し（３０６）（カーネル・フック技法を使用して）、この新しいプロセスは、プログラム（３９７）の実行の要求に応答して開始される。プロセスが、中断され（３０８）、プログラムを実行する許可が、関連するメータリング・サーバに要求される（３３４）。メータリング・サーバは、製品の現在の使用をめいめいの許可された使用条件と比較し（３８０）、実行の許可または拒否をエージェントに回答する（３８２）。プロセスは、プログラムを開始できるようにするために再開され（３１２）、あるいは、プログラムの実行を妨げるために打ち切られる（３１５）。どの場合でも、プログラムは、停止されず（開始を妨げられるのみ）、これによって、潜在的に危険な動作を実行している間にプログラムが強制終了されなくなる。【選択図】図２
2005507519.tif 000002
【特許請求の範囲】
【請求項１】
ディジタル・エンコードされた製品の使用を制御するコンピュータによって実施される方法（３００）であって、
ディジタル・エンコードされた製品のコンピュータ上での実行を要求するステップ（３９７）と、
前記製品の開始の前に前記実行要求をインターセプトするステップ（３０６）と、
前記製品の許可された使用条件を前記実行要求が遵守していることを検証するステップ（３３４、３８０〜３８５、３３６〜３４２）と、
前記検証の結果に従って前記製品の開始をイネーブルするか妨げるステップ（３１０〜３１５）と
を含む方法。
【請求項２】
前記実行要求に関連するプロセスの開始を検出するステップ（３０６）と、
前記プロセスを中断するステップ（３０８）と、
前記検証の結果に従って前記プロセスを再開するか打ち切るステップ（３１０〜３１５）と
をさらに含む、請求項１に記載の方法（３００）。
【請求項３】
前記プロセスの開始を、前記コンピュータの動作を制御するオペレーティング・システムのカーネル拡張モジュールに通知するステップ（３９７）と、
前記カーネル拡張モジュールが、前記コンピュータで動作するエージェントに前記実行要求を報告し（３０６）、前記通知に応答して、前記プロセスを中断するステップ（３０８）と、
前記エージェントが、前記カーネル拡張モジュールに、前記検証の結果に従って前記プロセスを再開させるか打ち切らせるステップ（３３８）と
をさらに含む、請求項２に記載の方法（３００）。
【請求項４】
前記実行要求の遵守を検証するステップ（３３４、３８０〜３８５、３３６〜３４２）が、
前記実行要求を示す要求メッセージを、前記コンピュータから複数のコンピュータに関連するメータリング・サーバに送るステップ（３３４）と、
前記関連するコンピュータのすべてについて前記許可された使用条件を表すライセンシング情報と、前記メータリング・サーバによって現在許可される実行許可を表すメータリング・メモリ構造との間の比較に従って、前記メータリング・サーバによって前記製品の実行許可を与えるか拒否するステップ（３８０）と
対応する応答メッセージを前記メータリング・サーバから前記コンピュータに送るステップ（３８２）と、
実行の前記許可が与えられた時に、前記メータリング・メモリ構造に前記製品を追加するステップ（３８４〜３８５）と
を含む、請求項１ないし３のいずれかに記載の方法（３００）。
【請求項５】
前記実行許可の拒否に応答して、前記コンピュータから少なくとも１つのさらなるメータリング・サーバに前記要求メッセージを送るステップ（３３６、３４０、３４２）
をさらに含む、請求項４に記載の方法（３００）。
【請求項６】
前記コンピュータが、制御される前記製品を表す制御メモリ構造を保管し、前記方法が、さらに、前記制御メモリ構造に前記製品を含めることを制御するステップ（３２８）を含み、前記実行要求の遵守を検証するステップ（３３４、３８０〜３８５、３３６〜３４２）および前記製品の開始をイネーブルするか妨げるステップ（３１０〜３１５）が、前記製品が前記制御メモリ構造に含まれる場合に限って実行される、請求項１ないし５のいずれかに記載の方法（３００）。
【請求項７】
前記制御メモリ構造に含まれない製品の開始をイネーブルするステップ（３３０）と、
前記制御メモリ構造に含まれない前記製品の表示を前記コンピュータで保管されるログに追加するステップ（３３２）と、
前記ログを関連するメータリング・サーバに定期的に送るステップ（３６６）と、
前記ログに従って前記制御メモリ構造および前記ライセンシング情報を行使するステップ（３８９、３９０）と、
をさらに含む、請求項６に記載の方法（３００）。
【請求項８】
前記コンピュータでの前記製品の実行を終了するステップ（３９８）と、
前記実行終了をインターセプトするステップ（３１８）と、
前記実行終了を示す終了メッセージを、前記コンピュータから、実行の前記許可を許可した現在のメータリング・サーバに送るステップ（３４９）と、
前記終了メッセージに応答して、前記メータリング・メモリ構造から前記製品を除去するステップ（３８７）と
をさらに含む、請求項４ないし７のいずれかに記載の方法（３００）。
【請求項９】
前記コンピュータから各対応する現在のメータリング・サーバに検査メッセージを定期的に送るステップ（３６４）と、
前記検査メッセージが事前に設定された期間中に受け取られない時に、前記対応する現在のメータリング・サーバに保管される前記メータリング・メモリ構造から前記コンピュータで動作する各製品を除去するステップ（３９２）と
をさらに含む、請求項８に記載の方法（３００）。
【請求項１０】
前記コンピュータにインストールされた製品を示すインストール情報を定期的に収集するステップ（３６８、３７０）と、
前記コンピュータから対応するメータリング・サーバに前記インストール情報を送るステップ（３７２）と
をさらに含む、請求項４ないし９のいずれかに記載の方法（３００）。
【請求項１１】
単一の中央管理サーバから複数のメータリング・サーバを制御するステップ（３９４）をさらに含む、請求項４ないし１０のいずれかに記載の方法（３００）。
【請求項１２】
コンピュータ・プログラム・アプリケーション（２２０、２２５、２６０）であって、前記プログラム・アプリケーションがデータ処理システム（１００）で実行される時に、請求項１ないし１１のいずれかに記載の方法を実行するために前記データ処理システムの作業メモリに直接にロード可能なコンピュータ・プログラム・アプリケーション。
【請求項１３】
請求項１２に記載のプログラム・アプリケーションが保管されるコンピュータ可読媒体を含むプログラム製品（１６０ｗ、１６０ｓ）。
【請求項１４】
ディジタル・エンコードされた製品の使用を制御するデータ処理システム（１００）であって、ディジタル・エンコードされた製品のコンピュータ（１０５ｗ）上での実行を要求する手段（２０５ｗ）と、前記製品の開始の前に前記実行要求をインターセプトする手段（２２０、２２５）と、前記製品の許可された使用条件を前記実行要求が遵守していることを検証する手段（２２５、２６０）と、前記検証の結果に従って前記製品の開始をイネーブルするか妨げる手段（２２５、２２０）とを含むデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディジタル・エンコードされた（ディジタル方式でエンコードされた）製品の使用を制御する方法およびシステムに関する。
【背景技術】
【０００２】
ソフトウェア・プログラムなどのディジタル・エンコードされた製品は、回数制限なくコピーを完全に再生することができる。しかし、プログラムの無許可のコピーには、通常、その権利者の知的財産権の侵害が伴う。このため、使用されるプログラムが、対応する許可された使用条件に従っていることを検証することが非常に重要である。この問題は、多数のコンピュータを有する大組織で特に深刻であり、近年、この種の製品の無制御の配布をさらに促進するインターネットの広範囲の拡散によって悪化してきた。
【０００３】
上述の検証は、通常は、すべてのコンピュータを手作業で監査することによって実行される。しかし、この手順は、時間がかかり（特に大規模な場所で）、エラーが発生しやすい。
【０００４】
許可された使用条件をプログラムが遵守しているかどうかを評価するいくつかの自動化ツールも、提案されている。通常、これらのツールでは、各コンピュータにインストールされるエージェントが活用される。エージェントによって、コンピュータで動作するプログラムが定期的に検査される。プログラム使用状況レポートを生成するために、検証の結果がログに記録される。さらに、その許可された使用条件に違反するプログラムが動作中である場合に、このツールによって、めいめいのプロセスを強制終了することができ（プログラムの実行を停止するために）、そのプログラムを二度と開始できなくすることができる。
【０００５】
しかし、上で説明した解決策では、プログラムの使用をリアルタイムでは監視せず、その結果、実際のライセンシング検証を実行することは不可能である。さらに、許可された使用条件に強制的に従わせるためにプログラムの実行を強制終了する時に、対応するデータに損傷が発生する場合があり、これによって、エンドユーザが、次の（許可された）使用のためにコンピュータにそのプログラムを再インストールすることも強制される。
【０００６】
当技術分野で提案された、テクニカル・ライセンシング（ｔｅｃｈｎｉｃａｌ  ｌｉｃｅｎｓｉｎｇ）と称する異なる解決策には、ライセンシング管理システムへの呼び出しを含むように各プログラムを修正することが含まれる。エンドユーザが、プログラムを開始するたびに、対応する要求が、ライセンシング管理システムに転送される。ライセンシング管理システムによって、そのプログラムの実行が、めいめいのディジタル証明書に組み込まれている許可された使用条件によって示される限度内であるかどうかが検証され、対応する戻りコードがプログラムに供給される。検証の結果が肯定である場合には、プログラムがその実行を継続することができ、そうでない場合には、プログラムは停止を強制される。
【０００７】
しかし、上で説明した解決策は、各プログラムが権利者によって修正されることを必要とする。さらに、この解決策は、非常に厳格であり、異なる要件に簡単には適合できない。テクニカル・ライセンシング技術は、ライセンシング管理システムをサポートするプログラムだけに適用され、異なる製品の使用を制御するには完全に非効率的である。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、上述の短所を克服することである。この目的を達成するために、請求項１に記載の方法が提案される。
【課題を解決するための手段】
【０００９】
短く言えば、本発明は、ディジタル・エンコードされた製品の使用を制御するコンピュータによって実施される方法であって、コンピュータでのディジタル・エンコードされた製品の実行を要求するステップと、前記製品の開始の前に前記実行要求をインターセプトするステップと、前記製品の許可された使用条件を前記実行要求が遵守していることを検証するステップと、前記検証の結果に従って前記製品の開始をイネーブルするか妨げるステップとを含む方法を提供する。
【００１０】
さらに、本発明は、その方法を実行するコンピュータ・プログラム・アプリケーション、このアプリケーションを保管されたプログラム製品、およびディジタル・エンコードされた製品の使用を制御するデータ処理システムも提供する。
【００１１】
本発明による解決策のさらなる特徴および長所は、添付図面に関する、純粋に非制限的な指摘として与えられる、本発明の好ましい実施形態の以下の説明から明瞭になる。
【発明を実施するための最良の形態】
【００１２】
特に図１に関して、本発明を使用することができるデータ処理システム１００が示されている。システム１００に、複数のワークステーション１０５ｗが含まれる。ワークステーション１０５ｗは、一連のサブセットにグループ化され、メータリング（ｍｅｔｅｒｉｎｇ）サーバ１０５ｓが、各サブセットのワークステーション１０５ｗに関連する。メータリング・サーバ１０５ｓおよび対応するワークステーション１０５ｗは、ネットワーク１１０（たとえば、イントラネット）を介して互いに接続される。異なるメータリング・サーバ１０５ｓは、異なるネットワーク１２０（たとえば、インターネット）を介して管理サーバ１１５（リモート位置にインストールされる）と通信する。さらに、管理サーバ１１５は、資産管理システム１２５に接続され（もう１つのネットワーク１２７を介して）、資産管理システム１２５には、ワークステーションおよびそのユーザに関する情報が保管される。
【００１３】
たとえばパーソナル・コンピュータ（ＰＣ）からなる各ワークステーション１０５ｗは、通信バス１３０ｗに並列に接続される複数のユニットによって形成される。詳細に言うと、マイクロプロセッサ（μＰ）１３５ｗによって、ワークステーション１０５ｗの動作が制御され、ＲＡＭ１４０ｗは、マイクロプロセッサ１３５ｗによって作業メモリとして直接に使用され、ＲＯＭ１４５ｗに、ワークステーション１０５ｗのブートストラップ用の基本プログラムが保管される。さらに、複数の周辺ユニットが、（めいめいのインターフェースによって）バス１３０ｗに接続される。具体的には、大容量記憶装置は、磁気ハードディスク１５０ｗおよびＣＤ−ＲＯＭ１６０ｗを読み取るドライバ１５５ｗからなる。さらに、ワークステーション１０５ｗに、入力装置１６５ｗ（たとえば、キーボードおよびマウスからなる）、および出力装置１７０ｗ（たとえば、モニタおよびプリンタからなる）が含まれる。ネットワーク・インターフェース・カード（ＮＩＣ）１７５ｗが、ワークステーション１０５ｗをネットワーク１１０に接続するのに使用される。
【００１４】
メータリング・サーバ１０５ｓ（たとえば、ミッドレンジ・コンピュータからなる）は、同様に、バス１３０ｓ、複数のマイクロプロセッサ１３５ｓ、ＲＡＭ１４０ｓ、およびＲＯＭ１４５ｓによって形成され、メータリング・サーバ１０５ｓには、さらに、ハードディスク１５０ｓ、ＣＤ−ＲＯＭ１６０ｓのドライバ１５５ｓ、入力装置１６５ｓ、出力装置１７０ｓ、およびＮＩＣ１７５ｓ（ネットワーク１１０および１２０にアクセスするための）が含まれる。
【００１５】
同様の考慮事項が、システムが異なるアーキテクチャを有する場合、ワークステーション、メータリング・サーバ、および管理サーバが異なるネットワークで互いに接続される場合、他のネットワークが使用される場合、各ワークステーションまたはメータリング・サーバが異なる構造を有するか異なる構成要素を含む場合、資産管理システムが設けられない場合などにあてはまる。
【００１６】
図２を検討すると、ワークステーションおよびメータリング・サーバの作業メモリ１４０ｗおよび１４０ｓの部分的内容が示されている。情報（プログラムおよびデータ）は、通常は、めいめいのハードディスクに保管され、プログラムが動作中である時に（少なくとも部分的に）作業メモリにロードされ、プログラムは、当初は、ＣＤ−ＲＯＭからハードディスクにインストールされる。
【００１７】
オペレーティング・システム２０５ｗおよびオペレーティング・システム２０５ｓによって、それぞれワークステーションおよびメータリング・サーバのソフトウェア・プラットフォームが提供される。スタック２１０ｗ（ワークステーション側）およびスタック２１０ｓ（メータリング・サーバ側）によって、一緒にネットワーク通信を定義するように働くプロトコル層の組が処理される。インターネットを介する情報の効果的な伝送を保証するために、情報が、暗号化され（セキュリティを保証するため）、ファイヤウォールを通過できるプロトコル（ＨＴＴＰなど）を使用して伝送される。
【００１８】
特にワークステーションを検討すると、オペレーティング・システム２０５ｗに、主モジュール２１５（カーネルと称する）が含まれ、この主モジュール２１５によって、オペレーティング・システムの他の部分が必要とする必須サービスのすべてが提供される。カーネル拡張モジュール２２０によって、一般に使用可能な標準インターフェースを使用して、オペレーティング・システムに機能性が追加される。
【００１９】
実行時エージェント２２５が、バックグラウンドで動作して、ワークステーションでのアプリケーション・プログラム２３０の実行を制御する。実行時エージェント２２５は、メータリング・サーバと情報を交換するために、スタック２１０ｗとインターフェースする。実行時エージェントは、登録処理中にワークステーション上に静かにインストールされる。この登録処理では、ワークステーションのエンドユーザが、関連するメータリング・サーバにホストされるウェブ・ページに接続することによって、エンドユーザ自身を登録する。
【００２０】
実行時エージェント２２５によって、複数のメモリ構造が制御される。具体的に言うと、サーバ・テーブル２３５に、そのワークステーションに関連する可能な代替メータリング・サーバのＩＰアドレスが含まれる（ワークステーションに直接に接続される主メータリング・サーバのほかに、実行時エージェントの構成テーブル内で識別される）。制御カタログ２４０に、ワークステーションでの実行を制御されなければならないプログラムがリストされ、その一方で、内部ログ２４５によって、制御カタログ２４０に含まれないが、ワークステーションで実行されたプログラムがリストされる。さらに、実行時エージェント２２５によって、実行中テーブル２５０への情報の入力が制御され、実行中テーブル２５０には、ワークステーションにおいて現在実行中の、対応する実行許可が与えられたプログラムが（許可を与えたメータリング・サーバの識別子と一緒に）リストされる。実行時エージェント２２５によって、プログラム・インベントリ２５５（メータリング・サーバへの送信用）も生成され、このプログラム・インベントリ２５５には、ワークステーションにインストールされたプログラムに関する情報が含まれる。
【００２１】
メータリング・サーバに移ると、バックグラウンドで動作するライセンシング・エージェント２６０によって、関連するワークステーションが制御される。ライセンシング・エージェント２６０は、ワークステーションおよび管理サーバと情報を交換するために、スタック２１０ｓとインターフェースする。
【００２２】
ライセンシング・エージェント２６０によって、許可カタログ２６５が管理され、許可カタログ２６５には、各プログラムの許可された使用条件に関する情報が含まれ、たとえば、許可カタログ２６５によって、プログラムを実行できるワークステーションの最大処理能力または作業メモリの最大容量、プログラムのライセンス数（同時に実行を許可されるプログラムのインスタンスの最大個数を定義する）、その他の情報が指定される。さらに、ライセンシング・エージェントによって、メータリング・テーブル２７０への情報の入力が制御され、メータリング・テーブル２７０には、ワークステーションで現在実行中の、メータリング・サーバによって実行の許可を与えられたプログラムがリストされる。ライセンシング・エージェント２６０によって、関連ワークステーションでの実行を一般に許可することができる既知のプログラムを含むグローバル・カタログ２７３も管理される。
【００２３】
さらに、ライセンシング・エージェント２６０によって、リポジトリ２７５が管理され、このリポジトリ２７５には、関連ワークステーションに配布される異なる情報（実行時エージェント・コードの最新版、または代替メータリング・サーバのリストおよび制御されるプログラムのリストなど）、またはワークステーションから収集される異なる情報（ソフトウェア使用のリアルタイム・レポートおよびワークステーションにインストールされたプログラムのインベントリ情報など）が含まれる。
【００２４】
同じような考慮点が、プログラムおよびデータが異なる形で構成される場合、他のモジュールまたは機能が設けられる場合、データが同等のメモリ構造に保管される場合、異なる使用条件が想定される場合、情報が異なるプロトコルを使用して伝送される場合、ライセンシング・エージェントがウェブ・サーバに組み込まれる場合などにあてはまる。代替案では、実行時エージェントが、ワークステーションに保管されたログオン・スクリプトによってインストールされるか、ソフトウェア配布によって展開される。
【００２５】
図３〜５からわかるように、一緒に方法３００を構成する一連のルーチンが、ワークステーションおよびメータリング・サーバで実行されて、ワークステーションにインストールされたプログラムの使用が制御される。
【００２６】
具体的には、カーネル拡張モジュールが、ワークステーションのブートストラップ中にロードされる。図３を参照すると、カーネル拡張モジュールによって実施されるルーチンが、ブロック３０２で開始され、ブロック３０４のアイドル・ループでサイクルして、イベントの発生を待つ。プログラムの実行要求が検出される場合に、ブロック３０６〜３０８が実行され、対応する応答メッセージが実行時エージェントによって返される場合に、ブロック３１０〜３１５が実行され、プログラムの終了が検出される場合に、ブロック３１８が実行され、どの場合でも、このルーチンは、その後、ブロック３０４に戻って、新しいイベントの発生を待つ。逆に、ワークステーションがシャットダウンされた場合には、ルーチンは、最終ブロック３２２で終了する。
【００２７】
ワークステーションのブートストラップには、実行時エージェントのロードも含まれ、これによって、ブロック３２４から始まるルーチンが実施される。このルーチンは、ブロック３２６のアイドル・ループでサイクルして、イベントの発生を待つ。実行要求が通知される場合には、ブロック３２８〜３３４が実行され、対応する応答メッセージがメータリング・サーバから受け取られる場合には、ブロック３３６〜３４６が実行され、プログラム終了が通知される場合には、ブロック３４８〜３５０が実行され、タイムアウトが満了した場合には、ブロック３６４〜３７４が実行され、どの場合でも、このルーチンは、ブロック３２６に戻って、新しいイベントの発生を待つ。逆に、ワークステーションがシャット・ダウンされた場合には、このルーチンは、最終ブロック３７５で終了する。
【００２８】
それと同時に、ライセンシング・エージェントが、メータリング・サーバのブートストラップ中にロードされる。図５を参照すると、ライセンシング・エージェントによって、ブロック３７６で開始されるルーチンが実施され、その後、ブロック３７８のアイドル・ループでサイクルして、イベントの発生を待つ。実行要求メッセージが受け取られる場合には、ブロック３８０〜３８６が実行され、終了メッセージが受け取られる場合には、ブロック３８７が実行され、情報がワークステーションから受け取られる場合には、ブロック３８８〜３９０が実行され、検査メッセージが、事前に設定された周期の間に各関連するワークステーションから受け取られない場合には、ブロック３９２〜３９３が実行され、管理サーバから管理メッセージが受け取られる場合には、ブロック３９４が実行され、どの場合でも、このルーチンは、その後、ブロック３７８に戻って、新しいイベントの発生を待つ。逆に、メータリング・サーバがシャット・ダウンされた場合には、このルーチンは、最終ブロック３９６で終了する。
【００２９】
図３に戻ると、エンドユーザが、たとえばめいめいのアイコンをマウスでダブル・クリックすることによって、ワークステーションでのプログラムの実行を要求する時に（ブロック３９７）、カーネルによって、新しいプロセスが開始される。プロセスの開始が、カーネル拡張モジュールに通知され（いわゆるカーネル・フック技法を使用して）、ブロック３０６で、カーネル拡張モジュールによって、その情報が実行時エージェントに報告される。カーネル実行モジュールによって、ブロック３０８でプロセスが中断される。
【００３０】
通知に応答して、実行エージェントによって、ブロック３２８で、プログラムが制御カタログに含まれるかどうかが検証される。そうでない場合には、この方法はブロック３３０に移り、実行時エージェントによって、カーネル拡張モジュールに、プログラムを開始できることが通知される。プログラムは、ブロック３３２で内部ログに追加される。それに応答して、カーネル拡張モジュールによって、プログラムがその実行を開始することをイネーブルするために、ブロック３１２でプログラムに関連するプロセスが再開される。逆に、プログラムが制御カタログに含まれる場合には、ブロック３３４で、実行時エージェントによって、対応する実行要求メッセージ（ワークステーションの処理能力または作業メモリ容量などのプログラムの実行環境を定義する構成情報を含む）がメータリング・サーバに送られる。
【００３１】
図５を参照すると、メータリング・サーバで動作するライセンシング・エージェントは、実行要求メッセージを受け取る時に、ブロック３８０で、プログラムの実行が、許可カタログに保管されている許可された使用条件に従うかどうか（たとえば、実行環境が許可される環境と一致し、実行中のプログラムのインスタンスの数が許容される最大値に達していないかどうか）が検証される。ライセンシング・エージェントは、ブロック３８２で、対応する応答メッセージをワークステーションに返す。その後、ブロック３８４でテストを実行して、実行の許可が与えられたかどうかを判定する。そうである場合には、ライセンシング・エージェントによって、ブロック３８５でプログラムがメータリング・テーブルに追加され、その後、ブロック３８６に進むが、そうでない場合には、直接にブロック３８６に進む。ブロック３８６を検討すると、メータリング・サーバによって、製品の使用可能ライセンスの事前に設定された比率（８０％など）に達した時にシステム管理者に通知の電子メールが送られ、メータリング・サーバが製品のライセンスを使い果たした時にもう１つの通知の電子メールが送られる。
【００３２】
図３に戻ると、実行時エージェントが応答メッセージを受け取るや否や、ブロック３３６でテストを行って、実行の許可が与えられたかどうかを判定する。そうである場合には、この方法は、ブロック３３８（下で説明する）に進む。逆の場合に、実行エージェントが、ブロック３４０で、代替メータリング・サーバがサーバ・テーブルにリストされているかどうかを判定する。１つまたは複数の代替メータリング・サーバが使用可能である場合には、実行時エージェントによって、各代替メータリング・サーバに順番に実行要求メッセージが送られて、上で説明したものと同一の検証が実行され、その後、この方法はブロック３３８に進む。逆に、代替メータリング・サーバが使用可能でない場合には、この方法は、直接にブロック３３８に進む。
【００３３】
ブロック３３８を検討すると、実行時エージェントによって、応答メッセージがカーネル拡張モジュールに転送され、その後、判断ブロック３４４に進む。実行の許可が与えられた場合には、ブロック３４６で、プログラムを実行中テーブルに追加する（逆の場合には、この方法はブロック３２６に直接に戻る）。
【００３４】
カーネル拡張モジュールによって、応答メッセージが受け取られるや否や、ブロック３１０で、実行の許可が与えられたかどうかを判定するテストが実行される。そうである場合には、カーネル実行モジュールによって、ブロック３１２でプログラムに関連するプロセスが、プログラムの実行を開始できるようにするために再開される。逆に、実行の許可が拒否された場合には、カーネル拡張モジュールによって、ブロック３１５で、プログラムの開始を防ぐためにプロセスが打ち切られる。
【００３５】
プログラムの実行が終了される時（ブロック３９８）に、イベントが、カーネル拡張モジュールに通知され、カーネル拡張モジュールによって、ブロック３１８で、その情報が実行時エージェントに報告される。この通知に応答して、ブロック３４８で、実行時エージェントによって、プログラムが実行中テーブルに含まれるかどうかが検査される。そうである場合には、実行時エージェントによって、ブロック３４９で対応する終了メッセージがメータリング・サーバに送られ、ブロック３５０に移り、プログラムが、実行中テーブルから削除される（逆の場合には、この方法はブロック３２６に直接に戻る）。図５を参照すると、ライセンシング・エージェント（メータリング・サーバ側）が、終了メッセージを受け取る時に、プログラムが、めいめいのライセンスを解放するために、ブロック３８７でメータリング・テーブルから削除される。
【００３６】
図４を参照すると、たとえば数分の、タイムアウトが満了した時には、必ず（ブロック３６４）、実行時エージェントが、ワークステーションでのプログラムの実行の許可を与えたメータリング・サーバのそれぞれ（実行中テーブルで示される）に、検査メッセージを送る。この方法は、その後、ブロック３６６に進み、実行時エージェントによって、内部ログ全体を関連するメータリング・サーバに送る。
【００３７】
その後、判断ブロック３６８でテストを行って、より長いタイムアウト（たとえば、数十分の）が満了したかどうかを判定する。そうである場合には、ブロック３７０で、インストールされたプログラムに関する情報を収集するために、実行時エージェントによって、ワークステーションのハードディスクがスキャンされる。ブロック３７２に継続して、そのように収集されたインストール情報（プログラム・インベントリに保管される）が、メータリング・サーバに送られる。ブロック３７４で、ユーザの介入を必要とせずに、実行時エージェントによって、サーバ・テーブル、制御カタログ、または実行時エージェントのコードあるいはこれらの組合せに対するアップグレードが（メータリング・サーバから）ダウンロードされる。
【００３８】
図５を参照する。メータリング・サーバで動作するライセンシング・エージェントに移ると、関連ワークステーションから受け取るすべての情報（内部ログまたはプログラム・インベントリなど）が、ブロック３８８で保管される。メータリング・サーバによって、内部ログが受け取られる時に、この方法では、ブロック３８９で、内部ログにリストされた各プログラムが、グローバル・カタログに含まれるかどうかを検査する。そうである場合には、この方法は、ブロック３９０に進み、プログラムが、ワークステーションに配布される制御カタログおよび許可カタログ（対応する許可される使用条件に関する制限なしに）に追加され、この形で、プログラムの実行の次の要求のすべてが、必ずイネーブルされて、システム管理者による分析のためにプログラムの使用を追跡できるようになる。逆の場合には、この方法は、ブロック３７８に直接に戻る。
【００３９】
ブロック３９２を検討すると、検査メッセージが、事前に設定された期間（たとえば１０分）の間に、一般に関連するワークステーションから受け取られない場合に、このワークステーションで動作するすべてのプログラムが、ブロック３９２でメータリング・テーブルから削除され（めいめいのライセンスを解放するために）、通知の対応する電子メールが、ブロック３９３でシステム管理者に送られる。
【００４０】
さらに、管理メッセージが管理サーバから受け取られる時に、必ず、対応するアクションがブロック３９４で実行される。たとえば、各メータリング・サーバの許可カタログを、管理サーバに保管されたマスタ・カタログから抽出することができ、各許可カタログが、対応するメータリング・サーバに展開される（これによって、ネットワーク状で転送される情報の量が減る）。さらに、管理サーバによって、メータリング・サーバから情報（対応するワークステーションにインストールされた、またはそこで動作する、あるいはその両方のプログラムに関する情報）を収集することができる。管理サーバによって、異なるレポートを作成することができる。詳細には、システム管理者が、製品の使用（開始時刻および終了時刻によってフィルタリングされる）、特定の製品の詳細な使用状況、インストールされ、使用され、ライセンスを交付された製品の比較ビューに関するレポートを要求することができる。セキュリティ・プロファイルも、管理サーバで定義され、その結果、ワークステーションの各エンドユーザが、そのユーザが使用しているプログラムに関する情報だけにアクセスできるようになる。この形で、管理サーバによって、使用状況データ、調達データ、およびインベントリ・データが収集され、管理される単一のリポジトリが実施される。
【００４１】
同様の考慮点が、同等の方法が実行される場合（たとえば、上で説明した動作を並列に実行する複数の並行プロセスを使用する場合）、他の機能が設けられる場合、プログラムの実行が別のプログラムによって要求される場合、実行要求メッセージに異なる情報が含まれる場合、タイムアウト値が異なるかシステム管理者によってカスタマイズできる場合、同等の検査メッセージが定期的にメータリング・サーバに送られる（たとえば、実行中テーブルの対応するレコードを含む）場合、通知の電子メールがシステム管理者に送られない場合などにあてはまる。代替案では、提案される方法が、オーディオおよびビデオの録音・録音物、電子ブック、またはマルチメディア作品など、同等のディジタル・エンコードされた製品の使用の制御にも使用される。
【００４２】
より一般的に、本発明によって、ディジタル・エンコードされた製品の使用を制御するコンピュータ実施される方法が提供される。この方法は、コンピュータでのディジタル・エンコードされた製品の実行を要求するステップから開始され、この実行要求は、製品の開始の前にインターセプトされる。実行要求が、製品の許可された使用条件に従うことが、検証され、製品の開始が、検証の結果に応じてイネーブルまたは防止される。
【００４３】
本発明の解決策を用いると、コンピュータで動作するプログラムを、リアルタイムで制御できるようになる。この形で、非常に有効なライセンシング検証が、低コストで実行される。
【００４４】
提案される方法の動作は、極めて安全である。というのは、プログラムが、開始そのものを妨げられるため、既にデータを処理しており潜在的に危険な動作を実行している間に強制終了されるようなことはないからである。さらに、プログラムの保全性が、許可の拒否によって影響されず、その結果、プログラムの実行を、後に簡単にイネーブルできる（コードを再インストールする必要なしに）。
【００４５】
本発明の解決策によって、テクニカル・ライセンスによるものまたはそうでないもののいずれかの、すべてのタイプのプログラムの使用を制御する統合された解決策がもたらされる。したがって、許可された使用条件の実施を制御する特殊な論理を含まないプログラムであっても、制御することができ、それと同時に、提案される方法によって、ライセンシング管理システムを活用する既存の解決策もサポートされる。
【００４６】
上で説明した本発明の好ましい実施形態によって、さらなる利益も提供される。
【００４７】
具体的には、実行要求が、めいめいのプロセスの開始を検出することによってインターセプトされ、プロセスが、中断され、検証の結果に従って再開されるか打ち切られる。
【００４８】
この手順は、非常に単純であると同時に、非常に有効である。
【００４９】
有利なことに、オペレーティング・システムは、プロセスの開始をカーネル拡張モジュールに通知し、カーネル拡張モジュールは、実行要求を、ワークステーションで動作する実行時エージェントに報告する。それと同時に、カーネル拡張モジュールは、プロセスを中断する（実行要求に対する応答を待つ）。
【００５０】
カーネル拡張モジュールおよび実行時エージェントを設けることによって、本発明の解決策の実施形態が、プラットフォーム独立になり、あらゆる種類のオペレーティング・システムに簡単に移植可能になる。
【００５１】
本発明の好ましい実施形態では、実行要求が、メータリング・サーバによって処理され、メータリング・サーバによって、それに関連する複数のワークステーションが制御される。
【００５２】
提案された解決策を用いると、ライセンスの非常に柔軟な管理が可能になる。たとえば、ワークステーションでの各プログラムのインスタンスの最大個数の並行使用を、非常に単純な形で単一の点から制御することができる。
【００５３】
有利なことに、関連するサーバが、すべての使用可能なライセンスを既に許可している場合に、ワークステーションは、代替メータリング・サーバに連絡することを許可される。
【００５４】
したがって、各製品の使用可能なライセンスの総量を、組織内のすべてのワークステーション（異なるメータリング・サーバによって制御される場合でも）の間で共用することができる。
【００５５】
しかし、本発明の解決策は、異なる形で実行要求をインターセプトし（たとえば、エンドユーザ・アクションを監視するため）、カーネル拡張モジュールまたは実行時エージェントだけを使用し、ワークステーションによって直接に実行要求を処理し（メータリング・サーバなしで）、ワークステーションに代替メータリング・サーバに連絡させずに、実行される。
【００５６】
制御カタログに、計量されるプログラムがリストされることが好ましい（他のプログラムの実行は、想定される方法によって影響されない）。
【００５７】
この特徴によって、システム管理者によってカスタマイズされたライセンシング・ポリシを実施することが可能になる。
【００５８】
制御カタログに含まれないプログラムは、必ず実行を許可されるが、内部ログに追加され、内部ログは、定期的にメータリング・サーバに送られる（ワークステーションの許可カタログおよび制御カタログを更新するために）。
【００５９】
異なるワークステーションによって供給される内部ログを用いると、新しい製品の使用を簡単に追跡できるようになる（使用されるや否や、メータリング・サーバに報告されるライセンス交付されないプログラムと共に）。
【００６０】
代替案では、制御カタログが設けられず（必ず制御されるすべてのプログラムについて）、制御カタログに含まれないプログラムの実行は、メータリング・サーバに即座に通知され、許可カタログおよび制御カタログが、内部ログに従って異なる形で更新される（グローバル・カタログの使用もなしで）か、制御カタログにリストされたプログラムだけが、ワークステーションで実行される（許可されるならば）。
【００６１】
さらに、プログラムが実行を終了する時に、終了メッセージが、ワークステーションから、めいめいの実行許可を与えたメータリング・サーバに送られ、そのプログラムは、実行中テーブル（ワークステーション側）およびメータリング・テーブル（メータリング・サーバ側）から削除される。
【００６２】
この手順によって、プログラムが実行を終了するや否やの対応するライセンスの直接解放が保証され、ライセンスは、他のワークステーションによる使用のために即座に使用可能になる。
【００６３】
有利なことに、各ワークステーションは、実行の許可を与えためいめいのメータリング・サーバに検査メッセージを送り、ワークステーションからの検査メッセージが事前に設定された期間の間に受け取られない場合に、メータリング・サーバは、そのワークステーションによって使用されたライセンスを自動的に解放する。
【００６４】
この形で、たとえばネットワーク問題のゆえに、ワークステーションがライセンスを解放できない場合に、ライセンスが、メータリング・サーバ側で自動的に解放される。
【００６５】
しかし、本発明の解決策は、異なる形での各プログラムの終了の検出（たとえば、各メータリング・サーバの制御下でのポーリング手順）によって、検査メッセージの定期的伝送さえなし（ライセンスが、毎晩など、事前に設定された期間の後に自動的に解放される）で、適切に実施される。
【００６６】
有利なことに、各ワークステーションは、定期的に、インストール情報を収集し、その情報が、関連するメータリング・サーバに送られる。
【００６７】
想定された特徴によって、各ワークステーションにインストールされた製品を記憶し、監視することが可能になる（使用されないものであっても）。
【００６８】
本発明の好ましい実施形態では、単一の管理サーバによって、中央から、複数のメータリング・サーバが制御される。
【００６９】
提案された３ティア・アーキテクチャ（ワークステーション、メータリング・サーバ、および管理サーバ）によって、集中化された点からの非常に柔軟なライセンスの管理が可能になる。
【００７０】
たとえば、管理サーバによって、すべてのワークステーションに関するプログラム使用およびインベントリ情報に関する履歴レポートを提供するために、すべてのメータリング・サーバから情報が収集される。さらに、管理サーバによって、集中化された点からライセンシング情報を維持するための管理インターフェースが提供される。
【００７１】
したがって、過剰応諾状態（未使用の製品に関して使用可能なライセンスが多すぎる場合）を検出することによって、費用を節約することが可能であり、あるいは、潜在的な侵害状態を事前に検出する（ライセンス不足になる前に訂正措置を講じるために）ことが可能である。
【００７２】
提案されたアーキテクチャは、高いスケーラビリティを特徴とする。たとえば、小さい会社では、１つのメータリング・サーバと１つの管理サーバだけが必要である（同一のコンピュータにインストールすることもできる）。逆に、大きい会社では、複数のメータリング・サーバ（単一の管理サーバによって制御される）を、１つまたは複数のネットワーク内に設けることができる。その一方で、管理サーバを、リモート位置にインストールすることができ、管理サーバによって、異なる施設のメータリング・サーバを制御することができる（たとえば、他の会社にソフトウェア管理サービスを提供する組織で）。
【００７３】
代替案では、インストール情報が、要求時に収集され、提案される方法が、プログラムの実行だけを制御する（インストールは制御しない）、あるいは、システムが、異なるアーキテクチャを有する（管理サーバなしも可能である）。
【００７４】
有利なことに、本発明による解決策は、ＣＤ−ＲＯＭで提供されるコンピュータ・プログラム・アプリケーションを用いて実施される。このアプリケーションは、各ワークステーションおよび関連するメータリング・サーバにインストールされるプログラムからなる。
【００７５】
代替案では、プログラムが、フロッピディスクで提供されるか、ハードディスクに事前にロードされるか、他のコンピュータ可読媒体に保管されるか、ネットワーク（通常はインターネット）を介してワークステーションおよびメータリング・サーバに送られるか、ブロードキャストされるか、より一般的に、作業メモリに直接にロード可能な他の形で提供される。しかし、本発明による方法は、ハードウェア構造を用いて、たとえば半導体材料のチップに集積されて、実行される。
【００７６】
当然、ローカル要件および特定の要件を満足するために、当業者は、上で説明した解決策に多数の修正および変更を加えることができ、そのすべてが、請求項によって定義される本発明の保護の範囲に含まれる。
【図面の簡単な説明】
【００７７】
【図１】本発明の方法を使用することができるデータ処理システムを示す基本ブロック図である。
【図２】本発明のシステムに含まれるワークステーションおよびメータリング・サーバの作業メモリの部分的内容を示す図である。
【図３】ソフトウェア・プログラムの使用を制御する方法の論理を示す流れ図である。
【図４】ソフトウェア・プログラムの使用を制御する方法の論理を示す流れ図である。
【図５】ソフトウェア・プログラムの使用を制御する方法の論理を示す流れ図である。
【図１】
2005507519.tif 000003
【図２】
2005507519.tif 000004
【図３】
2005507519.tif 000005
【図４】
2005507519.tif 000006
【図５】
2005507519.tif 000007
【国際公開パンフレット】
2005507519.tif 000008
2005507519.tif 000009
2005507519.tif 000010
2005507519.tif 000011
2005507519.tif 000012
2005507519.tif 000013
2005507519.tif 000014
2005507519.tif 000015
2005507519.tif 000016
2005507519.tif 000017
2005507519.tif 000018
2005507519.tif 000019
2005507519.tif 000020
2005507519.tif 000021
2005507519.tif 000022
2005507519.tif 000023
2005507519.tif 000024
2005507519.tif 000025
2005507519.tif 000026
2005507519.tif 000027
2005507519.tif 000028
2005507519.tif 000029
2005507519.tif 000030
2005507519.tif 000031
2005507519.tif 000032
2005507519.tif 000033
2005507519.tif 000034
2005507519.tif 000035
2005507519.tif 000036
【国際公開パンフレット（コレクトバージョン）】
2005507519.tif 000037
2005507519.tif 000038
【国際調査報告】
2005507519.tif 000039
2005507519.tif 000040
2005507519.tif 000041