特許第6104447号(P6104447)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

6104447プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム
<>
  • 6104447-プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム 図000002
  • 6104447-プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム 図000003
  • 6104447-プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム 図000004
  • 6104447-プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム 図000005
  • 6104447-プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム 図000006
  • 6104447-プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム 図000007
  • 6104447-プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム 図000008
  • 6104447-プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム 図000009
  • 6104447-プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム 図000010
  • 6104447-プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム 図000011
  • 6104447-プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム 図000012
  • 6104447-プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム 図000013
  • 6104447-プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム 図000014
  • 6104447-プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム 図000015
  • 6104447-プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム 図000016
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】6104447
(24)【登録日】2017年3月10日
(45)【発行日】2017年3月29日
(54)【発明の名称】プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム
(51)【国際特許分類】
   G06F 21/55 20130101AFI20170316BHJP
   G06F 21/53 20130101ALI20170316BHJP
【FI】
   G06F21/55
   G06F21/53
【請求項の数】12
【全頁数】30
(21)【出願番号】特願2016-212993(P2016-212993)
(22)【出願日】2016年10月31日
【審査請求日】2016年11月10日
【早期審査対象出願】
(73)【特許権者】
【識別番号】591071230
【氏名又は名称】株式会社ソリトンシステムズ
(74)【代理人】
【識別番号】100115716
【弁理士】
【氏名又は名称】山本 隆雄
(72)【発明者】
【氏名】山田 智昭
(72)【発明者】
【氏名】高萩 澄子
【審査官】 宮司 卓佳
(56)【参考文献】
【文献】 特開2014−16877(JP,A)
【文献】 特開2014−182837(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F21/00−21/88
G06F9/46
(57)【特許請求の範囲】
【請求項1】
プログラムの実行主体であるプロセスであって監視対象となる監視対象プロセスの識別情報を監視対象プロセスリストに登録し、問い合わせ先から任意のプロセスが監視対象であるか否かの問い合わせがあった場合に、前記任意のプロセスの識別情報を前記監視対象プロセスリストに照会して、前記任意のプロセスが監視対象であるか否かの情報を前記問い合わせ先に返信する監視対象プロセス管理部と、
分散オブジェクトサーバを生成して当該分散オブジェクトサーバの識別情報を保有する分散オブジェクト生成管理装置が監視対象プロセスから分散オブジェクトサーバの利用要求を受けた場合に、前記分散オブジェクト生成管理装置から所定の通知を受信する通知受信部と、
を備えたプログラム動作監視制御装置。
【請求項2】
前記通知受信部は、前記所定の通知として、前記分散オブジェクト生成管理装置の代わりに前記利用要求のあった分散オブジェクトサーバを生成するように依頼する旨の依頼通知を受信する
請求項1に記載のプログラム動作監視制御装置。
【請求項3】
前記通知受信部により受信された前記依頼通知に基づいて、自身の子プロセスとして、前記利用要求のあった分散オブジェクトサーバを生成する分散オブジェクトサーバ生成部と、
前記分散オブジェクトサーバ生成部により生成された分散オブジェクトサーバを職別する識別情報を、前記分散オブジェクト生成管理装置へ通知する通知部と、をさらに備え、
前記監視対象プロセス管理部は、前記分散オブジェクトサーバ生成部により生成された前記分散オブジェクトサーバの識別情報を前記監視対象プロセスリストに登録する
請求項2に記載のプログラム動作監視制御装置。
【請求項4】
新たなプロセスが起動される毎に、当該新たなプロセスの識別情報と、当該新たなプロセスの親プロセスの識別情報と、をそれぞれ取得する識別情報取得部と、
新たなプロセスが起動される毎に前記識別情報取得部により取得された各識別情報を参照して、前記新たなプロセスの親プロセスの識別情報が前記監視対象プロセスリストに登録されている場合に、前記新たなプロセスの識別情報を前記監視対象プロセスリストに登録する識別情報登録部と、をさらに備えた
請求項3に記載のプログラム動作監視制御装置。
【請求項5】
前記通知受信部は、前記所定の通知として、前記分散オブジェクト生成管理装置により生成された分散オブジェクトサーバの識別情報を受信する
請求項1に記載のプログラム動作監視制御装置。
【請求項6】
前記監視対象プロセス管理部は、前記通知受信部により受信された識別情報を前記監視対象プロセスリストに登録する
請求項5に記載のプログラム動作監視制御装置。
【請求項7】
プログラムの実行主体であるプロセスから分散オブジェクトサーバの利用要求を受信する利用要求受信部と、
前記利用要求受信部により受信された前記利用要求の要求元プロセスの識別情報が監視対象プロセスリストに登録されていない場合に、前記利用要求のあった分散オブジェクトサーバを生成する分散オブジェクトサーバ生成部と、
前記利用要求受信部により受信された前記利用要求の要求元プロセスの識別情報が前記監視対象プロセスリストに登録されている場合に、プログラム動作監視制御装置に所定の通知を送信する通知送信部と、
を備えた分散オブジェクト生成管理装置。
【請求項8】
前記通知送信部は、前記所定の通知として、前記分散オブジェクトサーバ生成部の代わりに前記プログラム動作監視制御装置が前記利用要求のあった分散オブジェクトサーバを生成するように依頼する旨の依頼通知を送信する
請求項7に記載の分散オブジェクト生成管理装置。
【請求項9】
前記分散オブジェクトサーバ生成部は、前記利用要求受信部により前記利用要求が受信された場合、前記利用要求のあったすべての分散オブジェクトサーバを生成し、
前記通知送信部は、前記所定の通知として、前記利用要求の要求元プロセスの識別情報が前記監視対象プロセスリストに登録されている場合に、前記利用要求により生成された分散オブジェクトサーバの識別情報を送信する
請求項7に記載の分散オブジェクト生成管理装置。
【請求項10】
コンピュータを請求項1から請求項6のいずれか1項に記載のプログラム動作監視制御装置の各部として機能させるためのプログラム。
【請求項11】
コンピュータを請求項7から請求項9のいずれか1項に記載の分散オブジェクト生成管理装置の各部として機能させるためのプログラム。
【請求項12】
請求項1に記載のプログラム動作監視制御装置と、
請求項7に記載の分散オブジェクト生成管理装置と、
を備えたプログラム動作監視システム。


【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システムに関する。
【背景技術】
【0002】
従来、ソフトウェア開発の効率を向上させるために、ブログラムの実行主体であるプロセスを機能に応じて分割・部品化することが行われている。プロセスの分割・部品化の手法として、プロセスが別プロセスを生成・起動してまとまった処理を実施させる手法がある。
【0003】
プロセスが別プロセスに処理を実施させる第1の手法として、プロセスが当該別のプロセスとして子プロセスを生成し、当該子プロセスに処理を依頼する技術がある。
【0004】
この場合、親子間プロセスの通信については、TCP/IPなどのネットワーク通信技術、OSが提供する名前付きパイプ(named pipe)などといった一般的なプロセス間通信に加え、親子プロセス間でのメモリ資源の共有によって両者間で閉じたデータのやり取りが実行される場合もある。
【0005】
一方、分割・部品化されたプロセスの処理内容の汎用性が高い場合、プロセスが別プロセスに処理を実施させる第2の手法として、分散オブジェクト技術がある。分散オブジェクト技術では、当該別のプロセスとして、共通の呼び出し規約に従って汎用的な処理を実施するプロセスである分散オブジェクトサーバが生成・起動される。
【0006】
例えば、第1のプロセスが、汎用性のあるまとまった処理を別プロセスで実施したい場合、OSが提供する分散オブジェクト生成管理部に対して、当該まとまった処理を実行できる分散オブジェクトサーバの利用要求を通知する。
【0007】
分散オブジェクト生成管理部は、指定された分散オブジェクトサーバが指定された時点で稼働していなかった場合には、当該分散オブジェクトサーバを生成・起動し、当該分散オブジェクトサーバへのアクセス方法を含む応答を利用要求元の第1のプロセスに戻す。
【0008】
一方、第2のプロセスも、上記の汎用性のあるまとまった処理を別プロセスで実施したい場合、分散オブジェクト生成管理部に対して、当該分散オブジェクトサーバの利用要求を通知する。
【0009】
分散オブジェクト生成管理部は、今回は指定された分散オブジェクトサーバが既に稼働しているので、単に当該分散オブジェクトサーバへのアクセス方法を含む応答を利用要求元の第2のプロセスに戻す。
【0010】
上述した第1の手法では、親プロセス及び子プロセスの処理が、1つのコンピュータ内の閉じられた空間で実行される。これに対して第2の手法では、利用要求元の第2のプロセスの処理と分散オブジェクトサーバの処理とが、異なるコンピュータで実行される場合も含まれる。
【0011】
そのため、第2の手法では、利用要求元プロセスと分散オブジェクト生成管理部との間の通信方法、及び利用要求元プロセスと分散オブジェクトサーバとの間の通信方法は、原則として、先述したネットワーク通信技術に基づくプロセス間通信方法に限定される。
【0012】
このように分散オブジェクト技術においては、ソフトウェアシステムを、汎用性のあるまとまった処理を提供する独立したプログラムに分割し、当該独立したプログラムを分散オブジェクトサーバとして生成・起動する。これにより、プログラムの再利用性を大幅に高めることが可能となり、また一部を修正してもソフトウェアシステム全体を再構築しないで済むといった開発効率の大幅な向上が期待できる。
【0013】
さらに、複数の分散オブジェクトサーバを役割分担の上、複数のコンピュータで並行して生成・起動させることによって、コンピュータ資源の効率的な活用が可能となる。
【0014】
なお、分散オブジェクトサーバは、プロセスからの利用要求があった際に稼働していなかった場合には、分散オブジェクト生成管理部によって当該分散オブジェクトサーバが生成・起動される。このように、分散オブジェクトサーバは、利用要求元プロセスからの利用要求をトリガーとして、生成・起動されるものである。しかし、利用要求元プロセスと分散オブジェクトサーバとの関係は、後者が既に稼働していた場合には前者は原則として稼働中の後者を再利用することから、前出の親プロセスと子プロセスのような直接的な親子関係には相当しない。
【0015】
一方、信頼できないプログラムをシステム内の所定の保護領域で実行することによって、当該プログラムがシステムを不正に操作するのを防ぐ、サンドボックス(sandbox)と呼ばれるセキュリティ機構がある。
【0016】
サンドボックス内で実行されるプログラムは、その実行主体であるプロセスが他のプロセスやデータなどを操作できないように監視された状態で生成・起動される。このため、当該プロセスが暴走したりウイルスを動作させたりしても、当該サンドボックスの外部には影響が及ばない。以下、サンドボックス内で生成・起動されるプロセスのことを「監視対象プロセス」という。
【0017】
特許文献1には、ファイルシステムやレジストリなどが仮想化されたサンドボックスとしての仮想空間で実行されるプログラムの実行主体である監視対象プロセス及びその子プロセスに関する技術が開示されている。特許文献1では、監視対象プロセスによって生成・起動される(監視対象となる)子プロセスが親プロセスと同じ仮想空間を利用するか、又は当該子プロセス用に新たな仮想空間を生成するかが決定される。つまり、特許文献1の技術は、親プロセスが監視対象の場合は、子プロセスも監視対象とすることができる。
【0018】
換言すれば、監視対象プロセスがサンドボックス内で子プロセスを直接生成・起動する場合、プロセスの親子関係が明確である。このため、子プロセスを容易に監視対象とすることができる。
【先行技術文献】
【特許文献】
【0019】
【特許文献1】特開2010−205186号公報
【発明の概要】
【発明が解決しようとする課題】
【0020】
しかし、監視対象プロセスからの利用要求に基づいて生成・起動されるプロセスが分散オブジェクトサーバである場合、利用要求元の監視対象プロセスと分散オブジェクトサーバとの間には単純な親子関係が成立しない。その最大の理由は、分散オブジェクトサーバを直接生成・起動するものが、OS機能の一部として提供され、サンドボックスの外部にある分散オブジェクト生成管理部であるためである。
【0021】
したがって、特許文献1の技術は、監視対象プロセスからの利用要求に基づいて生成・起動されるプロセスが分散オブジェクトサーバである場合は、分散オブジェクトサーバを監視対象にすることができず、プログラム動作の監視漏れが発生する問題があった。
【0022】
本発明は、このような実情を鑑みて提案されたものであり、監視対象プロセスのプログラム動作だけでなく、監視対象プロセスの利用要求に基づいて生成・起動される分散オブジェクトサーバのプログラム動作についても漏れなく監視することができるプログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システムを提供することを目的とする。
【課題を解決するための手段】
【0023】
本発明に係るプログラム動作監視制御装置は、プログラムの実行主体であるプロセスであって監視対象となる監視対象プロセスの識別情報を監視対象プロセスリストに登録し、問い合わせ先から任意のプロセスが監視対象であるか否かの問い合わせがあった場合に、前記任意のプロセスの識別情報を前記監視対象プロセスリストに照会して、前記任意のプロセスが監視対象であるか否かの情報を前記問い合わせ先に返信する監視対象プロセス管理部と、分散オブジェクトサーバを生成して当該分散オブジェクトサーバの識別情報を保有する分散オブジェクト生成管理装置が監視対象プロセスから分散オブジェクトサーバの利用要求を受けた場合に、前記分散オブジェクト生成管理装置から所定の通知を受信する通知受信部と、を備えている。
【0024】
本発明に係る分散オブジェクト生成管理装置は、プログラムの実行主体であるプロセスから分散オブジェクトサーバの利用要求を受信する利用要求受信部と、前記利用要求受信部により受信された前記利用要求の要求元プロセスの識別情報が監視対象プロセスリストに登録されていない場合に、前記利用要求のあった分散オブジェクトサーバを生成する分散オブジェクトサーバ生成部と、前記利用要求受信部により受信された前記利用要求の要求元プロセスの識別情報が前記監視対象プロセスリストに登録されている場合に、プログラム動作監視制御装置に所定の通知を送信する通知送信部と、を備えている。
【0025】
本発明に係るプログラム動作監視システムは、上記のプログラム動作監視制御装置と、上記の分散オブジェクト生成管理装置と、を備えている。
【発明の効果】
【0026】
本発明は、監視対象プロセスのプログラム動作だけでなく、監視対象プロセスの利用要求に基づいて生成・起動される分散オブジェクトサーバのプログラム動作についても漏れなく監視することができる。
【図面の簡単な説明】
【0027】
図1】本発明の第1の実施形態に係るプログラム動作監視システムの構成を示すブロック図である。
図2】プログラム動作監視システムの起動から終了までの動作手順を示すフローチャートである。
図3】プログラム動作監視システムの起動から終了までの動作手順を示すフローチャートである。
図4】印刷動作監視ルーチンを示すフローチャートである。
図5】クリップボード動作監視ルーチンを示すフローチャートである。
図6】レジストリ保護ルーチン(pid管理)を示すフローチャートである。
図7】レジストリ保護ルーチン(レジストリ保護)を示すフローチャートである。
図8】ファイル保護ルーチン(ファイルオープン動作の対応)を示すフローチャートである。
図9】ファイル保護ルーチン(ファイル名一覧表示への対応)を示すフローチャートである。
図10】プロセス動作監視ルーチンを示すフローチャートである。
図11】プログラム動作監視システムの要部ブロック図である。
図12】分散オブジェクトサーバ生成管理ルーチンを示すフローチャートである。
図13】分散オブジェクトサーバ生成管理ルーチンを示すフローチャートである。
図14】第2の分散オブジェクトサーバ生成管理ルーチンを示すフローチャートである。
図15】第3の分散オブジェクトサーバ生成管理ルーチンを示すフローチャートである。
【発明を実施するための形態】
【0028】
本発明の実施形態について、図面を参照しながら詳細に説明する。
[第1の実施形態]
図1は、本発明の第1の実施形態に係るプログラム動作監視システム1の構成を示すブロック図である。
【0029】
プログラム動作監視システム1は、OS(Operating System)などのシステムの稼動に必要なプロセスが動作するメモリ空間であるシステム領域、すべてのユーザが共有して利用可能なプロセスが動作するメモリ空間である共通ユーザ領域、及び、個々のユーザが利用可能なプロセスが動作するメモリ空間である個別ユーザ領域(ユーザ1領域、ユーザ2領域、…)、のそれぞれのメモリ空間に設けられた機能ブロックで構成される。
【0030】
プログラム動作監視システム1は、個別ユーザ領域にある1つ以上のプロセスのうち、ユーザがサンドボックス内での実行を指定したプログラムの実行主体として生成・起動され監視対象となったプロセス(監視対象ユーザプロセス32)及びその子孫プロセスの各種動作を監視する。さらに、プログラム動作監視システム1は、共通ユーザ領域にある1つ以上の分散オブジェクトサーバのうち、監視対象ユーザプロセス32などの利用要求に基いて生成された分散オブジェクトサーバ(監視対象分散オブジェクトサーバ21)の各種動作を監視する。以下では、監視対象ユーザプロセス32及び監視対象分散オブジェクトサーバ21を包括したプロセスを「監視対象プロセス」という。
【0031】
プログラム動作監視システム1は、システム領域で動作する機能ブロックとして、レジストリリダイレクタ11、ファイルシステムリダイレクタ12、及び分散オブジェクト生成管理部13を備えている。
プログラム動作監視システム1は、共通ユーザ領域で動作する機能ブロックとして、全体制御部20を備えている。全体制御部20は、その内部に監視対象分散オブジェクトサーバ生成部20Gを有している。
【0032】
さらに、プログラム動作監視システム1は、個別ユーザ領域で動作する機能ブロックとして、監視対象ユーザプロセス生成部31、及び監視対象ユーザプロセス32の内部に生成される印刷動作監視部32P及びクリップボード動作監視部32Cを備えている。
【0033】
全体制御部20は、監視対象プロセスの動作を監視するプログラム動作監視サービス全体の制御を司る。また、全体制御部20は、その内部に保有する監視対象分散オブジェクトサーバ生成部20Gによって、監視対象となる分散オブジェクトサーバ(監視対象分散オブジェクトサーバ21)を生成・起動させることができる。
【0034】
レジストリリダイレクタ11は、システム領域にあって、監視対象プロセスによるレジストリアクセス動作の監視、制御、保護を実行する。ここでレジストリとは、例えばOSがマイクロソフト社のWindows(登録商標)の場合、OSに関する基本情報や各種プログラムの設定、拡張情報などが登録された、OSで用いられる設定情報のデータベースのことをいう。
ファイルシステムリダイレクタ12は、システム領域にあって、監視対象プロセスによるファイルアクセス動作の監視、制御、保護を実行する。
【0035】
監視対象ユーザプロセス生成部31は、個別ユーザ領域にあって、監視対象ユーザプロセス32を、当該ユーザに割り当てられた個別ユーザ領域内で生成・起動する。
印刷動作監視部32Pは、個別ユーザ領域において生成・起動される任意のプロセスの内部にあって、ユーザによる当該プロセスを用いた印刷操作の監視、制御を実行する。
【0036】
クリップボード動作監視部32Cは、個別ユーザ領域において生成・起動される任意のプロセスの内部にあって、ユーザによる当該プロセスが絡んだクリップボード操作の監視、制御、保護を実行する。ここでクリップボードとは、異なるプログラム間でのデータのやり取りを実現すべく、ユーザが「コピー」や「カット」したデータを一時的に保存する機能をいう。
【0037】
分散オブジェクト生成管理部13は、OSの標準機能ブロックの1つとして提供されるものであるが、本実施形態では、さらに、全体制御部20に監視対象分散オブジェクトサーバ21を監視させるための追加機能を有している。
分散オブジェクト生成管理部13は、OSの標準機能として、個別ユーザ領域のプロセスから分散オブジェクトサーバの生成依頼を受信した場合は、共通ユーザ領域に分散オブジェクトサーバを生成し、当該分散オブジェクトサーバのpidを取得する。
【0038】
分散オブジェクト生成管理部13は、前出の追加機能として、個別ユーザ領域の監視対象ユーザプロセス32から分散オブジェクトサーバの生成依頼を受信した場合は、共通ユーザ領域の全体制御部20に対して分散オブジェクトサーバ(監視対象分散オブジェクトサーバ21)の生成を依頼する。分散オブジェクト生成管理部13は、監視対象分散オブジェクトサーバ21が生成された後、全体制御部20から当該監視対象分散オブジェクトサーバ21のpidを取得する。
【0039】
なお、分散オブジェクト生成管理部13は、共通ユーザ領域のすべての分散オブジェクトサーバのpidを、それが監視対象であるか否かに関わらず取得し、当該分散オブジェクトサーバの管理に用いている。更に、分散オブジェクト生成管理部13は、自らが管理する分散オブジェクトサーバに関して、どの分散オブジェクトサーバが監視対象であるか否かの状態を併せて管理する機能を有してもよい。
【0040】
一方、監視対象として生成・起動される監視対象プロセスは、図1の破線の矩形で示したように、監視対象ユーザプロセス32、監視対象ユーザプロセス32の子孫プロセス、及び共通ユーザ領域で生成・起動される監視対象分散オブジェクトサーバ21が該当する。なお、詳しくは後述するが、すべての監視対象プロセスのpidは、レジストリリダイレクタ11に登録される。
【0041】
図2及び図3は、プログラム動作監視システム1の起動から終了までの動作手順を示すフローチャートである。
ステップS1では、システムの立ち上げに伴いOSが起動することによって、OSの標準機能ブロックの1つである分散オブジェクト生成管理部13が起動する。
【0042】
ステップS2では、レジストリリダイレクタ11が起動する。
その後、OSは、任意のプロセスから、レジストリアクセス要求、新たな子プロセスの生成・起動要求、あるいは終了通知を受け取ると、受け取った情報を、当該任意のプロセスのpidと共にレジストリリダイレクタ11に常に通知する。
【0043】
ここで、pid(process identifier)とは、1つのコンピュータ内においてプロセスを一意に職別するための識別情報である。OSは、任意のプロセスから新たな子プロセスの生成・起動要求を受け取った場合は、当該任意のプロセスのpidに加えて、生成・起動された当該子プロセスのpidも併せてレジストリリダイレクタ11に通知する。
【0044】
これより、レジストリリダイレクタ11は、あるプロセスのpidが監視対象として登録されると、当該プロセスが子プロセスを生成・起動した際、OSから、当該プロセスのpidのみならず、当該子プロセスのpidも併せて受け取る。その結果、レジストリリダイレクタ11は、当該プロセスを起点(ルートプロセス)として生成・起動されるすべての子孫プロセスのpidを監視対象として自動的に登録する。詳しくは、後述する図6に示すように、レジストリ保護ルーチン(pid管理)が実行される。
【0045】
ステップS3では、ファイルシステムリダイレクタ12が起動する。
その後、OSは、任意のプロセスから、ファイルアクセス要求、新たな子プロセスの生成・起動要求、あるいは終了通知を受け取ると、受け取った情報を、当該任意のプロセスのpidと共にファイルシステムリダイレクタ12に常に通知する。
【0046】
これより、ファイルシステムリダイレクタ12は、あるプロセスのpidが監視対象として登録されると、当該プロセスを起点として生成・起動されるすべての子孫プロセスのpidを監視対象として自動的に登録する。
【0047】
さらに、OS起動の一環としてシステム領域のすべてのプロセスの起動が完了すると、ステップS4に進む。
【0048】
ステップS4では、すべてのユーザへの共通サービスとしてプログラム動作監視サービスを提供すべく、全体制御部20が共通ユーザ領域で起動する。
全体制御部20は、起動の際、自らのpidを、監視対象となるすべてのプロセスのルートプロセスとして、レジストリリダイレクタ11に登録する。これにより、全体制御部20を起点として生成・起動されるすべての子孫プロセスのpidは、既に起動されているレジストリリダイレクタ11によって、監視対象として自動的に登録される。
【0049】
さらに、全体制御部20は、個別ユーザ領域に任意のプロセスが生成された場合に、当該プロセスがその内部に印刷動作監視部32P及びクリップボード動作監視部32Cを取り込んでおくように、OSに対して予め指示を出しておく。
例えば、OSがマイクロソフト社のWindows(登録商標)の場合、全体制御部20は、プロセス起動の際に当該プロセスが所定のフックプロシージャをインストールするように、OSに予め指示するとよい。
【0050】
ステップS5では、全体制御部20は、プログラム動作監視サービスの実行開始を依頼するユーザのサインインを検出したか否かを判定する。当該ユーザのサインインが検出された場合はステップS6に進み、検出されていない場合はステップS13に進む。
【0051】
ステップS6では、全体制御部20は、当該ユーザのコンピュータへのログオンをトリガーとして生成された当該ユーザ用の個別ユーザ領域において、監視対象ユーザプロセス生成部31を自らの子プロセスとして生成・起動する。
【0052】
ここで、全体制御部20は、監視対象となるすべてのプロセスの起点となるルートプロセスとして、その起動時(ステップS4)に、自らのpidを監視対象としてレジストリリダイレクタ11に登録している。このため、全体制御部20の子プロセスである監視対象ユーザプロセス生成部31及びそれを起点として生成・起動される監視対象ユーザプロセス32並びにそのすべての子孫プロセスのpidもまた、監視対象としてレジストリリダイレクタ11にて自動的に登録される。
【0053】
また、監視対象ユーザプロセス生成部31の起動と同時に、プログラム動作監視サービスのユーザインターフェイス(プログラム動作監視サービスUI)がユーザに提示される。プログラム動作監視サービスUIには、後述する隔離フォルダのフォルダツリー構造、選択可能な隔離フォルダ内のコピーファイル(コピーファイルがないときはブランク表示)、動作監視可能なプログラムにリンクされたアイコンなどが表示される。ユーザが所望のコピーファイルあるいはプログラムにリンクされたアイコンを選択すると、選択されたアイコンに関連付けられたプログラムがサンドボックス内で実行され、その実行主体としての監視対象ユーザプロセス32の動作を監視すべく、ステップS7に進む。
【0054】
ステップS7では、全体制御部20は、プロセス動作の監視を実行する。具体的には、後述する図10に示すプロセス動作監視ルーチンが実行される。
ステップS8では、全体制御部20は、プログラム動作監視サービスの実行を依頼したユーザのサインアウトを検出したか否かを判定する。上記ユーザのサインアウトが検出された場合はステップS9に進み、検出されていない場合はステップS7に戻る。したがって、サインアウトが検出されるまで、ステップS7の処理が実行される。
【0055】
ステップS9では、全体制御部20は、当該ユーザに提供したプログラム動作監視サービスの終了処理を実行する。具体的には、全体制御部20は、当該ユーザ用の個別ユーザ領域において生成・起動されたすべての監視対象ユーザプロセス32及びその子孫プロセスを停止させる。
【0056】
ステップS10では、当該ユーザのために所定の隔離フォルダに生成、保持されたすべてのコピーファイルが削除される。なお、後述するように、当該隔離フォルダ内には、オリジナルファイルのコピーファイルと各コピーファイルを格納するフォルダから構成されるフォルダツリー構造が厳密に再現されている。
【0057】
ステップS11では、当該ユーザのために所定の保護領域に生成されたすべてのレジストリ代替キーが削除される。
ステップS12では、当該ユーザ用の個別ユーザ領域にて生成・起動された監視対象ユーザプロセス生成部31が停止する。
【0058】
なお、監視対象ユーザプロセス32からの利用要求をトリガーとして共通ユーザ領域にて生成・起動された監視対象分散オブジェクトサーバ21があった場合、当該監視対象分散オブジェクトサーバ21は、当該ユーザ以外のユーザに割り当てられた個別ユーザ領域における監視対象ユーザプロセス32などからの利用要求に対応できるように、この時点では停止しない。
【0059】
ステップS13では、全体制御部20は、システムのシャッタダウンを検出したか否かを判定する。シャットダウンが検出された場合はステップS14に進み、検出されない場合はステップS5に戻る。
ステップS14では、全体制御部20は、共通ユーザ領域にて生成・起動された監視対象分散オブジェクトサーバ21があった場合、すべての監視対象分散オブジェクトサーバ21を停止させる。
【0060】
ステップS15では、全体制御部20が停止する。そして、ステップS16ではファイルシステムリダイレクタ12が停止し、ステップS17ではレジストリリダイレクタ11が停止する。
ステップS18では、システム領域の全機能及びOSが停止する。
【0061】
次に、監視対象ユーザプロセス32の各種動作に対するプログラム動作監視システム1の具体的な動作処理について説明する。
本実施形態において監視対象とするプロセスの動作は、印刷動作、クリップボード動作、レジストリアクセス動作、及びファイルアクセス動作である。印刷動作及びクリップボード動作は、監視対象ユーザプロセス32の生成・起動時にその内部に取り込まれた印刷動作監視部32P及びクリップボード動作監視部32Cによって、それぞれ監視される。
【0062】
レジストリアクセス動作、及びファイルアクセス動作は、システム領域で動作するレジストリリダイレクタ11及びファイルシステムリダイレクタ12によって、それぞれ監視される。
【0063】
図4は、プロセスの内部に取り込まれた印刷動作監視部32Pによる印刷動作監視ルーチンを示すフローチャートである。個別ユーザ領域で任意のプロセスが起動されると、本印刷動作監視ルーチンがその内部において実行される。
【0064】
ステップS21では、プロセス(内部に取り込まれた印刷動作監視部32P)は、その起動時において、自らが監視対象であるか、具体的には、自らのpidが監視対象のものであるかについて全体制御部20に照会する。
【0065】
ステップS22では、印刷動作監視部32Pは、自身を内部に取り込んだプロセスの印刷動作を検出したか否かを判定する。印刷動作監視部32Pが当該印刷動作を検出した場合はステップS23へ進み、検出していない場合はステップS22に待機する。
【0066】
ステップS23では、印刷動作監視部32Pは、ステップS21の照会結果に基づいて、自らが監視対象であるか否かを判定する。自らが監視対象である場合はステップS24へ進み、監視対象でない場合はステップS22へ戻る。
【0067】
ステップS24では、印刷動作監視部32Pは、印刷動作を拒否して、ステップS22へ戻る。
【0068】
このような印刷動作監視ルーチンは、例えばOSがマイクロソフト社のWindows(登録商標)の場合、OpenPrinter APIに注入されたフックによって実現される。
【0069】
図5は、プロセスの内部に取り込まれたクリップボード動作監視部32Cによるクリップボード動作監視ルーチンを示すフローチャートである。個別ユーザ領域で任意のプロセスが起動されると、本クリップボード動作監視ルーチンがその内部において実行される。
【0070】
ステップS31では、プロセス(内部に取り込まれたクリップボード動作監視部32C)は、その起動時において、自らが監視対象であるか、具体的には、自らのpidが監視対象のものであるかについて全体制御部20に照会する。
【0071】
ステップS32では、クリップボード動作監視部32Cは、自身を内部に取り込んだプロセスのクリップボードへのデータ登録動作を検出したか否かを判定する。データ登録動作を検出した場合はステップS33へ進み、検出していない場合はステップS35へ進む。
【0072】
ステップS33では、クリップボード動作監視部32Cは、ステップS31の照会結果に基づいて、自らが監視対象であるか否かを判定する。自らが監視対象である場合はステップS34へ進み、監視対象でない場合はステップS32へ戻る。
【0073】
ステップS34では、クリップボード動作監視部32Cは、自らがデータ登録プロセスであることを示すべく、自らのpidを所定の共有メモリに登録する。
【0074】
このようなクリップボード動作監視ルーチンにおける自らのデータ登録動作を検出した場合の処理は、例えばOSがマイクロソフト社のWindows(登録商標)の場合、SetClipboardData APIに注入されたフックによって実現される。
【0075】
一方、ステップS35では、クリップボード動作監視部32Cは、自身を内部に取り込んだプロセスのクリップボードからのデータ取得動作を検出したか否かを判定する。データ取得動作を検出した場合はステップS36へ進み、検出していない場合はステップS32に戻る。
【0076】
ステップS36では、クリップボード動作監視部32Cは、ステップS31の照会結果に基づいて、自らが監視対象であるか否かを判定する。自らが監視対象である場合はステップS38へ進み、監視対象でない場合はステップS37へ進む。
【0077】
ステップS37では、クリップボード動作監視部32Cは、上述の共有メモリにおけるデータ登録プロセスのpid登録があるか否かを判定する。pid登録がある場合はステップS39へ進み、pid登録がない場合はステップS38へ進む。
【0078】
ステップS38では、クリップボード動作監視部32Cは、取得したデータの自らへの貼り付け動作を許可する。そして、ステップS32へ戻る。
ステップS37でpid登録がないと判定された場合、データを登録したデータ登録プロセスは監視対象になっていない。つまり、ステップS35のデータ取得動作は、監視対象でない通常のプロセス間でのクリップボードを介したデータのやり取りに該当する。よって、ステップS38において、取得データの自らへの貼り付け動作が許可される。
【0079】
ステップS39では、クリップボード動作監視部32Cは、取得したデータの自らへの貼り付け動作を拒否する。そして、ステップS32へ戻る。
ステップS37でpid登録があると判定された場合、データを登録したデータ登録プロセスは監視対象になっている。つまり、ステップS35のデータ取得動作は、監視対象とするプロセスから監視対象でないプロセスへのデータの移動に該当する。換言すれば、上述のデータ取得動作は、サンドボックス内で実行されるプログラムが取り扱う機密データをサンドボックスの外部で実行されるプログラムへと持ち出す行為となる。よって、ステップS39において、取得データの自らへの貼り付け動作が拒否される。
【0080】
このようなクリップボード動作監視ルーチンにおける自らのデータ取得動作を検出した場合の処理は、例えばOSがマイクロソフト社のWindows(登録商標)の場合、GetClipboardData APIに注入されたフックによって実現される。
【0081】
ところで、先述したように、レジストリリダイレクタ11は、新たなプロセスが生成・起動される度に、OSからその旨の通知を、当該プロセス及びその親プロセスのpidと共に常に取得し、取得した情報を活用する。
【0082】
具体的には、本実施形態において、レジストリリダイレクタ11には、レジストリ保護という本来の役割だけでなく、図2のステップS2で説明したOSからの通知を活用して、監視対象とするすべてのプロセスのpidを管理するという役割もある。
【0083】
つまり、すべての監視対象プロセスのpidは、レジストリリダイレクタ11によって管理される。具体的には、レジストリリダイレクタ11は、図2のステップS4で説明したように、全体制御部20からpidの登録通知を受けると、登録通知のあったpidをその内部に保有する監視対象プロセスリストに登録する。また、レジストリリダイレクタ11は、全体制御部20などからpidの登録照会通知を受けると、登録照会通知のあったpidを当該監視対象プロセスリストに照会することで、全体制御部20などからの問い合わせに応答する。
【0084】
レジストリリダイレクタ11は、プロセスの新規生成やレジストリアクセスに関する通知などをOSから取得したり、pidの登録通知や登録照会通知を全体制御部20などから取得したりすると、以下に示すレジストリ保護ルーチンを実行する。
【0085】
図6及び図7は、レジストリリダイレクタ11によるレジストリ保護ルーチンを示すフローチャートである。
ステップS41では、レジストリリダイレクタ11は、全体制御部20からpid登録通知を取得したか否かを判定する。pid登録通知を取得した場合はステップS42へ進み、取得していない場合はステップS43へ進む。
【0086】
ステップS42では、レジストリリダイレクタ11は、全体制御部20から取得したpidを監視対象プロセスリストに登録する。そして、ステップS41に戻る。
ステップS43では、レジストリリダイレクタ11は、全体制御部20などからpid照会通知を取得したか否かを判定する。pid照会通知を取得した場合はステップS44に進み、pid照会通知を取得していない場合はステップS45へ進む。
【0087】
ステップS44では、レジストリリダイレクタ11は、取得したpidが監視対象プロセスリストに登録されているか照会して、その照会結果を全体制御部20などに対して応答する。そして、ステップS41に戻る。
【0088】
ステップS45では、レジストリリダイレクタ11は、OSからプロセスの新規生成・起動通知を取得したか否かを判定する。プロセスの新規生成・起動通知を取得した場合はステップS46へ進み、プロセスの新規生成・起動通知を取得していない場合はステップS48へ進む。なお、プロセスの新規生成・起動通知には、新規生成・起動されたプロセスのpidだけでなく、当該プロセスの親プロセスのpidも含まれる。
【0089】
ステップS46では、レジストリリダイレクタ11は、OSからプロセスの新規生成・起動通知を取得した際に取得した、当該プロセスの親プロセスのpidが監視対象プロセスリストに登録されているか否か、つまり、親プロセスが監視対象であるか否かを判定する。親プロセスが監視対象の場合はステップS47へ進み、監視対象でない場合はステップS41に戻る。
【0090】
ステップS47では、レジストリリダイレクタ11は、新規生成・起動されたプロセスのpidを監視対象プロセスリストに登録する。そして、ステップS41へ戻る。このようにして、新規生成・起動されたプロセスの親プロセスが監視対象であった場合には、当該プロセスも監視対象にする必要があるので、当該プロセスのpidが監視対象プロセスリストに登録される。
【0091】
この結果、全体制御部20がその起動時(図2のステップS4)に自らのpidをレジストリリダイレクタ11に登録することによって、全体制御部20を起点として生成されるすべてのプロセス(子孫プロセス)が監視対象プロセスリストに登録される。
【0092】
監視対象プロセスリストに登録されるすべてのプロセスは、具体的には、次の(1)〜(4)が該当する。
(1)全体制御部20
(2)全体制御部20の子プロセスとして生成・起動される監視対象ユーザプロセス生成部31
(3)ユーザが所望のプログラムのサンドボックス内での実行を指定した際に監視対象ユーザプロセス生成部31の子プロセスとして生成・起動される監視対象ユーザプロセス32並びにその子孫プロセス
(4)全体制御部20内の監視対象分散オブジェクトサーバ生成部20Gによってその子プロセスとして生成・起動される監視対象分散オブジェクトサーバ21並びにその子孫プロセス
【0093】
ステップS48では、レジストリリダイレクタ11は、OSからプロセス終了通知を取得したか否かを判定する。プロセス終了通知を取得した場合はステップS49へ進み、取得していない場合はステップS50へ進む。
【0094】
ステップS49では、レジストリリダイレクタ11は、プロセス終了通知と共に当該プロセスのpidを取得し、取得したpidを用いて、終了したプロセスのpidを監視対象プロセスリストから削除する。そして、ステップS41に戻る。
【0095】
ステップS50以降では、レジストリ保護のための処理が実行される。
ステップS50では、レジストリリダイレクタ11は、OSからレジストリアクセス通知を取得したか否かを判定する。レジストリアクセス通知とは、任意のプロセスがレジストリにアクセスをしようとする度にOSから常に送られる通知をいう。なお、レジストリアクセス通知は、レジストリにアクセスしようとしたプロセスのpid及びアクセス内容を含んでいる。レジストリアクセス通知を取得した場合にはステップS51へ進み、取得していない場合はステップS41へ戻る。
【0096】
ステップS51では、レジストリリダイレクタ11は、レジストリアクセス通知と共に取得したプロセスのpidを用いて、自らが保有する監視対象プロセスリストに照会して、レジストリにアクセスしようとするプロセスが監視対象であるか否かを判定する。プロセスが監視対象である場合はステップS52に進み、プロセスが監視対象でない場合はステップS41に戻る。
【0097】
これより、レジストリリダイレクタ11は、監視対象プロセス32がレジストリにアクセスしようとする毎に、レジストリを保護するために、次のステップS52以降の処理を実行する。
【0098】
ステップS52では、レジストリリダイレクタ11は、OSからの通知に基づいて、レジストリキーのオープン動作を検出したか否かを判定する。レジストリキーのオープン動作を検出した場合はステップS53へ進み、レジストリキーのオープン動作を検出していない場合はステップS54へ進む。
【0099】
ステップS53では、レジストリリダイレクタ11は、指定されたオリジナルキーの代替となるレジストリ代替キーを所定の保護領域に生成し、そのレジストリ代替キーをオープンする。そして、ステップS41に戻る。
【0100】
ステップS54では、レジストリリダイレクタ11は、OSからの通知に基づいて、レジストリキーの値の読み出し動作を検出したか否かを判定する。レジストリキーの値の読み出し動作を検出した場合はステップS55へ進み、レジストリキーの値の読み出し動作を検出していない場合はS56へ進む。
【0101】
ステップS55では、レジストリリダイレクタ11は、指定されたオリジナルキーの値を(前出のレジストリキーのオープン動作対応にて生成済みの)レジストリ代替キーにコピーし、その値を返す。そして、ステップS41に戻る。
【0102】
ステップS56では、レジストリリダイレクタ11は、OSからの通知に基づいて、レジストリキーの値の書き込み動作を検出したか否かを判定する。レジストリキーの値の書き込み動作を検出した場合にはステップS57へ進み、レジストリキーの値の書き込み動作を検出していない場合はステップS58へ進む。
【0103】
ステップS57では、レジストリリダイレクタ11は、指定された値を(前出のレジストリキーのオープン動作対応にて生成済みの)レジストリ代替キーに書き込む。そして、ステップS41へ戻る。
【0104】
ステップS58では、レジストリリダイレクタ11は、OSからの通知に基づいて、レジストリキーのクローズ動作を検出したか否かを判定する。レジストリキーのクローズ動作を検出した場合はステップS59へ進み、レジストリキーのクローズ動作を検出していない場合はステップS41へ戻る。
【0105】
ステップS59では、レジストリリダイレクタ11は、(前出のレジストリキーのオープン動作対応にて生成済みの)レジストリ代替キーをクローズする。そして、ステップS41に戻る。
【0106】
なお、所定の保護領域に生成されたレジストリ代替キーは、ユーザのサインアウト検出後に、すべて削除される(図3のステップS11)。
【0107】
図8及び図9は、ファイルシステムリダイレクタ12によるファイル保護ルーチンを示すフローチャートである。
ファイルシステムリダイレクタ12は、任意のプロセスがファイルオープンしようとする度に又は任意のフォルダに含まれるファイル名の一覧表示を要求される度に、OSから、それらの動作を示す通知(当該プロセスのpidを含む。)を取得して、以下に示すファイル保護ルーチンを実行する。
【0108】
なお、ファイルシステムリダイレクタ12は、詳細な内容は省略するが、レジストリリダイレクタ11と同様に、監視対象プロセスのpidを管理することも可能である。
【0109】
ステップS61では、ファイルシステムリダイレクタ12は、OSからの通知を取得して、ファイルオープン動作を検出したか否かを判定する。ファイルオープン動作を検出した場合はステップS62へ進み、ファイルオープン動作を検出していない場合はステップS69へ進む。
【0110】
ステップS62では、ファイルシステムリダイレクタ12は、ファイルをオープンしようとするプロセスが監視対象であるか否かを判定する。ここでは、ファイルシステムリダイレクタ12は、OSからの通知に含まれるpidを用いて、全体制御部20ではなく、レジストリリダイレクタ11に対して直接照会する。
【0111】
ファイルシステムリダイレクタ12がレジストリリダイレクタ11に直接照会する理由は、次の通りである。レジストリリダイレクタ11とファイルシステムリダイレクタ12は共にシステム領域に存在していることから、あるプロセスが監視対象であるか否かについて、ファイルシステムリダイレクタ12が異なる領域(共通ユーザ領域)に存在する全体制御部20を介在させてレジストリリダイレクタ11に照会するよりも、レジストリリダイレクタ11に直接照会した方が、効率が良いからである。
【0112】
先述したように、ファイルシステムリダイレクタ12は、レジストリリダイレクタ11と同様、監視対象プロセスのpidを管理することもできる。この場合は、ファイルシステムリダイレクタ12は、自らが保有する監視対象プロセスリストに対して当該照会を行えばよい。
【0113】
ステップS63では、ファイルシステムリダイレクタ12は、OSからの通知に基づいて、プロセスが隔離フォルダ内のファイルをオープンしようとしているか否かを判定する。隔離フォルダ内のファイルをオープンしようとしている場合はステップS65へ進み、隔離フォルダ内のファイル以外のファイルをオープンしようとしている場合はステップS64へ進む。
【0114】
ステップS64では、ファイルシステムリダイレクタ12は、OSからの通知の中に書込フラグがあるか否かを判定する。書込フラグは、ファイルオープン動作において、対象とするファイルの内容の編集を可能とするフラグである。書込フラグがある場合はステップS66へ進み、書込フラグがない場合はステップS65へ進む。
【0115】
ステップS65では、ファイルシステムリダイレクタ12は、プロセスのファイルオープン動作を許可する。そして、ステップS61に戻る。
つまり、監視対象プロセス(ステップS62の肯定判定)が、隔離フォルダ内のファイルをオープンしようする場合(ステップS63の肯定判定)、又は隔離フォルダ内のファイル以外のファイル(既存の通常ファイル)について(ステップS63の否定判定)、内容の編集をせずに単に読み出しをしようとする場合(ステップS64の否定判定)、ファイルオープン動作を許可する。
【0116】
ステップS66では、ファイルシステムリダイレクタ12は、指定のオリジナルファイルのコピーファイルを隔離フォルダ内に生成して、この隔離フォルダ内のコピーファイルをオープンする。これにより、隔離フォルダ内での当該コピーファイルに対する編集作業が可能になる。そして、ステップS61に戻る。
【0117】
ステップS67では、OSからの通知に基づいて、監視対象でないプロセスが隔離フォルダ内のファイルをオープンしようとしているか否かを判定する。隔離フォルダ内のファイルをオープンしようとしている場合はステップS68へ進み、隔離フォルダ内のファイル以外のファイルをオープンしようとしている場合はステップS65へ進む。
【0118】
プロセスが、監視対象ではなく、隔離フォルダ内のファイル以外のファイルをオープンしようとする場合は、通常のファイルオープン動作である。このため、ファイルのオープンが許可される(ステップS65)。
【0119】
ステップS68では、ファイルシステムリダイレクタ12は、ファイルオープン動作を拒否する。つまり、監視対象でないプロセスが隔離フォルダ内のファイルをオープンしようとした場合に、ファイルオープン動作が拒否される。そして、ステップS61に戻る。
【0120】
ステップS69では、ファイルシステムリダイレクタ12は、OSからの通知に基づいて、所定のフォルダに含まれるファイル名の一覧表示要求を検出したか否かを判定する。一覧表示要求を検出した場合はステップS70へ進み、一覧表示要求を検出していない場合はステップS61に戻る。
【0121】
ステップS70では、ファイルシステムリダイレクタ12は、ファイル名一覧表示を要求するプロセスが監視対象であるか否かを判定する。ここでは、ステップS62と同様の処理が行われる。そして、上記のプロセスが監視対象である場合はステップS71へ進み、監視対象でない場合はステップS76へ進む。
【0122】
ステップS71では、ファイルシステムリダイレクタ12は、上記のプロセスが指定するフォルダに含まれるファイル名一覧(第1のファイル名一覧)を入手する。
ステップS72では、ファイルシステムリダイレクタ12は、隔離フォルダに含まれるファイル名一覧(第2のファイル名一覧)を入手する。
【0123】
ステップS73では、ファイルシステムリダイレクタ12は、第1のファイル名一覧と第2のファイル名一覧とを比較して、同一ファイル名があるか否かを判定する。同一ファイル名がある場合はステップS74へ進み、それがない場合はステップS75へ進む。
【0124】
ステップS74では、ファイルシステムリダイレクタ12は、第1のファイル名一覧をベースにした上で、ファイル名が同一のものについては、隔離フォルダから入手した第2のファイル名一覧の関連情報を優先して第1のファイル名一覧に上書きする。このようにして、ファイルシステムリダイレクタ12は、第1のファイル名一覧と第2のファイル名一覧とをマージする。
【0125】
ステップS75では、ファイルシステムリダイレクタ12は、マージされたファイル名一覧を要求元プロセスに返す。そして、ステップS61に戻る。
ここで、隔離フォルダの内部では、オリジナルファイルのコピーファイルと各コピーファイルを格納するフォルダから構成されるフォルダツリー構造が厳密に再現されている。そして、ファイル名一覧の比較では、指定されたフォルダ内のファイル名と、隔離フォルダ内のファイル名とが、隔離フォルダのルートフォルダ名の部分を除いて比較される。
【0126】
例えば、指定されたフォルダ内のオリジナルファイルが「¥¥マイドキュメント¥メモ.txt」であり、それに対応する隔離フォルダ内のコピーファイルが「..¥隔離フォルダ¥マイドキュメント¥メモ.txt」である場合、隔離フォルダのルートフォルダ名である「..¥隔離フォルダ」部分が除外され、ファイル名が比較される。
【0127】
これより、監視対象プロセスが内容の編集を目的として任意のフォルダ内のファイルを指定した場合、実際には、指定されたファイルの代替ファイルとして当該ファイルに対応した隔離フォルダ内のコピーファイルが指定される。そして、このコピーファイルがオープンされ、編集される。
【0128】
なお、本実施形態では、監視対象プロセスがファイルオープン動作を実行した後、監視対象プロセスによる内容の編集自体は、ファイルクローズ動作時も含めて監視対象外となる。
また、本ルーチンによって隔離フォルダに生成されたコピーファイルは、ユーザのサインアウト検出後に、すべて削除される(図3のステップS10)。
【0129】
図10は、全体制御部20によるプロセス動作監視ルーチンを示すフローチャートである。プロセス動作監視ルーチンでは、監視対象プロセスの照会(ステップS81〜ステップS87)、及び監視対象分散オブジェクトサーバの生成・起動(ステップS88〜ステップS90)が行われる。
【0130】
ステップS81では、全体制御部20は、他の機能ブロック(任意のプロセス)からの依頼を受信する。例えば、あるプロセスが新規生成・起動された場合、当該プロセスは、自らが監視対象であるか否かを確認するために、全体制御部20に対して問い合わせを行う。また、後述するように、分散オブジェクト生成管理部13は、監視対象ユーザプロセス32から分散オブジェクトサーバの生成依頼を受信すると、全体制御部20に対して監視対象分散オブジェクトサーバ21の生成を依頼する。
【0131】
ステップS82では、全体制御部20は、受信した依頼が監視対象の問い合わせであるか否かを判定する。監視対象の問い合わせである場合はステップS83へ進み、監視対象の問い合わせでない場合はステップS88へ進む。
【0132】
ステップS83では、全体制御部20は、受信した依頼の中から、問い合わせのあったプロセスのpidを取得する。
ステップS84では、全体制御部20は、取得したpidを用いてレジストリリダイレクタ11に照会を行う。
【0133】
ステップS85では、全体制御部20は、レジストリリダイレクタ11から、問い合わせのあったプロセスが監視対象であるか否かの照会に対する応答を受け取る。問い合わせのあったプロセスが監視対象である場合はステップS86へ進み、監視対象でない場合はステップS87へ進む。
【0134】
ステップS86では、全体制御部20は、問い合わせのあったプロセスに対して、当該プロセスが監視対象である旨の肯定応答を返す。そして、ステップS81へ戻る。
ステップS87では、全体制御部20は、問い合わせのあったプロセスに対して、当該プロセスが監視対象でない旨の否定応答を返す。そして、ステップS81へ戻る。
【0135】
一方、ステップS88では、全体制御部20は、ステップS81で受信した依頼が分散オブジェクト生成管理部13からの監視対象分散オブジェクトサーバ21の生成・起動依頼であるか否かを判定する。監視対象分散オブジェクトサーバ21の生成・起動依頼である場合はステップS89へ進み、監視対象分散オブジェクトサーバ21の生成・起動依頼でない場合はステップS81に戻る。
【0136】
ステップS89では、全体制御部20は、自身が内部に保有する監視対象分散オブジェクトサーバ生成部20Gに次の処理を実行させる。すなわち、監視対象分散オブジェクトサーバ生成部20Gは、自らの子プロセスとして、依頼のあった監視対象分散オブジェクトサーバ21を生成・起動する。
【0137】
ステップS90では、全体制御部20は、監視対象分散オブジェクトサーバ生成部20Gによって生成・起動された監視対象分散オブジェクトサーバ21のpidを、依頼元である分散オブジェクト生成管理部13に返す。そして、再びステップS81に戻る。
【0138】
通常動作の一環として、分散オブジェクト生成管理部13は、分散オブジェクトサーバが監視対象に該当するか否かに関わらず、すべての分散オブジェクトサーバのpidを管理している。分散オブジェクト生成管理部13は、さらに、全体制御部20によって監視対象分散オブジェクトサーバ21が生成・起動された場合でも、監視対象分散オブジェクトサーバ21のpidを管理する必要がある。
【0139】
そこで、全体制御部20は、生成・起動した監視対象分散オブジェクトサーバ21のpidを、分散オブジェクト生成管理部13へ通知し、登録させる。これにより、分散オブジェクト生成管理部13は、分散オブジェクトサーバが監視対象に該当するか否かに関わらず、常に、すべての分散オブジェクトサーバのpidを管理することができる。
【0140】
ここで、監視対象分散オブジェクトサーバ21の親プロセスである全体制御部20は、監視対象としてレジストリリダイレクタ11に登録されている。したがって、図10に示すプロセス動作監視ルーチンが実行された結果、全体制御部20の子プロセスである監視対象分散オブジェクトサーバ21及びこれを起点として生成・起動されるすべての子孫プロセスもまた、監視対象としてレジストリリダイレクタ11に自動的に登録される。
【0141】
次に、監視対象ユーザプロセス32が分散オブジェクト生成管理部13に所望の分散オブジェクトサーバの利用要求を行った場合の処理手順の概要について説明する。
図11は、プログラム動作監視システム1の要部ブロック図である。図11では、(1)から(6)の順番で処理が実行される。
【0142】
(1)任意の監視対象ユーザプロセス32が、分散オブジェクト生成管理部13に対して、監視対象分散オブジェクトサーバ21の利用要求を送信する。
(2)分散オブジェクト生成管理部13は、利用要求元プロセスが監視対象である場合、全体制御部20に対して所定の通知(実行対象ファイルや実行権限などの起動方法の通知も含む。)を行うことで、利用要求のあった監視対象分散オブジェクトサーバ21の生成・起動を依頼する。
【0143】
(3)全体制御部20は、分散オブジェクト生成管理部13からの依頼を受けて、その内部に保有する監視対象分散オブジェクトサーバ生成部20Gを用いて、利用要求のあった分散オブジェクトサーバを監視対象分散オブジェクトサーバ21として生成・起動する。
(4)全体制御部20は、分散オブジェクト生成管理部13への応答として、生成・起動した監視対象分散オブジェクトサーバ21のpidを返信する。
【0144】
(5)分散オブジェクト生成管理部13は、生成・起動された監視対象分散オブジェクトサーバ21へのアクセス方法を含む応答を、利用要求元プロセスに返信する。
(6)監視対象ユーザプロセス32(利用要求元プロセス)は、分散オブジェクト生成管理部13から受信した監視対象分散オブジェクトサーバ21へのアクセス方法に基づいて、当該監視対象分散オブジェクトサーバ21と通信する。
【0145】
次に、監視対象ユーザプロセス32が分散オブジェクト生成管理部13に所望の分散オブジェクトサーバの利用要求を行った場合の具体的な処理手順について説明する。具体的には、図11の(1)、(2)、(4)及び(5)に関する分散オブジェクト生成管理部13の具体的な処理を説明する。
【0146】
図12及び図13は、分散オブジェクト生成管理部13による分散オブジェクトサーバ生成管理ルーチンを示すフローチャートである。
ステップS101では、分散オブジェクト生成管理部13は、任意のプロセスから所望の分散オブジェクトサーバの利用要求があるか否かを判定する。利用要求がある場合はステップS102へ進み、利用要求がない場合はステップS101で待機する。
【0147】
ステップS102では、分散オブジェクト生成管理部13は、当該所望の分散オブジェクトサーバの利用要求を受けて、利用要求元プロセスのpid(利用要求に含まれるpid)を取得する。
【0148】
ステップS103では、分散オブジェクト生成管理部13は、利用要求のあった分散オブジェクトサーバが稼働中であるか否かを判定する。稼働中である場合はステップS108へ進み、稼働中でない場合はステップS104へ進む。
【0149】
ステップS104では、分散オブジェクト生成管理部13は、取得したpidを用いてレジストリリダイレクタ11に直接照会を行って、利用要求元プロセスが監視対象であるか否かを判定する。当該プロセスが監視対象である場合はステップS105へ進み、監視対象でない場合はステップS106へ進む。
【0150】
レジストリリダイレクタ11と分散オブジェクト生成管理部13は、共にシステム領域に存在する。そのため、分散オブジェクト生成管理部13は、共通ユーザ領域に存在する全体制御部20を介在させることなく、レジストリリダイレクタ11に直接照会することができる。
【0151】
ステップS105では、分散オブジェクト生成管理部13は、全体制御部20に対して、監視対象分散オブジェクトサーバ21の生成・起動を依頼する。
全体制御部20は、分散オブジェクト生成管理部13から上記の依頼を受けると、自身の内部に保有する監視対象分散オブジェクトサーバ生成部20Gに次の処理を実行させる。
【0152】
すなわち、監視対象分散オブジェクトサーバ生成部20Gは、自らの子プロセスとして、依頼のあった監視対象分散オブジェクトサーバ21を生成・起動する(図10のステップS89)。そして全体制御部20は、自らの子プロセスとして生成・起動した監視対象分散オブジェクトサーバ21のpidを分散オブジェクト生成管理部13へ通知する(ステップS90)。
そして、分散オブジェクト生成管理部13は、全体制御部20から監視対象分散オブジェクトサーバ21のpidを取得し、ステップS107へ進む。
【0153】
ステップS106では、分散オブジェクト生成管理部13は、自らの子プロセスとして、監視対象でない分散オブジェクトサーバを生成・起動して、当該分散オブジェクトサーバのpidを取得する。
ステップS107では、分散オブジェクト生成管理部13は、取得したpidを用いて、新たに生成・起動された分散オブジェクトサーバの管理を開始する。
【0154】
ステップS108では、分散オブジェクト生成管理部13は、現在稼働中の所望の分散オブジェクトサーバが監視対象であるか否かを判定する。ここまで、分散オブジェクト生成管理部13は、監視対象となる分散オブジェクトサーバについては全体制御部20からそのpidを取得し(ステップS105)、監視対象でない分散オブジェクトサーバについては自身がそれを生成・起動し、そのpidを取得してきた(ステップS106)。
【0155】
これより、分散オブジェクト生成管理部13は、全体制御部20又はレジストリリダイレクタ11にpidを照会することなく、稼働中の分散オブジェクトサーバのpidの取得状況に基づいて、当該分散オブジェクトサーバが監視対象であるか否かを自ら判定することができる。すなわち、分散オブジェクト生成管理部13は、この判定結果を保持する機能を有し、当該機能を利用することで、前述の分散オブジェクトサーバが監視対象であるか否を判定してもよい。
【0156】
分散オブジェクト生成管理部13は、現在稼働中の分散オブジェクトサーバが監視対象であるか否かの判定結果を保持する機能を有しない場合は、自らが管理する当該稼働中の所望の分散オブジェクトサーバのpidを同定し、これをレジストリリダイレクタ11に直接照会を行うことで、当該稼働中の所望の分散オブジェクトサーバが監視対象であるか否かを判定してもよい。そして、当該稼働中の所望の分散オブジェクトサーバが監視対象である場合はステップS109へ進み、監視対象でない場合はステップS110へ進む。
【0157】
ステップS109では、分散オブジェクト生成管理部13は、ステップS102で取得した利用要求元プロセスのpidを用いてレジストリリダイレクタ11に直接照会を行って、当該利用要求元プロセスが監視対象であるか否かを判定する。当該利用要求元プロセスが監視対象である場合はステップS111へ進み、監視対象でない場合はステップS112へ進む。
【0158】
ステップS110では、分散オブジェクト生成管理部13は、ステップS109と同様に、当該利用要求元プロセスが監視対象であるか否かを判定する。当該利用要求元プロセスが監視対象である場合はステップS112へ進み、監視対象でない場合はステップS111へ進む。
【0159】
ステップS111では、次の状態1又は状態2になっている。
(状態1)所望の分散オブジェクトサーバは監視対象(監視対象分散オブジェクトサーバ21)であり、さらに、その利用要求元プロセスも監視対象(監視対象ユーザプロセス32)である。このとき、利用要求元の監視対象ユーザプロセス32が所望の監視対象分散オブジェクトサーバ21にアクセスしても、共に監視対象であるので、問題は生じない。
(状態2)所望の分散オブジェクトサーバは監視対象ではなく、さらに、その利用要求元プロセスも監視対象ではない。これは通常動作であり、このとき、利用要求元プロセスが所望の分散オブジェクトサーバにアクセスしても、共に監視対象外にあるので、問題は生じない。
【0160】
そこで、分散オブジェクト生成管理部13は、利用要求元プロセスに対して、所望の分散オブジェクトサーバへのアクセス方法を含む応答を返す。そして、再びステップS101に戻る。
【0161】
なお、所望の分散オブジェクトサーバが稼働していない場合(ステップS103の否定判定)、ステップS104からステップS107までの処理が実行され、所望の分散オブジェクトサーバが生成・起動される。この場合、利用要求元プロセスが監視対象であれば、生成された分散オブジェクトサーバも監視対象(監視対象分散オブジェクトサーバ21)となる。一方、利用要求元プロセスが監視対象でなければ(通常プロセスであれば)、生成・起動された分散オブジェクトサーバも監視対象ではない。
【0162】
したがって、利用要求元プロセスの利用要求に応じて、ステップS104からステップS107までの処理によって所望の分散オブジェクトサーバが新規生成・起動された場合は、ステップS108及びステップS109で共に肯定判定となるか、ステップS108及びステップS110で共に否定判定となる。その結果、分散オブジェクト生成管理部13は、利用要求元プロセスによる所望の分散オブジェクトサーバの利用要求を必ず許可し、当該分散オブジェクトサーバへのアクセス方法を含む応答を返すことになる(ステップS111)。
【0163】
ステップS112では、次の状態3又は状態4になっている。
(状態3)所望の分散オブジェクトサーバは監視対象(監視対象分散オブジェクトサーバ21)であるが、その利用要求元プロセスは監視対象ではない。
(状態4)所望の分散オブジェクトサーバは監視対象ではないが、その利用要求元プロセス(監視対象ユーザプロセス32)は監視対象である。
【0164】
状態3あるいは状態4の状況は、あるプロセスが所望する分散オブジェクトサーバが、他のユーザのプロセスからの利用要求に基づいて既に稼働しており(ステップS103の肯定判定)、ステップS104からステップS107までの処理が実行されなかった場合に起こり得る。すなわち、当該他のユーザのプロセスが監視対象でなかった場合、当該稼働中の所望の分散オブジェクトサーバもまた監視対象でない。従って、もし利用要求元プロセスが監視対象であった(監視対象ユーザプロセス32)ならば、状態4の状況となる。
【0165】
このような状況で、利用要求元プロセスから所望の分散オブジェクトサーバへのアクセスを許可すると、いずれか一方のプログラム動作の監視漏れが生じてしまう。
そこで、ステップS112では、分散オブジェクト生成管理部13は、利用要求元プロセスに対して、所望の分散オブジェクトサーバへのアクセス拒否応答を返す。そして、再びステップS101に戻る。
【0166】
なお、ステップS112で示したアクセス拒否応答を解決するためには、現在稼働中の所望の分散オブジェクトサーバを一旦停止し、その後、当該所望の分散オブジェクトサーバを、利用要求元プロセスと同じ監視状況(監視対象であるか否か)で再起動する必要がある。その理由は次の通りである。
【0167】
レジストリリダイレクタ11及びファイルシステムリダイレクタ12は、監視対象分散オブジェクトサーバ21が存在する場合に、特殊な保護動作を行う(図6から図9参照)。これより、仮に稼働中の所望の分散オブジェクトサーバが停止することなく非監視対象から監視対象に変更されると、上述した特殊な保護動作を、整合性を保持しつつ維持することができなくなる。すなわち、非監視対象から監視対象への変更は、所望の分散オブジェクトサーバが稼働中でないときに実施する必要があるので、上述の処理が必要になる。
【0168】
また、仮に、稼働中の所望の分散オブジェクトサーバが停止することなく監視対象から非監視対象に変更されると、当該所望の分散オブジェクトサーバによるファイルの取り扱いについて問題が発生するおそれがある。例えば、監視対象分散オブジェクトサーバ21がファイルを新規生成すると、そのファイルは隔離フォルダにのみ配置される。しかし所望の監視対象分散オブジェクトサーバ21が停止することなく非監視対象に変更されたならば、当該所望の分散オブジェクトサーバはもはや隔離フォルダ内の当該新規生成ファイルにアクセスすることができない。このような問題を回避するためにも、所望の分散オブジェクトサーバの監視状況を変更する場合、当該所望の分散オブジェクトサーバを一旦終了させた上で、監視状況変更後の所望の分散オブジェクトサーバを最初からリスタートしなければならない。
【0169】
[変形例]
ここまでの説明では、所望の分散オブジェクトサーバが高々1つのプロセスとしてのみ生成・起動されることを前提とした。以下では、所望の分散オブジェクトサーバが複数のプロセスとして生成・起動できる場合を想定する。分散オブジェクト生成管理部13は、複数の分散オブジェクトサーバの各々の監視状況(監視対象であるか否か)も併せて個別に管理し、利用要求元プロセスから所望の分散オブジェクトサーバの利用要求があった場合に、当該利用要求元プロセスと同じ監視状況にある分散オブジェクトサーバを選択して、当該要求元プロセスに対して、当該分散オブジェクトサーバへのアクセス方法を含む応答を返してもよい。
【0170】
ところで、分散オブジェクト生成管理部13は、元々はOSの標準機能ブロックの1つとして提供されるものである。そこで、OSの標準機能からの改変を最小限にすべく、利用要求元プロセス自体が、所望の分散オブジェクトサーバの稼働の有無を、その監視状況も含めて直接判定してもよい。この場合、分散オブジェクト生成管理部13は、単に次のルーチンを実行すればよい。
【0171】
図14は、分散オブジェクト生成管理部13による第2の分散オブジェクトサーバ生成管理ルーチンを示すフローチャートである。なお、図12と同じ処理を行うステップについては図12と同一の符号が付される。
【0172】
ここでは、利用要求元プロセスは、その前提として、(a)その起動時に自らのpidを用いて全体制御部20に照会することによって自らが監視対象であること(監視対象ユーザプロセス32)を予め知っており、(b)所望する分散オブジェクトサーバが監視対象(監視対象分散オブジェクトサーバ21)として既に稼働しているか否かを予め知っている(これらは、利用要求元プロセスに当該機能を果たすフックを注入することで実現可能である)ものとする。
【0173】
通常の(監視対象でない)プロセスは、分散オブジェクト生成管理部13に対して、所望の分散オブジェクトサーバの利用を要求する場合、一般的に自らのpidを伝えることはない。そこで、利用要求元プロセスは、自らが監視対象(監視対象ユーザプロセス32)の場合、自らのpidを入れた利用要求通知を分散オブジェクト生成管理部13へ送信する。
【0174】
ステップS101では、分散オブジェクト生成管理部13は、利用要求元プロセスから所望の分散オブジェクトサーバの利用要求があるか否かを判定する。利用要求がある場合はステップS121へ進み、利用要求がない場合は利用要求があるまで待機する。
【0175】
ステップS121では、分散オブジェクト生成管理部13は、利用要求通知に利用要求元プロセスのpidが含まれているか否かを判定する。利用要求元プロセスのpidが含まれている場合はステップS105へ進み、当該pidが含まれていない場合はステップS106へ進む。
【0176】
ステップS105では、分散オブジェクト生成管理部13は、全体制御部20に、当該所望の監視対象分散オブジェクトサーバ21の生成・起動を依頼する。全体制御部20は、自らの子プロセスとして当該所望の監視対象分散オブジェクトサーバ21を生成・起動した後、そのpidを分散オブジェクト生成管理部13へ通知する。
【0177】
そして、分散オブジェクト生成管理部13は、全体制御部20から当該所望の監視対象分散オブジェクトサーバ21のpidを取得し、ステップS107へ進む。
【0178】
ステップS106では、分散オブジェクト生成管理部13は、自らの子プロセスとして、監視対象ではない当該所望の分散オブジェクトサーバを生成・起動して、その分散オブジェクトサーバのpidを取得する。そして、ステップS107へ進む。
【0179】
ステップS107においても、生成・起動された分散オブジェクトサーバを管理するのは、(監視対象であるか否かに関わらず)分散オブジェクト生成管理部13である。
したがって、ステップS107では、分散オブジェクト生成管理部13は、取得したpidを用いて、新たに生成・起動された当該所望の分散オブジェクトサーバの管理を直ちに開始する。そして、ステップS111へ進む。
【0180】
ステップS111では、分散オブジェクト生成管理部13は、利用要求元プロセスに対して、当該所望の分散オブジェクトサーバへのアクセス方法を含む応答を返す。そして、再びステップS101に戻る。
以上のように、図14に示すルーチンよれば、分散オブジェクト生成管理部13の改変は、同図の太破線枠で示した範囲に限定される。
【0181】
ところで、本実施形態では、分散オブジェクトサーバは、監視対象であるか否かに関わらず、他のユーザと共有できるように、共通ユーザ領域にて生成・起動される。
しかし、セキュリティ上の理由などから、分散オブジェクトサーバの利用を、それが監視対象である場合、利用要求元プロセス、又は利用要求元プロセスを保有するユーザに割り当てられた個別ユーザ領域にて生成・起動された監視対象ユーザプロセス32のみに限定することも想定される。この場合、監視対象分散オブジェクトサーバ21は、利用要求元プロセスが生成・起動された個別ユーザ領域にて生成・起動してもよい。
【0182】
この場合、図3に示すステップS14の処理は、ステップS8の肯定判定後からステップS10の前まで(ステップS9の直前又は直後)に実施される。ここでは、さらに、全体制御部20の代わりに、当該ユーザに割り当てられた監視対象ユーザプロセス生成部31が、監視対象分散オブジェクトサーバ21を生成・起動してもよい。
【0183】
なお、監視対象プロセスの監視対象とするプログラム動作は、上述した動作に限定されるものではなく、例えばプロセス間通信も該当する。つまり、TCP/IPネットワーク通信なども監視対象の1つとなる。
【0184】
例えばOSがマイクロソフト社のWindows(登録商標)の場合、例えばWFP(Windows Filtering Platform)と呼ばれるフィルタドライバを作成し、それをシステム領域で動作させるとよい。これにより、監視対象プロセスによるTCP/IPネットワーク通信に対して、レジストリリダイレクタ11を用いたレジストリアクセス動作の監視、制御、保護に類似した機能が実現される。
【0185】
[第2の実施形態]
つぎに、本発明の第2の実施形態について説明する。なお、第1の実施形態と同一の部位・処理については同一の符号を付し、重複する説明は省略する。
【0186】
第1実施形態では、分散オブジェクト生成管理部13は、監視対象ユーザプロセス32から所望の分散オブジェクトサーバの利用要求の依頼があった場合、指定された監視対象分散オブジェクトサーバ21の生成・起動を含め、その依頼そのものを全体制御部20へリダイレクト(転送)していた。
【0187】
これに対して、第2の実施形態では、分散オブジェクト生成管理部13は、監視対象ユーザプロセス32から所望の分散オブジェクトサーバの利用要求の依頼があった場合、自ら当該分散オブジェクトサーバを生成・起動する。
【0188】
この場合、監視対象とすべき指定された分散オブジェクトサーバの生成・起動から当該分散オブジェクトサーバが実際に監視される(監視対象分散オブジェクトサーバ21となる)までの間に、当該分散オブジェクトサーバの動作が進んでしまうと、プログラム動作の監視に漏れが生じるおそれがある。
【0189】
そこで、第2の実施形態では、分散オブジェクト生成管理部13は、監視対象とすべき指定された分散オブジェクトサーバを自ら生成した場合、当該分散オブジェクトサーバの動作を一旦停止させる。そして、分散オブジェクト生成管理部13は、当該分散オブジェクトサーバのpidをレジストリリダイレクタ11へ通知し、その登録完了応答を得て当該分散オブジェクトサーバが監視対象(監視対象分散オブジェクトサーバ21)になったことを確認してから、当該分散オブジェクトサーバの動作を再開させる。
【0190】
つまり、分散オブジェクト生成管理部13とレジストリリダイレクタ11との間での同期処理を図ることによって、指定された分散オブジェクトサーバのプログラム動作の監視漏れを防止する。具体的には、図12に示す分散オブジェクトサーバ生成管理ルーチンの代わりに、図15に示す第3の分散オブジェクトサーバ生成管理ルーチンが実行される。
【0191】
図15は、第3の分散オブジェクトサーバ生成管理ルーチンを示すフローチャートである。なお、ステップS101からステップS103までは、図12と同様である。ステップS103の否定判定後は、図15のステップS131に進む。
【0192】
ステップS131では、分散オブジェクト生成管理部13は、指定された分散オブジェクトサーバが稼働していないので、当該分散オブジェクトサーバを自ら生成し、生成した分散オブジェクトサーバのpidを取得する。本ステップは、分散オブジェクト生成管理部13が従来から行っている通常処理である。
【0193】
ステップS132では、分散オブジェクト生成管理部13は、ステップS101で取得したpidを用いてレジストリリダイレクタ11に直接照会を行って、利用要求元プロセスが監視対象であるか否かを判定する。当該プロセスが監視対象である場合はステップS133へ進み、当該プロセスが監視対象でない場合はステップS135へ進む。
【0194】
ステップS133では、分散オブジェクト生成管理部13は、ステップS131で取得した分散オブジェクトサーバのpidをレジストリリダイレクタ11に通知する。
ステップS134では、分散オブジェクト生成管理部13は、レジストリリダイレクタ11から通知されたpidの登録が完了した旨の応答があるか否かを判定する。登録が完了した旨の応答がある場合はステップS135へ進み、登録が完了した旨の応答がない場合はその応答があるまで待機する。
【0195】
ステップS135では、分散オブジェクト生成管理部13は、ステップS131で生成した分散オブジェクトサーバを起動して、当該分散オブジェクトサーバの管理を開始する。そして、図13に示すステップS108へ進む。本ステップは、分散オブジェクト生成管理部13が従来から行っている通常処理である。
【0196】
以上のように、分散オブジェクト生成管理部13は、指定された分散オブジェクトサーバの生成後から起動前までの期間に、当該分散オブジェクトサーバのpidをレジストリリダイレクタ11へ通知し、それを登録させる。これにより、監視対象である当該分散オブジェクトサーバが監視前に動作を開始することがなくなり、プログラム動作の監視漏れを回避することができる。
【0197】
なお、本発明は、上述した実施形態に限定されるものではなく、特許請求の範囲に記載された事項の範囲内で設計変更されたものにも適用される。
【符号の説明】
【0198】
1 プログラム動作監視システム
11 レジストリリダイレクタ
12 ファイルシステムリダイレクタ
13 分散オブジェクト生成管理部
20 全体制御部
20G 監視対象分散オブジェクトサーバ生成部
21 監視対象分散オブジェクトサーバ
31 監視対象ユーザプロセス生成部
32 監視対象ユーザプロセス
32P 印刷動作監視部
32C クリップボード動作監視部
【要約】
【課題】プログラム動作の監視において、監視対象とするプロセスのプログラム動作だけでなく、当該プロセスの利用要求によって生成・起動された分散オブジェクトサーバのプログラム動作についても漏れなく監視する。
【解決手段】全体制御部20は、監視対象ユーザプロセス32や監視対象分散オブジェクトサーバ21の識別情報をレジストリリダイレクタ11の監視対象プロセスリストに登録する。全体制御部20は、問い合わせ先から任意のプロセスが監視対象であるか否かの問い合わせがあった場合に、当該プロセスの識別情報を監視対象プロセスリストに照会して、当該プロセスが監視対象であるか否かの情報を問い合わせ先に返信する。全体制御部20は、分散オブジェクト生成管理部13が監視対象ユーザプロセス32から分散オブジェクトサーバの利用要求を受けた場合に、当該分散オブジェクト生成管理部13から所定の通知を受信する。
【選択図】図1
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15