(57)【要約】  選択されたプログラムの期待される動作を妨害する可能性のある競合するアプリケーションを検出するシステムおよび方法である。競合は、選択されたプログラムの動作を妨害する前に管理する。
2008537616.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、複数の種々の装置と通信する機器を含み、前記装置は種々のプログラムを実行し、前記機器は少なくとも１つのプログラムと別のプログラムとの間の競合を反復プロセスにより識別して解消する、システム。
【請求項２】
前記機器は前記複数の装置のメンバーに競合管理サービスを提供するサーバを含む、請求項１記載のシステム。
【請求項３】
前記複数のメンバーの少なくともいくつかは前記機器から分散している、請求項２記載のシステム。
【請求項４】
前記機器は競合するプログラムのリストを保持する、請求項１記載のシステム。
【請求項５】
前記機器はユーザ・インターフェースと、ユーザの評価のために前記インターフェースを介して競合に関する情報を提示する回路とを含む、請求項１記載のシステム。
【請求項６】
前記機器は、検出された競合に応じて、別のプログラムを一時停止させまたは終了させて前記少なくとも１つのプログラムを実行できるようにする、請求項１記載のシステム。
【請求項７】
前記機器は前記検出された競合がないときは一時停止したプログラムを再開する、請求項６記載のシステム。
【請求項８】
前記反復プロセスは、実行プロセスの列挙、実行可能なプロセスの探索、選択されたタイトルの列挙、サービスの列挙、選択された位置内に記憶された項目の探索または識別、資源使用の評価、または選択されたプロセスの探索の実行の少なくとも１つを含む、請求項１記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ・プログラムの実行を管理するシステムおよび方法に関するものである。より詳しく述べると、本発明はプログラムの間の競合を管理するシステムおよび方法に関するものである。
【背景技術】
【０００２】
コンピュータ・システムはユーザが期待する複雑な機能を実行する複数のプログラムまたはソフトウエアを含む。プログラムは、一般に基本入出力システム（ＢＩＯＳ）、オペレーティング・システム（例えば、Ｗｉｎｄｏｗｓ（登録商標））、および１つ以上の特定の機能を実行するための複数のアプリケーション・プログラムを含む階層に従う。これらのプログラムはそれぞれ資源を必要とし、かかる資源に対する競合する要求を管理することは最近のオペレーティング・システムの主な機能である。しかし場合によっては、アプリケーションの間に競合が発生して、１つ以上のソフトウエア・アプリケーションが期待通りに機能しないことがある。なぜなら、同じＰＣ上に常駐する他のアプリケーション（または複数のアプリケーション）が目的のソフトウエア・アプリケーションを妨害することがあるからである。
【０００３】
分かりやすくするために、ユーザが走らせようとするアプリケーションまたはクライアントをここでは友好的アプリケーション（ｆｒｉｅｎｄｌｙ  ａｐｐｌｉｃａｔｉｏｎ：ＦＡ）と呼び、このＦＡの性能を妨害するアプリケーションまたはクライアントをここでは競合するアプリケーション（ｃｏｎｆｌｉｃｔｉｎｇ  ａｐｐｌｉｃａｔｉｏｎ：ＣＡ）と呼ぶことにする。プログラムが互いに妨害する理由はいろいろある。かかる妨害が起こる理由は、
（ａ）  別のソフトウエア・アプリケーションおよび／またはドライバがハードウエア資源またはＰＣ上のポートを使用しようとしてＦＡと争うため、
（ｂ）  ウイルスまたは他の有害なコードなどの望ましくないアプリケーションが、ＰＣが提供する保護をくぐり抜けてＰＣに侵入するため、
などである。
【０００４】
第１のカテゴリは、後でインストールされたソフトウエアが、ＦＡが提供する機能と同じ機能を含むときに特に起こり得る。認識されるように、同じ機能はＦＡおよび後でインストールされたプログラムのそれぞれの機能の小さな一部分だけである場合もある。必ずしも必要ではないが、ＣＡは新たにインストールされたハードウエアに関連することがある。コンピュータ・ウイルスまたは同様の有害なコードは同様にして動作することがある。
【０００５】
同様に重要であるが、ＦＡが開発されまたは展開された後に新たにＣＡが導入されたことにＦＡは気付かないことがある。その結果、かかるＣＡが存在することはエンド・ユーザにとって非常に厄介なものになり得る。ＦＡの提供者にとって主なサービスの中断やサポートの重荷になることは言うまでもない。
【０００６】
したがって、ＦＡの期待される動作を妨害するＣＡを検出できるシステムおよび方法が常に必要になる。更に、既存のウイルス検出および保護のソフトウエア・システムをくぐり抜ける有害なアプリケーションを検出して不能にするシステムまたは方法が必要である。
【実施例】
【０００７】
本発明の実施の形態は多くの異なる形をとってよいが、ここでは特定の実施の形態を図示して詳細に説明する。なぜなら、この開示は本発明の原理の例でありまたこれを実現する最良のモードであると考えられるからである。ただし、本発明はここに示す特定の実施の形態に限定されるものではない。
【０００８】
本発明の１つの態様では、エンド・ユーザの設備上のＣＡのリストを更新する機構を提供する。或る関連する態様は、新たにインストールされた各ＣＡについてＦＡに「通知する」機能を提供する。或る別の態様は、ＦＡとＣＡとの間に起こり得る競合を解消するシステムおよび方法を提供する。
更に、本発明の或る実施の形態では、識別可能なＣＡを発見して解消することによりかかるサービスまたは製品の混乱の発生を防ぐシステムおよび方法を提供する。各ソフトウエアは選択された製品の中に組み込んでよい。
【０００９】
図１で、システム１０は実行ファイルまたはドライバ・プログラムなどの少なくとも１つのクライアント・ソフトウエア・アプリケーション１４（以後、これを友好的アプリケーション（ＦＡ）と呼ぶ）を持つコンピュータ１２を含む。１つの形態では、ＦＡ１４は本発明に係る競合検出プログラム１６を内蔵する。または、後で詳細に説明するが、競合検出プログラム１６はＦＡ１４とは別の独立のプログラムでよい。
本発明の或る実施の形態では、プログラム１６は、グラフィカル・ユーザ・インターフェース１６ａを介してエンド・ユーザＥＵに競合解消勧告を送ってよい。その場合は、後で説明するように、エンド・ユーザＥＵは最終的な解消の決定を行ってよい。
【００１０】
本発明は、システム１０のユーザが新たなクライアントまたはソフトウエア・アプリケーション（ここでは競合するアプリケーション（ＣＡ）１８と呼ぶ）を導入しまたは追加する場合を扱う。ＣＡ１８とＦＡ１４とは、システム１０の一部であるコンピュータ１２の資源にアクセスしようとして争う。特に図示しないが、少なくともいくつかの場合に、複数のＦＡ１４−１，２，．．．，ｎがユーザのコンピュータ上に常駐するのと同様に、他のＣＡがコンピュータ１２上に常駐してよい。更にコンピュータ１２は、コンピュータ１２の資源にアクセスする必要のある他のプログラム、ドライバ、ルーチン、またはアプリケーション２２−１，．．．，ｎを含むコンピュータ２０に結合してよい。また、システム１０の一部であるコンピュータ２０上に他のＣＡ１８が常駐してよい。
【００１１】
また、コンピュータ１２および２０はサーバ３０に結合してよい。サーバ３０は、競合検出および解消のサービス、ならびに競合の定義について最新の更新を提供する競合検出クライアント３２を含んでよい。コンピュータ１２上に競合検出クライアントまたはプログラムが常駐していない実施の形態では、コンピュータ１２はサーバ３０で利用できる資源３２からその競合検出サービスを受ける。更に、サーバ３０は必要に応じて、コンピュータ１２上に常駐する競合検出プログラム１６に、またはサーバ３０と対話する他のコンピュータ上に常駐する他の独立クライアントに、更新を提供してよい。
【００１２】
クライアント３２がシステム１０または他のプロセッサ上に常駐する他のプログラムに競合管理サービスを提供する実施の形態では、サーバ３０は、監視ユーザまたはマネージャＳＵがクライアント３２と対話するためのグラフィカル・ユーザ・インターフェース３２ａを内蔵してよい。監視ユーザＳＵはマネージャ３２からの勧告またはその他の情報に基づいて行動し、１つまたは複数のプロセッサ上の１つ以上の競合するプログラムまたはウイルス・タイプのプログラムの停止を命じてよい。
【００１３】
動作中に、或るＦＡが或る時点で他のＦＡに対してＣＡになることがある。これは、ユーザまたはシステム・プロバイダが知っているデータに基づいて手動で、または後で述べる種々の検出技術の結果として自動的に、起こり得る。例えば、プログラム１６または３２などの本発明の競合マネージャを呼び出すアプリケーションが必要とするデータおよび／または資源を前のＦＡが使い始めると、検出技術は前に友好的であったアプリケーションを競合するアプリケーションとして検出することがある。これに応じて、コンピュータ１２上に常駐する検出プログラム１６はシステム１０の資源を要求する新たなＦＡに関してこのＦＡをＣＡとして扱う。システム１０は、ＦＡ１４をＣＡ１８として扱いまたシステム資源をこれに従って割り当てるよう検出プログラム１６に命じる。
【００１４】
上に示したように、コンピュータ・システム上にインストールされた種々のソフトウエア・アプリケーションまたはクライアントはそのシステムの資源を求めて争う。したがって、一括したハードウエアの一部としてまとめられた正当なアプリケーションまたはクライアントが、場合によってはＣＡと見なされることがある。ＣＡの複雑さのレベルに従って、本発明のシステムはＣＡを処理する複数の方法を提供することができる。
本発明の１つの実施の形態では、ＣＡであるアプリケーションまたはクライアントを単に終了させてよい。別の実施の形態では、ＣＡを「一時停止」モードにする。
【００１５】
更に別の実施の形態においてそのアプリケーションが他のアプリケーションと対話できるようにする一組のＡＰＩを備えている場合は、本発明の実施の形態はＣＡを休止状態に切り換えて、ＣＡがハードウエア資源のアクティブ制御を行わなくする。競合状態が存在しなくなると、システムはＣＡを元の状態に戻す。ＦＡが終了／存在すると、またはユーザがそれを希望すると、ＣＡは元に戻る。
本発明の１つの実施の形態では、検出プログラム１６はコンピュータ１２上に常駐する別個のまたは独立のクライアントまたはプログラムとして形成される。別の実施の形態では、検出プログラム１６はコンピュータ１２に後で追加されたプログラムまたは装置の一体化した部分であって、ＦＡの一部である。
【００１６】
以下の説明はＣＡ１８の検出について述べる。本発明の教示では、競合のタイプを決定するための種々の方法がある。競合するアプリケーションを識別するのに任意の数または組合せの以下の方法を用いてよい。
１．  プロセス実行ファイル（Ｐｒｏｃｅｓｓ  Ｅｘｅｃｕｔａｂｌｅ）による検出：  プロセス実行ファイル名（すなわち、ｓｔａｒｔ．ｅｘｅ）を明示的に指定する。これは後で更新できる。システム内の実行中のプロセスを列挙することにより、競合マネージャは一致するプロセスを識別することができる。
２．  部分的プロセス実行ファイルによる検出：  部分的実行ファイル名（すなわち、＊ｓｔａｒｔ．ｅｘｅ）を用いて検出を行う。
【００１７】
３．  プロセス位置による検出：  システム上の実行ファイルの位置（すなわち、Ｃ：＼Ｐｒｏｇｒａｍ  Ｆｉｌｅｓ＼Ｃｉｓｃｏ＼Ａｉｒｏｎｅｔ）を用いて検出を行う。
４．  部分的プロセス位置による検出：  システム上の実行ファイルの部分的位置（すなわち、Ｃｉｓｃｏ＼Ａｉｒｏｎｅｔ）を用いて検出してもよい。
５．  プロセス・タイトルによる検出：  システム上の全ての窓ハンドル（ｗｉｎｄｏｗ  ｈａｎｄｌｅｓ）を列挙し、窓の名を既知のＣＡ窓の名と比較して検出を行ってよい。
６．  部分的プロセス・タイトルによる検出：  タイトル窓の部分的ストリング・マッチング（ｐａｒｔｉａｌ  ｓｔｒｉｎｇ  ｍａｔｃｈｉｎｇ）を行うことにより検出してもよい。これは、ほとんどのＣＡがその窓タイトル内に可変内容を有するときに特に有用である。
【００１８】
７．  サービス名による検出：  サービス名によりサービスを列挙して識別し、少なくともいくつかの場合について既知のＣＡサービス名とのマッチングを行う。このような競合するサービスは手動のテストと呼出しアプリケーションが用いる資源の知識とにより識別してよい。
８．  登録位置による検出：  既知の競合する登録値の明示的な探索および識別。
９．  ＡｕｔｏＳｔａｒｔ位置による検出：  種々のオペレーティング・システムのＡｕｔｏＳｔａｒｔ位置内の複数の位置内に記憶されている項目の明示的な探索および識別。
【００１９】
１０．  プロセス・データ活動化（Ｐｒｏｃｅｓｓ  Ｄａｔａ  Ａｃｔｉｖａｔｉｏｎ）による検出：  システムはランタイムに、特定のシステム・ハードウエアまたはソフトウエア資源を使用するときに競合する可能性のある種々のサービス、実行ファイル、およびその他のプログラムを認識する。一例として、かかる検出はＣＯＭポートなどの特定の資源を監視することにより行ってよい。そのポートが活動化すると、そのポートを監視するプロセスは、プロセス当たりのＣＰＵの使用やプロセス当たりのオープン・ハンドルを含む種々の項目を同時に監視することができる。更に、監視プロセスはオペレーティング・システムに問い合わせてその特定のハードウエア・ポート（Ｈａｒｄｗａｒｅ  Ｐｏｒｔ）（例えば、ＣＯＭポート）へのアクセスを要求した特定のプロセスを識別することもできる。この情報を用いて、そのプロセス内で実行中のアプリケーションを決定し、これにより十分な情報を収集してエンド・ユーザにそれを知らせ、エンド・ユーザが十分理解して、必要であればユーザがそのアプリケーションの終了を決定できるようにしてよい。
【００２０】
ハードウエア・ポートの使用についての直接情報を検索するとき、２つの検出方法を用いてよい。１つの検出方法はＯＳによる資源割り当てを用いる。基礎となるＯＳに、現在ポートをアクセス中のプロセスを問い合わせる。別の方法として、ハンドル割り当て（ｈａｎｄｌｅ  ａｓｓｉｇｎｍｅｎｔ）を確立することにより検出してよい。問題のポートを現在用いているアクセス・ハンドルを検索してよい。この時点で、プログラムはプロセス毎に全ての所有するハンドルのリストを要求してよい。所有するプロセスはこれらの２つの値のマッチングを行うことにより識別することができる。
【００２１】
ハードウエア・ポート以外の資源およびプロセスについては、ＯＳはどのプログラムまたはプロセスがその項目へのアクセスを要求したかを判定できることがある。その場合は、資源の活動化に関連するプロセッサ使用の変化および他の統計的方法に基づいて判定を行ってよい。用いる方法に関わらず、検出プログラムはこの厄介な資源を識別して、ターゲット資源がデータを受動的（ｐａｓｓｉｖｅｌｙ）に送るよう誘導することによりその資源を使用させる。ハードウエア資源の場合は、これは標準のＯＳアクセス機構により装置との間でデータを積極的に送ること（ａｃｔｉｖｅ  ｔｒａｎｓｍｉｓｓｉｏｎ）を含む。ソフトウエア資源の場合は、これは一般に資源を活動化させる明示的な試行を含む。このアクセスの試行中は、本発明の競合マネージャは各プロセス内の活動を監視する。アクセス／活動化機構を用いるときは活動のスパイク（ａｃｔｉｖｉｔｙ  ｓｐｉｋｅｓ）を有するプロセスを識別することにより、競合しそうなアプリケーションを決定するための勧告を与えてよい。この時点で、競合マネージャは競合を自動的に停止させるか、または行った選択を確認するかまたは取り消すようエンド・ユーザＥＵに指示してよい。ここに述べた少なくともいくつかの技術について統計的方法により識別を行ってよいので、本発明の検出プログラムは絶対的な事実ではなく或る程度の信頼度を持つ勧告をエンド・ユーザＥＵに提示するようにしてよい。勧告を行うと、エンド・ユーザＥＵは一般に最終的な決定を行う。
【００２２】
１１．  決定論的プロセス選択による検出：  プログラム１６または３２などの競合マネージャは全てのプロセスの組織的探索を行って、相互運用性の問題が起こらなくなるまで、各ＣＡを一度に１つずつ停止し、他方で問題の資源へのアクセスを試行してよい。ＣＡが分離されるとそれに印をつけて、上に述べた選択肢１−９を用いて自動的に停止してよい。
【００２３】
上に示したように、全てまたは任意の数の上述の検出方法を検出プログラム内に組み込んでよい。このように、検出プログラムが種々の検出基準を用いてＣＡを探すとき、ＣＡとして識別された１つのプログラムが１つ以上の検出基準によりＣＡとして識別される可能性が高い。なぜならこのＣＡは複数の検出基準に適合するからである。したがって、１６または３２などの検出プログラムは、停止やその他の各ＣＡの機能に影響を与える操作を行う前にチェックして、本発明の他の検出プロセスなどによりすでに操作が行われていないことを確認することが好ましい。
【００２４】
本発明の少なくともいくつかの実施の形態では、競合および種々のＣＡに関する情報は、関連するＣＡを、論理的でデータの保有者に理解しやすいグループにまとめたフォーマットで記憶してよい。
代表的なアプリケーション情報は種々のデータ・フォーマットで（例えばＸＭＬファイルを用いて）記憶してよい。情報は、名前、プロセスＥＸＥ、技術、ターゲット・オペレーティング・システムなどを含んでよく、制限はない。
【００２５】
展開または分散するのに用いる項目により、ＣＡをこれらの区分にグループ化してよい。これらは同じ表題でグループ化して、複数の項目が単一の現実の項目に関連づけられていることをエンド・ユーザＥＵが容易に識別できるようにしてよい。
１つの実施の形態では、本発明の競合するクライアント・サーバ（ＣＣＳ）（サーバ３０など）は、更新データが要求されたらすぐ更新データをクライアントに送るようプログラムしてよい。認識されるように、ＣＣＳは単に機能性の便利な参照先であって、別個のサーバは必要ない。
【００２６】
むしろＣＣＳは、プログラム１６または３２などの競合マネージャ機能にデータを供給するサーバ３０などの任意のバックエンド・サーバの単なる一例である。また認識されるように、本発明の多くの態様を正常に作動させるのに、かかるサーバ機能は全く必要ない。
アプリケーションが競合のリストを時間と共に更新したいときは、いつでも競合クライアント・サーバを用いることができる。競合の静的なリストを有するように特定の実施の形態が設計されている場合は、サーバは必要ない。更に、上述の検出技術１０および１１を用いるときは、サーバを用いて、１つのエンド・ユーザＰＣ／コンピュータから得た情報を、更新データを得たい全ての他のＰＣ／コンピュータと共用してよい。これにより、このシステムは学習し、これを時間と共に他と共用することができる。
【００２７】
別の実施の形態では、複数の競合する項目について必要な情報を符号化することにより、ＣＣＳは競合マネージャを持つシステムを更新するために情報を送ることができる。ターゲット・オペレーティング・システムが各競合項目に印をつけると、呼出しアプリケーションはこれを用いて、どの競合グループを解消する必要があるか識別する。例えばアプリケーションは、現在の装置またはシステム上のグループＸに関する全ての競合を解消することを要求してよい。
【００２８】
図２は１つの実施の形態の動作を示す。この場合、検出プログラムはＦＡの一部であり、またはここで埋込み検出プログラムと呼ぶことがある。ＣＡとＦＡとの間の資源の競合を検出して解消するプロセスは、ＦＡを開始または実行するステップ２００で始まる。
ステップ２０２で、呼出しアプリケーションは競合するアプリケーションのチェックをいつ行うか、または行うかどうかを決定する。例えば、この実施の形態は競合するアプリケーション・データのデータベースを含むが全ての実施の形態に必要ではない場合に、これは特に有用である。チェックしない場合は、プロセスはステップ２２０で示すＦＡの通常の流れに進む。
【００２９】
しかし競合を評価するときは、プロセスはステップ２０４に進んで、上に述べた種々の検出基準を用いて、競合する項目またはＣＡを検出する。次にプロセスはステップ２０６に進み、例えば上に述べた方法１−１０を用いて、解消する必要のあるＣＡを識別する。
全てではないがいくつかの実施の形態では、ＣＡを解消する順序に優先順位をつけてよい。手動によりまたは開発者と相談することにより競合するアプリケーションにリバース・エンジニアリングを行うなどして、全ての競合するアプリケーションの詳細が分かると、優先順位を正しくつけることができる。
【００３０】
ステップ２０８で、競合検出基準に関連するプロセスに従って最初の識別された競合を解消する。検出プログラムはオペレーティング・システムのアプリケーション・マネージャに信号を送り、競合するプロセスを終了するよう要求する。これにより、アプリケーション・マネージャはＣＡを停止し、システム資源は自由に使えるようになり、ＦＡは動作を継続することができる。
その検出基準に関連する競合解消法が適用されると、プロセスはステップ２１０に進んで、競合が解消されたかどうか判定する。解消されない場合はプロセスはステップ２０６に戻り、別の解消法により競合の解消を試みる。このプロセスは上に述べたようにステップ２０８から２１０に進む。その競合についての各競合解消法が適用されるまでこのプロセスは続く。
【００３１】
競合の解消に成功するとプロセスはステップ２１２に進み、競合するアプリケーションのために再開情報を保存すべきかどうか決定する。ステップ２１２でＣＡに関連する再開情報を記憶するので、ＦＡがシステム資源を必要としなくなったときにＣＡアプリケーションをその現在の状態から再開することができる。
ステップ２１４で、各競合が解消されたかどうか判定する。全ての競合が解消された場合は、プロセスはステップ２２０に進む。そうでない場合はプロセスはステップ２０６に戻り、次の競合アプリケーションを選択して処理する。認識されるように、ステップ２０４は１つ以上のＣＡを含んでよく、ステップ２０６−２１４はそのリストの中のＣＡ毎に実行する。このように、ステップ２１４でまだ停止されていない別のＣＡをこのリストが含む場合は、本発明のプロセスはステップ２０６に戻る。
【００３２】
認識されるように、所定のＦＡの通常の流れでは、ＦＡプロセスが通常の終了に到達する前に、いくつかのＣＡはＦＡの通常の流れの中間状態で再開することができる。このような場合は、２２０でのＦＡの通常の流れの後で、競合検出プログラムはシステム資源に信号を送り、ステップ２２２で、停止されたまたは解消されたＣＡを再開する必要があるかどうか判定する。必要がない場合はプロセスは通常の流れを続けて、ステップ２３０で通常のプログラム終了に至る。
再開する必要のあるＣＡがある場合は、ステップ２２４で、検出プログラムは再開すべきＣＡを選択して再開ループに入る。ステップ２２６で、システムはメモリから再開データを検索し、ステップ２２８で、前に影響を受けたＣＡを再開する。認識されるように、この再開の性質はそのＣＡに適用された特定の競合解消法に従って変ってよい。
【００３３】
ＦＡの通常の終了の後に初めて再開するＣＡもある。このようなＣＡでは、ステップ２３０におけるＦＡの通常の終了の後、ステップ２３２で検出プログラムは停止したＣＡがあるかどうか判定する。ない場合は、２４０でＦＡは終了する。再開する必要のあるアプリケーションがある場合は、ステップ２３４で競合検出プログラムは再開ループを開始する。ステップ２３６で、システムはメモリから再開情報を検索する。ステップ２３８で、競合する項目を再開し、システム資源にアクセスすることができる。次にプロセスはＦＡの終了に進む。
【００３４】
次に図３の別の実施の形態では、競合するアプリケーション・マネージャの全体の概念は、例えばプログラム３２が用いるような独立のサービスまたは外部実行ファイルとして実行してよく、これにメッセージの伝送または任意の他の標準的な通信手段を用いる外部要求者が増加される。これにより、アプリケーション管理のための単一のリポジトリを全てのシステム項目にわたって共用することができる。したがってかかる実施の形態では、プログラム３２などの競合検出プログラムはシステムのオペレーティグ・システムに対して独立のまたは外部のアプリケーションである。この実施の形態は、例えばアンチウイルス・ソリューションなどを含む広い応用を有する。
【００３５】
プロセスはＦＡまたはプログラムを開始または実行するステップ３００で始まる。ステップ３０２で、検出プログラムがＦＡとＣＡとの間の競合を検出したか、したがって競合するアプリケーションまたは他のタイプのプログラムの停止または一時停止を要求したかどうか判定する。要求がない場合は、プログラムは３２０で通常のプログラムの流れを続け、停止または一時停止が必要なＣＡはない。
検出プログラムがＣＡの停止を要求する場合は、停止プロセスを開始する一方で通常のプログラムを続けてよい。または、検出プログラムがＣＡの停止を要求する場合は、停止プロセスが完了する一方で通常のプログラムを一時停止してよい。
【００３６】
ステップ３０４で、検出プログラムはシステムに信号を送り、競合を停止または一時停止すべきかどうか判定する。ＣＡを停止または一時停止できない場合は、プロセスはステップ３０２に戻り、競合するアプリケーションまたはプログラムを停止または一時停止するという次の要求を待つ。
他方で、競合するアプリケーションを停止または一時停止してよいと判定した場合は、ステップ３０６で、上に述べた例示の方法１−１０に従って競合するプログラムを検出する。ステップ３０８で、ＣＡに関連する各競合を識別する。
【００３７】
ステップ３１０で、競合検出プログラムは競合を解消する。利用可能な情報に依存して、競合を解消するのに種々のステップを行ってよい。例えば、ＣＡを休眠させるなどして、その後に競合を起こさない状態にしてよい。ステップが単に停止する以上のことを必要とする場合は、かかるステップはそのＣＡに特有のものである。
ステップ３１２で、競合検出プログラムは競合の解消に成功したかどうか判定する。競合の解消に成功した場合は、ステップ３１４で再開データをメモリに保存し、ステップ３１６でプロセスは次の競合解消の要求を待つ状態に戻る。成功しなかった場合はプロセスはステップ３０８に戻り、次の競合の解消を再び試行する。競合が解消されない場合は１つ以上の追加の試行を行ってよい。
【００３８】
１つの例示の実施の形態では、競合を解消するのに３回試行してよい。３回試行して失敗した場合は、競合を解消できなかったというメッセージをメッセージ・ボックスによりユーザＳＵに送ってよい。実施の形態に依存して、プログラムを続けるか、終わるか、またはユーザＳＵにその選択をまかせるか、してよい。或る実施の形態では、競合マネージャの発呼者は、競合解消のプロセスを始める前に、永久に試行するか、Ｎ回試行するか、またどれかの解消が失敗した場合は止めるか、を決定してよい。
【００３９】
３４０でのプログラムの終了の前と後に、ステップ３２２で、プログラム３２などの競合検出プログラムは前に停止したＣＡを再開する要求があるかどうか判定する。再開の要求がない場合は、プロセスを続けてプログラムを通常通りに終了する。競合検出プログラムが再開を要求した場合は、ステップ３２４で、競合検出プログラムは、再開を必要とする中断、一時停止、または停止のクライアントがあるかどうか判定する。ない場合は、プロセスはステップ３２２に戻って次のＣＡ再開の要求を待つ。
【００４０】
ステップ３２４で再開を必要とするＣＡがあるとシステムが判定した場合は、ステップ３２６で、システムは自動的に、またはユーザの要求により、再開ループを開始する。ステップ３２８で、競合検出プログラムはメモリから再開データまたは情報を読み取る。ステップ３３０で、競合マネージャは競合する項目またはＣＡの再開を開始し、メモリから読み取った再開データを用いてＣＡを再開する。
ステップ３３２でＣＡを再開し、プロセスはステップ３２２に戻って次の再開要求を待つ。或る実施の形態のＣＡの中には「再開」が「逆転」を意味すると解釈されるものがあるので、休眠にすることにより任意の項目が解消された場合は、再開ではなく休眠を解除する。
【００４１】
図４は、ステップ３０６の「競合する項目を検出する」の処理の詳細な態様を示す。上に列挙した識別方法に関して、探索プロセス３０６ａ，探索メニュー３０６ｂ，探索サービス３０６ｃ，．．．，などの種々の探索を行ってよい。種々の探索のタイプの順序は変えてよい。これらを順次にまたは同時に実行してよい。「再び実行するか」の決定３０６−１は見つかった項目に応じて行ってよい。なぜなら、場合によってはまず１つの項目を識別した後に、関連する項目の特定の集合を探す必要があるからである。
【００４２】
また検出プログラムまたはクライアント３２は、システム上で実行されるウイルスまたは他の同様のプログラムを検出するのに用いてよい。ウイルス・スキャニング・ソフトウエアが働かずに、ウイルスがスキャニング・ソフトウエアの防御を突破すると、これを修復するためにウイルス・スキャナができることは極めて限られる。競合検出プログラムはかかる侵害を検出し、これによりユーザＳＵなどのＩＴマネージャは、全ての装置上の指名したアプリケーションまたは他のプログラムをすぐ「停止する」よう、上に述べた更新機構を介してシステムに命令をすぐ出すことができる。
【００４３】
本発明の別の態様では、システム上に常駐させるクライアントを起動時にサーバ３０に登録してよいので、新たな脅威があればシステムはこれを実時間で知ることができる。このようにして、有害なアプリケーションを実時間で検出し、したがって有害なアプリケーションに対して実時間防衛を行うことができる。
【００４４】
上記に関して、有害なまたは仮想のアプリケーション（ＶＡ）がウイルス検出アプリケーションの検出をくぐり抜けると、ＶＡは実行されて、システム資源を要求するプログラムまたはアプリケーションになる可能性が高い。かかる要求は競合の原因になり、ＦＡの資源要求を侵害する。
かかる侵害が起こった場合は、競合検出プログラム３２はＩＴマネージャ、ユーザＳＵに警告して、全ての装置上の指名したＶＡをすぐ停止するよう命令をすぐ出すことができる。別の実施の形態では、競合プログラム３２は、検出し、ＶＡを自動的に停止し、競合があることをＩＴマネージャに警告するのではなくＩＴマネージャに通知してよい。
【００４５】
以上のことから分かるように、本発明の精神と範囲から逸れない限り種々の変形や変更を行ってよい。理解されるように、ここに示した特定の装置に関しては全く制限がなく、また考えられない。当然であるが、全てのかかる変更はクレームの範囲内にあるものとしてクレームによりカバーされるものである。
【図面の簡単な説明】
【００４６】
【図１】本発明を実現するシステムのブロック図である。
【図２】本発明を実現する方法の流れ図である。
【図３】本発明を実現する別の方法の流れ図である。
【図４】本発明に係る方法の選択されたステップを詳細に示す流れ図である。
【図１】
2008537616.tif 000003
【図２】
2008537616.tif 000004
【図３】
2008537616.tif 000005
【図４】
2008537616.tif 000006