(57)【要約】  【課題】クライアントに提供されたユーザデータを複製又は移動させて目的以外に利用できないようにし、監視するためのデータ管理プログラムを提供する。  【解決手段】クライアントコンピュータ１２のアクティブウィンドウから、ユーザデータ３を、マウス７０の操作のみで、別のウインドウに複製又は移動させる操作を行う場合、マウスポインタの移動を制限する。また、ユーザデータ３を、クリップボードを介して、複製又は移動をするとき、そのクリップボードの内容を別のメモリに移して、複製又は移動を制限する。これらの制限は、制御対象リスト２５０の値を参照して行う。制御対象リスト２５０には、アプリケーションプログラムの実行ファイル、実行ファイルのプロセス、及びプロセスが所有するウインドウの中から選択される１以上のデータが制御対象データとして登録されている。  【選択図】図２５
2009230587.tif 000002
【特許請求の範囲】
【請求項１】
ユーザデータを格納した記憶装置（８）が前記電子計算機（１２）に接続され、前記ユーザデータが前記電子計算機（１２）上に読み出されてアプリケーションプログラム（２０）によって閲覧又は編集され、かつ、前記電子計算機（１２）の入力装置から入力された入力データによって、前記アプリケーションプログラム（２０）が操作されて前記閲覧又は編集が行われているとき、前記ユーザデータが前記電子計算機（１２）から外部へ漏洩されないように制御するための電子計算機のデータ管理方法において、
前記制御が必要な制御対象アプリケーションプログラムのリストである制御対象リスト（１５０、２５０）が作成され、前記制御対象リスト（１５０、２５０）には、前記アプリケーションプログラムの実行ファイル、前記実行ファイルのプロセス、及び前記プロセスが所有するウインドウの中から選択される１以上のデータが制御対象データとして登録され、
前記電子計算機（１２）のディスプレイに表示されている前記アプリケーションプログラム（２０）のウインドウである複製元ウインドウから、前記複製元ウインドウに表示されているテキストデータ及び／又は画像データを含む前記ユーザデータの全部又は一部を、前記入力装置（７０，８０）からの操作のみで選択し、
前記入力装置（７０，８０）からの操作のみで、前記選択された前記ユーザデータである選択ユーザデータを、別のウインドウである複製先ウインドウに複製又は移動させる操作を行う場合、前記複製元ウインドウ、前記複製元ウインドウを所有する前記アプリケーションプログラム（２０）、及び前記複製元ウインドウを所有する前記プロセスの中から選択される１以上が前記制御対象データとして登録されているとき、前記複製又は前記移動を制限して、前記制御を行う
ことを特徴とする電子計算機のデータ管理方法。
【請求項２】
請求項１に記載の電子計算機のデータ管理方法において、
前記電子計算機（１２）は、
前記電子計算機（１２）を動作させているオペレーティングシステムの全ての命令が実行できるカーネルモードで動作し、前記電子計算機（１２）に接続されているデバイスを直接制御するためのデバイスドライバ（３５、３６）同士の通信、又は前記デバイスドライバ（３５、３６）と前記電子計算機上で動作するアプリケーションプログラム（２０）との通信に共通のインターフェースを提供するための手段で、かつ、
前記アプリケーションプログラム（２０）から出力される命令及び／又はデータを含む第１データを受信し、前記命令の実行結果及び／又は前記デバイスドライバ（３５、３６）から受信した受信データを含む第２データを、前記アプリケーションプログラム（２０）に送信するためのアプリケーションプログラムインターフェース部（５１）と、
前記デバイスドライバ（３５、３６）へ、前記命令及び／又は前記データを含む第３データを送信し、前記デバイスドライバ（３５、３６）から前記命令の実行結果及び／又は前記受信データを含む第４データを受信するためのデバイスドライバ制御部（４５、４６）と、
前記第１データ又は前記第４データを処理し、前記第２データ又は前記第３データを生成して、前記第１ないし４データの制御を行うための制御部（５２）と
からなる
ドライバウェア手段（５０）を有し、
前記ドライバウェア手段（５０）は、前記アプリケーションプログラム（２０）が起動するとき、前記実行ファイルのファイル名、前記実行ファイルのファイルパス、前記プロセスのプロセス名（１５２）、及び前記プロセスのプロセスＩＤ（１５３）の中から選択される１以上のである制御データを取得し、前記制御対象リスト（１５０、２５０）に登録するものであり、
前記制御部（５２）は、前記入力データを解析して、前記入力データが前記複製又は前記移動させる操作であるか否かを判定し、
前記入力データが前記複製又は前記移動させる操作である場合、前記制御部（５２）は、前記複製元ウインドウを所有する前記アプリケーションプログラム（２０）が前記制御対象リスト（１５０、２５０）に登録されているか否かを確認し、
前記アプリケーションプログラム（２０）が前記制御対象リスト（１５０、２５０）の値と一致し、かつ、前記ユーザデータの前記複製又は前記移動を制限する必要がある場合、前記制御部（５２）は、前記入力装置（７０，８０）の前記入力データを制御し前記制限をする旨の命令を発する
ことを特徴とする電子計算機のデータ管理方法。
【請求項３】
請求項１又は２に記載の電子計算機のデータ管理方法において、
前記入力装置はマウス（７０）であり、
前記制限は、（１）前記ディスプレイ上に表示されている前記マウス（７０）のマウスポインタを、前記複製元ウインドウの範囲から出ないように制限し、又は、（２）前記マウスポインタが前記複製先ウインドウに移動したとき、前記選択ユーザデータを前記複製先ウインドウの中に挿入するドロップ操作を禁止することで、前記マウス（７０）による前記複製又は前記移動の操作を制御する
ことを特徴とする電子計算機のデータ管理方法。
【請求項４】
請求項３に記載の電子計算機のデータ管理方法において、
前記電子計算機（１２）を動作させているオペレーティングシステムが提供するもので、前記マウス（７０）を操作するときに発生する、マウスイベントを取得し、
前記マウスイベントから前記ディスプレイに表示されているアクティブウィンドウに関するデータを取得して、
前記マウスポインタの座標及び前記アクティブウィンドウの座標が一致するとき、前記アクティブウィンドウが前記制御対象データに登録されているか否かを判定し、
前記制御対象データに登録されている場合は、前記マウスによる前記複製又は前記移動の操作を制御し、
前記制御対象データに登録されていない場合は、前記マウスによる前記複製又は前記移動の操作を制御しない
ことを特徴とする電子計算機のデータ管理方法。
【請求項５】
請求項１又は２に記載の電子計算機のデータ管理方法において、
前記複製先ウインドウに前記複製又は前記移動させる前記操作は、前記選択ユーザデータを、クリップボードに複製又は移動して、前記複製先ウインドウに前記クリップボードから挿入する操作であり、
前記制御は、前記クリップボードを介した、前記複製又は前記移動を実行させないものであり、
前記クリップボードに格納されている前記選択ユーザデータを、別メモリ領域に複製して格納し、
前記クリップボード内の前記選択ユーザデータを削除し、
前記複製先ウインドウに前記クリップボードの内容を挿入する操作が行なわれたとき、前記入力装置であるマウスを操作するときに発生する、マウスイベントを取得し、
前記マウスイベントからアクティブウィンドウに関するデータを取得して、
前記マウスポインタの座標及び前記アクティブウィンドウの座標が一致するとき、前記アクティブウィンドウが前記制御対象データに登録されているか否かを判定し、
前記制御対象データに登録されている場合は、前記マウスによる前記複製又は前記移動の操作を制御し、
前記制御対象データに登録されていない場合は、前記別メモリ領域に格納されている前記選択ユーザデータを前記クリップボードにコピーし、前記クリップボードから前記指定の場所に、前記選択ユーザデータが挿入される
ことを特徴とする電子計算機のデータ管理方法。
【請求項６】
請求項１又は２に記載の電子計算機のデータ管理方法において、
前記複製先ウインドウに前記複製又は前記移動させる前記操作は、前記選択ユーザデータを、クリップボードに複製又は移動して、前記複製先ウインドウに前記クリップボードから挿入する操作であり、
前記制御は、前記クリップボードを介した、前記複製又は前記移動を実行させないものであり、
前記クリップボードに格納されている前記選択ユーザデータを、別メモリ領域に複製して格納し、
前記クリップボード内の前記選択ユーザデータを削除し、
別の前記アプリケーションプログラム（２０）から前記クリップボードの内容を取得する操作が行なわれたとき、
前記別の前記アプリケーションプログラム（２０）の所有する前記複製先ウインドウに関するデータを取得し、
前記複製先ウインドウが、前記制御対象データに登録されているか否かを判定し、
前記制御対象データに登録されている場合は、前記操作を制御し、
前記制御対象データに登録されていない場合は、前記別メモリ領域に格納されている前記選択ユーザデータを前記クリップボードにコピーし、前記クリップボードから前記指定の場所に、前記選択ユーザデータが挿入される
ことを特徴とする電子計算機のデータ管理方法。
【請求項７】
請求項５又は６に記載の電子計算機のデータ管理方法において、
前記ディスプレイの全体又は一部をイメージとしてキャプチャし、前記クリップボードに格納する機能を有する前記入力装置の機能を無効に設定する
ことを特徴とする電子計算機のデータ管理方法。
【請求項８】
ユーザデータ（３）を格納した記憶装置（８）が前記電子計算機（１２）に接続され、前記ユーザデータ（３）が前記電子計算機（１２）上に読み出されてアプリケーションプログラム（２０）によって閲覧又は編集され、かつ、前記電子計算機（１２）の入力装置から入力された入力データによって前記アプリケーションプログラム（２０）が操作されて前記閲覧又は編集が行われているとき、前記ユーザデータ（３）が前記電子計算機（１２）から外部へ漏洩されないように制御する機能を電子計算機（１２）に実現させるための電子計算機のデータ管理プログラムにおいて、
前記電子計算機（１２）の内蔵又は外付けの記録装置である第２記憶装置又は前記記憶装置に格納されている制御対象リスト（１５０、２５０）には、前記制御が必要な前記アプリケーションプログラム（２０）の実行ファイル、前記実行ファイルのプロセス、及び前記プロセスが所有するウインドウの中から選択される１以上のデータが制御対象データとして登録されていて、
前記入力装置から入力された入力操作を取得するステップ、
前記電子計算機（１２）のディスプレイに表示されている前記アプリケーションプログラム（２０）のウインドウである複製元ウインドウから、前記複製元ウインドウに表示されているテキストデータ及び／又は画像データを含む前記ユーザデータの全部又は一部が、前記入力装置からの前記入力操作のみで選択されたかを判定するステップ、
前記選択された前記ユーザデータである選択ユーザデータを、前記入力装置からの前記入力操作のみで、別のウインドウである複製先ウインドウに複製又は移動させる操作であるか否かを判定するステップ、
前記複製元ウインドウ、前記複製元ウインドウを所有する前記アプリケーションプログラム（２０）、及び前記複製元ウインドウを所有する前記プロセスの中から選択される１以上が、前記制御対象リスト（１５０，２５０）に登録されているか否かを確認するステップ、及び、
前記制御対象リスト（１５０，２５０）に登録されている場合、前記複製又は前記移動を制限するステップ
からなることを特徴とする電子計算機のデータ管理プログラム。
【請求項９】
請求項８に記載の電子計算機のデータ管理プログラムにおいて、
前記電子計算機（１２）を動作させてオペレーティングシステムの全ての命令が実行できるカーネルモードで動作し、前記電子計算機（１２）に接続されているデバイス（６、２６）を直接制御するためのデバイスドライバ（３５、３６）同士の通信、又は前記デバイスドライバ（３５、３６）と前記電子計算機（１２）上で動作するアプリケーションプログラム（２０）との通信に共通のインターフェースを提供するための機能を有し、かつ、
前記アプリケーションプログラム（２０）から出力される命令及び／又はデータを含む第１データを受信し、前記命令の実行結果及び／又は前記デバイスドライバ（３５、３６）から受信した受信データを含む第２データを、前記アプリケーションプログラム（２０）に送信するためのアプリケーションプログラムインターフェース機能（５１）と、
前記デバイスドライバ（３５、３６）へ、前記命令及び／又は前記データを含む第３データを送信し、前記デバイスドライバ（３５、３６）から前記命令の実行結果及び／又は前記受信データを含む第４データを受信するためのデバイスドライバ制御機能（４５、４６）と、及び、
前記第１データ又は前記第４データを処理し、前記第２データ又は前記第３データを生成して、前記第１ないし４データの制御を行うための制御機能（５２）とを前記電子計算機（１２）に実現させるためのドライバウェアプログラム（５０）を有し、
前記ドライバウェアプログラム（５０）は、前記アプリケーションプログラム（２０）が起動するとき、前記実行ファイルのファイル名、前記実行ファイルのファイルパス、前記プロセスのプロセス名（２５２）、及び前記プロセスのプロセスＩＤ（２５３）の中から選択される１以上の制御データを取得する機能、及び、前記制御対象リスト（１５０、２５０）に登録する機能を有し、
前記制御機能（５２）は、前記入力データを解析する機能と、前記入力データが前記複製又は前記移動させる操作であるか否かを判定する機能からなり、
前記入力データが前記複製又は前記移動させる操作である場合、
前記制御機能（５２）は、前記複製元ウインドウを所有する前記アプリケーションプログラム（２０）が前記制御対象リスト（１５０，２５０）に登録されているか否かを確認する機能を有し、
前記アプリケーションプログラム（２０）が前記制御対象リスト（１５０，２５０）の値と一致し、かつ、前記ユーザデータの前記複製又は前記移動を制限する必要がある場合、前記制御機能（５２）は、前記入力装置の前記入力データを制御し前記制限をする旨の命令を発する機能をからなる
ことを特徴とする電子計算機のデータ管理プログラム。
【請求項１０】
請求項８又は９に記載の電子計算機のデータ管理プログラムにおいて、
前記入力装置はマウス（７０）であり、
前記制限は、（１）前記ディスプレイ上に表示されているマウス（７０）のマウスポインタを、前記複製元ウインドウの範囲から出ないように制限し、又は、（２）前記マウスポインタが前記複製先ウインドウに移動したとき、前記選択ユーザデータを前記複製先ウインドウの中に挿入するドロップ操作を禁止することで、前記マウスによる前記複製又は前記移動の操作を制御する
ことを特徴とする電子計算機のデータ管理プログラム。
【請求項１１】
請求項１０に記載の電子計算機のデータ管理プログラムにおいて、
前記電子計算機（１２）を動作させているオペレーティングシステムが提供するもので、前記マウス（７０）を操作するときに発生する、マウスイベントを取得する機能、
前記マウスイベントから前記ディスプレイに表示されているアクティブウィンドウに関するデータを取得する機能、
前記マウスポインタの座標及び前記アクティブウィンドウの座標が一致するとき、前記アクティブウィンドウが前記制御対象データに登録されているか否かを判定する機能、
前記制御対象データに登録されている場合は、前記マウスによる前記複製又は前記移動の操作を制御する機能、及び、
前記制御対象データに登録されていない場合は、前記マウスによる前記複製又は前記移動の操作を制御しない機能
からなることを特徴とする電子計算機のデータ管理プログラム。
【請求項１２】
請求項８又は９に記載の電子計算機のデータ管理プログラムにおいて、
前記複製先ウインドウに前記複製又は前記移動させる前記操作は、前記選択ユーザデータを、クリップボードに複製又は移動して、前記複製先ウインドウに前記クリップボードから挿入する操作であり、
前記制御する機能は、前記クリップボードを介した、前記複製又は前記移動を実行させない機能であり、
前記クリップボードに格納されている前記選択ユーザデータを、別メモリ領域に複製して格納する機能、
前記クリップボード内の前記選択ユーザデータを削除する機能、
前記複製先ウインドウに前記クリップボードの内容を挿入する操作が行なわれたとき、前記入力装置であるマウスを操作するときに発生する、マウスイベントを取得する機能、
前記マウスイベントからアクティブウィンドウに関するデータを取得する機能、
前記マウスポインタの座標及び前記アクティブウィンドウの座標が一致するとき、前記アクティブウィンドウが前記制御対象データに登録されているか否かを判定する機能、
前記制御対象データに登録されている場合は、前記マウスによる前記複製又は前記移動の操作を制御する機能、及び、
前記制御対象データに登録されていない場合は、前記別メモリ領域に格納されている前記選択ユーザデータを前記クリップボードにコピーし、前記クリップボードから前記指定の場所に、前記選択ユーザデータを挿入する機能
からなることを特徴とする電子計算機のデータ管理プログラム。
【請求項１３】
請求項８又は９に記載の電子計算機のデータ管理プログラムにおいて、
前記複製先ウインドウに前記複製又は前記移動させる前記操作は、前記選択ユーザデータを、クリップボードに移動又は複製して、前記複製先ウインドウに前記クリップボードから挿入する操作であり、
前記制御する機能は、前記クリップボードを介した、前記複製を実行させない機能であり、
前記クリップボードに格納されている前記選択ユーザデータを、別メモリ領域に複製して格納する機能、
前記クリップボード内の前記選択ユーザデータを削除する機能、
別の前記アプリケーションプログラム（２０）から前記クリップボードの内容を取得する操作が行なわれたとき、
前記別の前記アプリケーションプログラム（２０）の所有する前記複製先ウインドウに関するデータを取得する機能、
前記複製先ウインドウが、前記制御対象データに登録されているか否かを判定する機能、
前記制御対象データに登録されている場合は、前記操作を制御する機能、
前記制御対象データに登録されていない場合は、前記別メモリ領域に格納されている前記選択ユーザデータを前記クリップボードにコピーし、前記クリップボードから前記指定の場所に、前記選択ユーザデータを挿入する機能
からなることを特徴とする電子計算機のデータ管理プログラム。
【請求項１４】
請求項１３に記載の電子計算機のデータ管理プログラムにおいて、
前記ディスプレイの全体又は一部をイメージとしてキャプチャし、前記クリップボードに格納する機能を有する前記入力装置の機能を無効に設定する機能を有する
ことを特徴とする電子計算機のデータ管理プログラム。
【請求項１５】
請求項８又は９に記載の電子計算機のデータ管理プログラムにおいて、
前記記憶装置に格納されて、
前記記憶装置（８）が前記電子計算機（１２）に接続されたときに、前記電子計算機（１２）に自動的にインストールされて、動作する
ことを特徴とする電子計算機のデータ管理プログラム。
【請求項１６】
請求項９に記載の電子計算機のデータ管理プログラムにおいて、
前記記憶装置（８）は、前記ユーザデータ（３）を格納するための領域で、かつ、読み込みと書き込みすることができるユーザ領域（１０６）と、プログラムを格納するための領域で、かつ、読み込み専用のプログラム領域（１０７）とを
有し、
前記記憶装置（８）が前記電子計算機（１２）に接続されたとき、
前記プログラム領域（１０７）に格納されている専用プログラムが自動起動し、前記ドライバウェアプログラム（５０）を確認した後、前記ドライバウェアプログラム（５０）の制御モードをオンにする命令を前記ドライバウェアプログラム（５０）に送信し、
前記制御モードがオンになったとき、前記専用プログラムが前記ユーザ領域（１０６）を前記オペレーティングシステムに認識させて、前記電子計算機（１２）から前記ユーザデータ（３）にアクセス可能にする
ことを特徴とする電子計算機のデータ管理プログラム。
【請求項１７】
請求項９に記載の電子計算機のデータ管理プログラムにおいて、
前記ドライバウェアプログラム（５０）は、ログ取得機能（５３）を有する
ことを特徴とする電子計算機のデータ管理プログラム。
【請求項１８】
請求項９に記載の電子計算機のデータ管理プログラムにおいて、
前記ドライバウェアプログラム（５０）は、前記ユーザデータ（３）を暗号化するための暗号化部（５４）、及び暗号化された前記ユーザデータ（３）を復号化するための復号化部（５５）を有する
ことを特徴とする電子計算機のデータ管理プログラム。
【請求項１９】
請求項１６に記載の電子計算機のデータ管理プログラムにおいて、
前記記憶装置（８）は、前記記憶装置（８）を利用するクライアントを個人認証するための認証部を有する
ことを特徴とする電子計算機のデータ管理プログラム。
【請求項２０】
請求項８ないし１９の中から選択される１項に記載の電子計算機のデータ管理プログラムにおいて、
インターネット上のネットワークストレージ又は前記記憶装置（８）に格納されている
ことを特徴とする電子計算機のデータ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子データの管理を行うためのデータ管理システムに関する。特に、電子データが格納されているファイルへのアクセスを追跡して、監視するデータトレーサビリティのための電子計算機のデータ管理方法、及びそのためのプログラムに関する。
【背景技術】
【０００２】
個人情報、ビジネスのノウハウは、電子データの形式でファイルとしてコンピュータの記憶装置、記録媒体に保存されていることが多い。このファイルにアクセスした履歴、特にファイルの閲覧、編集、複写、印刷、送信等の履歴を取得して緊密に管理することが大事である。例えば、保険会社は、災害時に復旧マニュアルを担当者に配布している。この復旧マニュアルはノウハウの集積であり、非常に高価な情報価値がある。オフラインで配布された復旧マニュアルを外部への流出やコピーをさせたくないことがある。
【０００３】
また、メーカーは、製品の仕様書や設計書を関係者に配布している。機密情報であるこの仕様書や設計書を関係者以外には参照されないようにし、外部へ流出するのを避けたいことがある。出版物等の校正時には、原本の電子データを変更するが、原本や校正された電子データが外部へ流出することを避けたい。写真等の画像データも、同様に、原本や編集された電子データが外部へ流出することを避けたい。
【０００４】
このような要望に対応するためには、本発明の発明者等は、特許文献１に開示した内容のデータ管理用のシステム及びそのためのプログラムを開発して、クライアントに提供している。不揮発性メモリに格納されたクライアントのユーザデータを、それを処理している電子計算機から、目的以外ことに利用できないようにし、外部へ持ち出さないようにしている。
【特許文献１】ＷＯ２００７／０４９６２５  「電子計算機のデータ管理方法、プログラム、及び記録媒体」
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、マイクロソフト社のWindows（登録商標）系のオペレーティングシステムを利用する場合は、次のことが確認された。ユーザデータを用いた作業を行っているウインドウから、別のウインドウへマウスのみによってユーザデータを移せることが確認された。例えば、マウスをディスプレイ上に移動させて操作することのみで、データの複製が可能である。この複製の例を図１６に示している。図１６には、ディスプレイ上に２つのウインドウが表示され、データを複製する様子を示している。図１６には、前面のウインドウに表示されているデータの一部をマウスで選択して、色反転させている。この色反転されたデータは、背景が黒くなって表示されている。
【０００６】
この選択されたデータをマウスのみで移動させて、別ウインドウ、背面のウインドウ等の上にドロップすれば、データの複製が行なわれる。そのドロップの操作は、図中に大きな矢印で示している。データの複製が行なわれていることを操作者に分かりやすく表示するために、ディスプレイ上に移動するポインタと一緒に、四角形の図面が一緒に移動されている。つまり、作業中のウインドウ内の選択されたデータを、マウスの操作のみで、別ウインドウに移動できる。これは、クライアントに提供されたユーザデータを目的以外のことに利用することができないように、ユーザデータの複製を防止するという趣旨からみて、致命的な問題であり、この改善が望まれている。
【０００７】
本発明は上述のような技術背景のもとになされたものであり、下記の目的を達成する。
本発明の目的は、クライアントに提供されたユーザデータへのアクセスを追跡し、監視するための電子計算機のデータ管理方法、及びそのためのプログラムを提供することにある。
【０００８】
本発明の他の目的は、クライアントに提供されたユーザデータを目的以外のことに利用することができないように、ユーザデータを管理するための電子計算機のデータ管理方法、及びそのためのプログラムを提供することにある。
【０００９】
本発明の更に他の目的は、クライアントに提供されたユーザデータを目的以外のことに利用することができないように、ユーザデータの複製を防止するための電子計算機のデータ管理方法、及びそのためのプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明は、前記目的を達成するため、次の手段を採る。
本発明は、電子計算機のデータ管理方法に関するものである。また、本発明は、電子計算機のデータ管理を電子計算機に実現させるための電子計算機のデータ管理プログラムに関する。具体的には、ユーザデータを格納した記憶装置が電子計算機に接続され、ユーザデータが電子計算機上に読み出されてアプリケーションプログラムによって閲覧又は編集され、かつ、電子計算機の入力装置から入力された入力データによってアプリケーションプログラムが操作されて閲覧又は編集が行われているとき、ユーザデータが電子計算機から外部へ漏洩されないように制御する。
【００１１】
〔制御対象リスト〕
制御が必要な制御対象アプリケーションプログラムのリストである制御対象リストが作成されている。制御対象リストには、アプリケーションプログラムの実行ファイル、実行ファイルのプロセス、及びプロセスが所有するウインドウの中から選択される１以上のデータが制御対象データとして登録される。制御対象リストは、電子計算機の内蔵又は外付けの記録装置である第２記憶装置又は記憶装置に格納されている。
【００１２】
電子計算機のデータ管理方法は、次の特徴を有する。本発明の電子計算機のデータ管理方法は、制御が必要な制御対象アプリケーションプログラムのリストである制御対象リストが作成され、制御対象リストには、アプリケーションプログラムの実行ファイル、実行ファイルのプロセス、及びプロセスが所有するウインドウの中から選択される１以上のデータが制御対象データとして登録され、電子計算機のディスプレイに表示されているアプリケーションプログラムのウインドウである複製元ウインドウから、複製元ウインドウに表示されているテキストデータ及び／又は画像データを含むユーザデータの全部又は一部を、入力装置から入力された入力操作のみで選択し、入力装置からの入力操作のみで、選択されたユーザデータである選択ユーザデータを、別のウインドウである複製先ウインドウに複製又は移動させる操作を行う場合、複製元ウインドウ、複製元ウインドウを所有するアプリケーションプログラム、及び複製元ウインドウを所有するプロセスの中から選択される１以上が制御対象データとして登録されているとき、複製又は移動を制限して、制御を行うことを特徴とする。
【００１３】
〔ドライバウェア〕
電子計算機は、ドライバウェア手段を有する。ドライバウェア手段は、電子計算機を動作させているオペレーティングシステムの全ての命令が実行できるカーネルモードで動作する。ドライバウェア手段は、電子計算機に接続されているデバイスを直接制御するためのデバイスドライバ同士の通信、又はデバイスドライバと電子計算機上で動作するアプリケーションプログラムとの通信に共通のインターフェースを提供するための手段である。ドライバウェア手段は、アプリケーションプログラムインターフェース部、デバイスドライバ制御部、及び制御部からなる。
【００１４】
アプリケーションプログラムインターフェース部は、アプリケーションプログラムから出力される命令及び／又はデータを含む第１データを受信し、命令の実行結果及び／又はデバイスドライバから受信した受信データを含む第２データを、アプリケーションプログラムに送信する。デバイスドライバ制御部は、デバイスドライバへ、命令及び／又はデータを含む第３データを送信し、デバイスドライバから命令の実行結果及び／又は受信データを含む第４データを受信する。制御部は、第１データ又は第４データを処理し、第２データ又は第３データを生成して、第１〜４データの制御を行う。
【００１５】
ドライバウェア手段は、アプリケーションプログラムが起動するとき、実行ファイルのファイル名、実行ファイルのファイルパス、プロセスのプロセス名、及びプロセスのプロセスＩＤの中から選択される１以上の制御データを取得し、制御対象リストに登録する。制御部は、入力データを解析して、入力データが複製又は移動させる操作であるか否かを判定する。入力データが複製又は移動させる操作である場合、制御部は、複製元ウインドウを所有するアプリケーションプログラムが制御対象リストに登録されているか否かを確認する。アプリケーションプログラムが制御対象リストの値と一致し、かつ、ユーザデータの複製又は移動を制限する必要がある場合、制御部は、入力装置の入力データを制御し制限をする旨の命令を発すると良い。
【００１６】
〔マウスの制限〕
入力装置はマウスであり、制限は、（１）ディスプレイ上に表示されているマウスのマウスポインタを、複製元ウインドウの範囲から出ないように制限し、又は、（２）マウスポインタが複製先ウインドウに移動したとき、選択ユーザデータを複製先ウインドウの中に挿入するドロップ操作を禁止することで、マウスによる複製又は移動の操作を制御すると良い。マウスイベントは、マウスを操作するときに発生し、オペレーティングシステムによって提供される。
【００１７】
ドライバウェア手段は、このマウスイベントを取得し、マウスイベントからディスプレイに表示されているアクティブウィンドウに関するデータを取得する。マウスポインタの座標及びアクティブウィンドウの座標が一致するとき、ドライバウェア手段は、アクティブウィンドウが制御対象データに登録されているか否かを判定する。制御対象データに登録されている場合は、ドライバウェア手段は、マウスによる複製又は移動の操作を制御し、制御対象データに登録されていない場合は、マウスによる複製又は移動の操作を制御しないと良い。
【００１８】
〔クリップボードの制限〕
複製先ウインドウに複製又は移動させる操作は、選択ユーザデータを、クリップボードに複製又は移動して、複製先ウインドウにクリップボードから挿入する操作であり、制御は、クリップボードを介した、複製又は移動を実行させないものであると良い。クリップボードに格納されている選択ユーザデータを、別メモリ領域に複製して格納し、クリップボード内の選択ユーザデータを削除する。入力装置であるマウスを操作するときに、マウスイベントが発生される。複製先ウインドウにクリップボードの内容を挿入する操作が行なわれたとき、マウスイベントをドライバウェア手段が取得する。
【００１９】
ドライバウェア手段は、マウスイベントからアクティブウィンドウに関するデータを取得して、マウスポインタの座標及びアクティブウィンドウの座標が一致するとき、アクティブウィンドウが制御対象データに登録されているか否かを判定する。制御対象データに登録されている場合は、ドライバウェア手段は、マウスによる複製又は移動の操作を制御する。制御対象データに登録されていない場合は、ドライバウェア手段は、別メモリ領域に格納されている選択ユーザデータをクリップボードにコピーし、クリップボードから指定の場所に、選択ユーザデータが挿入されると良い。
【００２０】
複製先ウインドウに複製又は移動させる操作は、選択ユーザデータを、クリップボードに複製又は移動して、複製先ウインドウにクリップボードから挿入する操作であり、制御は、クリップボードを介した、複製又は移動を実行させないものであると良い。クリップボードに格納されている選択ユーザデータを、別メモリ領域に複製して格納し、クリップボード内の選択ユーザデータを削除する。別のアプリケーションプログラムからクリップボードの内容を取得する操作が行なわれたとき、別のアプリケーションプログラムの所有する複製先ウインドウに関するデータを取得する。
【００２１】
複製先ウインドウが、制御対象データに登録されているか否かを判定する。制御対象データに登録されている場合は、操作を制御する。制御対象データに登録されていない場合は、別メモリ領域に格納されている選択ユーザデータをクリップボードにコピーし、クリップボードから指定の場所に、選択ユーザデータが挿入されると良い。ディスプレイの全体又は一部をイメージとしてキャプチャし、クリップボードに格納する機能を有する入力装置の機能を無効に設定すると良い。
【００２２】
〔本発明の電子計算機のデータ管理プログラム〕
本発明の電子計算機のデータ管理プログラムは、ユーザデータを格納した記憶装置が電子計算機に接続され、ユーザデータが電子計算機上に読み出されてアプリケーションプログラムによって閲覧又は編集され、かつ、電子計算機の入力装置から入力された入力データによってアプリケーションプログラムが操作されて閲覧又は編集が行われているとき、ユーザデータが電子計算機から外部へ漏洩されないように制御する機能を電子計算機に実現させるためのプログラムである。
【００２３】
本発明の電子計算機のデータ管理プログラムは、次の特徴を有する。電子計算機の内蔵又は外付けの記録装置である第２記憶装置又は記憶装置に格納されている制御対象リストには、制御が必要なアプリケーションプログラムの実行ファイル、実行ファイルのプロセス、及びプロセスが所有するウインドウの中から選択される１以上のデータが制御対象データとして登録されている。本発明の電子計算機のデータ管理プログラムは、入力装置からの操作を取得するステップ、電子計算機のディスプレイに表示されているアプリケーションプログラムのウインドウである複製元ウインドウから、複製元ウインドウに表示されているテキストデータ及び／又は画像データを含むユーザデータの全部又は一部が、入力装置からの操作のみで選択されたかを判定するステップからなることを特徴とする。
【００２４】
また、本発明の電子計算機のデータ管理プログラムは、選択されたユーザデータである選択ユーザデータを、入力装置からの操作のみで、別のウインドウである複製先ウインドウに複製又は移動させる操作である否かを判定するステップ、複製元ウインドウ、複製元ウインドウを所有するアプリケーションプログラム、及び複製元ウインドウを所有するプロセスの中から選択される１以上が、制御対象リストに登録されているか否かを確認するステップ、及び、制御対象リストに登録されている場合、複製又は移動を制限するステップからなることを特徴とする。
【００２５】
〔ドライバウェア〕
本発明の電子計算機のデータ管理プログラムは、ドライバウェアプログラムを有すると良い。ドライバウェアプログラムは、アプリケーションプログラムインターフェース機能、デバイスドライバ制御機能、及び、制御機能を電子計算機に実現させるためのドライバウェアプログラムである。アプリケーションプログラムインターフェース機能は、電子計算機を動作させているオペレーティングシステムの全ての命令が実行できるカーネルモードで動作し、電子計算機に接続されているデバイスを直接制御するためのデバイスドライバ同士の通信、又はデバイスドライバと電子計算機上で動作するアプリケーションプログラムとの通信に共通のインターフェースを提供するための機能である。
【００２６】
アプリケーションプログラムインターフェース機能は、アプリケーションプログラムから出力される命令及び／又はデータを含む第１データを受信し、命令の実行結果及び／又はデバイスドライバから受信した受信データを含む第２データを、アプリケーションプログラムに送信する。デバイスドライバ制御機能は、デバイスドライバへ、命令及び／又はデータを含む第３データを送信し、デバイスドライバから命令の実行結果及び／又は受信データを含む第４データを受信する。制御機能は、第１データ又は第４データを処理し、第２データ又は第３データを生成して、第１〜４データの制御を行う。
【００２７】
ドライバウェアプログラムは、アプリケーションプログラムが起動するとき、実行ファイルのファイル名、実行ファイルのファイルパス、プロセスのプロセス名、及びプロセスのプロセスＩＤの中から選択される１以上の制御データを取得する機能、及び、制御対象リストに登録する機能を有する。制御機能は、入力データを解析する機能と、入力データが複製又は移動させる操作であるか否かを判定する機能からなる。入力データが複製又は移動させる操作である場合、制御機能は、複製元ウインドウを所有するアプリケーションプログラムが制御対象リストに登録されているか否かを確認する機能を有する。
【００２８】
アプリケーションプログラムが制御対象リストの値と一致し、かつ、ユーザデータの複製又は移動を制限する必要がある場合、制御機能は、入力装置の入力データを制御し制限をする旨の命令を発する機能をからなると良い。ドライバウェアプログラムは、ログ取得機能を有すると良い。ドライバウェアプログラムは、ユーザデータを暗号化するための暗号化部、及び暗号化されたユーザデータを復号化するための復号化部を有すると良い。
【００２９】
〔マウスの制限〕
入力装置はマウスであり、制限は、（１）ディスプレイ上に表示されているマウスのマウスポインタを、複製元ウインドウの範囲から出ないように制限し、又は、（２）マウスポインタが複製先ウインドウに移動したとき、選択ユーザデータを複製先ウインドウの中に挿入するドロップ操作を禁止することで、マウスによる複製又は移動の操作を制御すると良い。マウスイベントは、マウスを操作するときに発生する。マウスイベントは、電子計算機を動作させているオペレーティングシステムによって提供される。
【００３０】
本発明の電子計算機のデータ管理プログラムは、マウスイベントを取得する機能、マウスイベントからディスプレイに表示されているアクティブウィンドウに関するデータを取得する機能を有する。本発明の電子計算機のデータ管理プログラムは、マウスポインタの座標及びアクティブウィンドウの座標が一致するとき、アクティブウィンドウが制御対象データに登録されているか否かを判定する機能を有する。また、本発明の電子計算機のデータ管理プログラムは、制御対象データに登録されている場合は、マウスによる複製又は移動の操作を制御する機能、及び、制御対象データに登録されていない場合は、マウスによる複製又は移動の操作を制御しない機能からなると良い。
【００３１】
〔クリップボード〕
複製先ウインドウに複製又は移動させる操作は、選択ユーザデータを、クリップボードに複製又は移動して、複製先ウインドウにクリップボードから挿入する操作である。制御する機能は、クリップボードを介した、複製又は移動を実行させない機能である。本発明の電子計算機のデータ管理プログラムは、クリップボードに格納されている選択ユーザデータを、別メモリ領域に複製して格納する機能、クリップボード内の選択ユーザデータを削除する機能を電子計算機に実現させる。本発明の電子計算機のデータ管理プログラムは、複製先ウインドウにクリップボードの内容を挿入する操作が行なわれたとき、マウスイベントを取得する機能、マウスイベントからアクティブウインドウに関するデータを取得する機能を電子計算機に実現させる。
【００３２】
本発明の電子計算機のデータ管理プログラムは、マウスポインタの座標及びアクティブウインドウの座標が一致するとき、アクティブウインドウが制御対象データに登録されているか否かを判定する機能、制御対象データに登録されている場合は、マウスによる複製又は移動の操作を制御する機能、及び、制御対象データに登録されていない場合は、別メモリ領域に格納されている選択ユーザデータをクリップボードにコピーし、クリップボードから指定の場所に、選択ユーザデータを挿入する機能を電子計算機に実現させる。
【００３３】
複製先ウインドウに複製又は移動させる操作は、選択ユーザデータを、クリップボードに複製又は移動して、複製先ウインドウにクリップボードから挿入する操作である。制御する機能は、クリップボードを介した、複製又は移動を実行させない機能であり、クリップボードに格納されている選択ユーザデータを、別メモリ領域に複製して格納する機能からなる。制御する機能は、クリップボード内の選択ユーザデータを削除する機能からなる。別のアプリケーションプログラムからクリップボードの内容を取得する操作が行なわれたとき、制御する機能は、別のアプリケーションプログラムの所有する複製先ウインドウに関するデータを取得する機能、複製先ウインドウが、制御対象データに登録されているか否かを判定する機能からなる。
【００３４】
制御する機能は、制御対象データに登録されている場合は、操作を制御する機能、制御対象データに登録されていない場合は、別メモリ領域に格納されている選択ユーザデータをクリップボードにコピーし、クリップボードから指定の場所に、選択ユーザデータを挿入する機能からなると良い。ディスプレイの全体又は一部をイメージとしてキャプチャし、クリップボードに格納する機能を有する入力装置の機能を無効に設定する機能を有すると良い。
【００３５】
〔その他〕
本発明の電子計算機のデータ管理プログラムは、記憶装置に格納されていると良い。記憶装置が電子計算機に接続されたときに、本発明の電子計算機のデータ管理プログラムは、電子計算機に自動的にインストールされて、動作すると良い。記憶装置は、ユーザデータを格納するための領域で、かつ、読み込みと書き込みすることができるユーザ領域と、プログラムを格納するための領域で、かつ、読み込み専用のプログラム領域とを有すると良い。
【００３６】
記憶装置が電子計算機に接続されたとき、プログラム領域に格納されている専用プログラムが自動起動し、ドライバウェアプログラムを確認した後、ドライバウェアプログラムの制御モードをオンにする命令をドライバウェアプログラムに送信する。制御モードがオンになったとき、専用プログラムがユーザ領域をオペレーティングシステムに認識させて、電子計算機からユーザデータにアクセス可能にすると良い。
【００３７】
〔データ管理プログラムの格納〕
記憶装置は、記憶装置を利用するクライアントを個人認証するための認証部を有すると良い。
本発明の電子計算機のデータ管理プログラムは、ネットワーク上のネットワークストレージに格納されていると良い。このネットワークは、ＬＡＮ、ＷＡＮ、又は、インターネットであると良い。このネットワークは、有線又は無線の公衆通信網によってアクセス可能なものであると良い。
【００３８】
本発明の電子計算機のデータ管理プログラムは、読み出しのみ、読み出し書き換え可能な各種ＣＤ、各種ＤＶＤ、そして、不揮発性メモリ等等の記録媒体に記録されていると良い。本発明の電子計算機のデータ管理プログラムは、この電子計算機にリモートでアクセスできる第２電子計算機上に格納され、この電子計算機にリモートで動作すると良い。
【発明の効果】
【００３９】
本発明によると、次の効果が奏される。
本発明は、ユーザデータを格納した記憶装置をクライアントコンピュータに接続したとき、クライアントコンピュータ上に動作している管理手段によって、クライアントコンピュータに内蔵又は接続されている全ての外部記憶装置を書き込み禁止に設定し、また、ネットワークの使用も禁止するように設定することによって、ユーザデータを複製して目的以外のことに利用することを防止し、ユーザデータを適切に管理することが可能になった。
【００４０】
本発明は、ユーザデータを格納した記憶装置をクライアントコンピュータに接続したとき、クライアントコンピュータ上に動作している管理手段によって、クライアントコンピュータに内蔵又は接続されている全ての外部記憶装置を書き込み禁止するように設定し、また、ネットワークの使用も禁止するように設定することによって、ユーザデータ又はユーザデータを利用して作成された電子データの複製を制限することが可能になった。
【００４１】
本発明は、ユーザデータを格納した記憶装置をクライアントコンピュータに接続したとき、クライアントコンピュータ上に動作している管理手段によって、クライアントコンピュータがユーザデータを読み出して、ユーザデータを利用した作業を行っているウインドウ、このウインドウを操作するマウスのポインタ等を制御してユーザデータの複製、漏洩を制限することが可能になった。更に、クリップボードに格納されているデータであるクリップボードの内容を制御することによって、クリップボードを経由して、ユーザデータの複製、漏洩を制限することが可能になった。
【発明を実施するための最良の形態】
【００４２】
以下、本発明の実施の形態を図に基づいて説明する。
（本発明の実施の形態）
図１には、本発明の実施の形態の概要を図示している。サーバ側１は、少なくとも１台のサーバ２から構成され、ユーザデータ３を提供するものである。ユーザデータ３は、サーバ側１が提供している電子データである。クライアント側１０は、クライアント１１が操作するためのクライアントコンピュータ１２から構成される。クライアント１１は、サーバ側１からユーザデータ３の提供を受けて、クライアントコンピュータ１２上に作業を行う。
【００４３】
本実施の形態は、サーバ側１から提供されたユーザデータ３を用いてクライアントコンピュータ１２上で作業を行うとき、このユーザデータ３の利用状況を監視して追跡するための管理システムを提供するものである。この管理システムは、サーバ側１及びクライアント側１０の電子計算機を操作するための管理プログラム４を備えている。管理プログラム４は、ユーザデータ３をクライアントコンピュータ１２上に利用する環境を提供するためのプログラムである。また、本実施の形態は、ユーザデータ３を格納して持ち運びするためのＵＳＢメモリ８を用いる。
【００４４】
図４に図示したように、ＵＳＢメモリ８は、電子データやコンピュータプログラム等を格納するためのユーザ領域１０６と、プログラム領域１０７を備えている。ユーザデータ３は、ＵＳＢメモリ８のユーザ領域１０６に格納され、ＵＳＢメモリ８の初期設定では外部からアクセスすることができない。ＵＳＢメモリ８は、プログラム領域１０７に専用プログラム１１３を格納している。プログラム領域１０７は、ＵＳＢメモリ８の初期設定では外部からアクセスすることができない。プログラム領域１０７は、ＵＳＢメモリ８がクライアントコンピュータ１２等の電子計算機に接続され、認識されたら、電子計算機から直接アクセスすることができる。
【００４５】
専用プログラム１１３は、ＵＳＢメモリ８内のスイッチをソフトウェア的に切り替えして、電子計算機からアクセス可能にする。この詳細については、図４の説明、及び図６、７のフローチャートの説明で後述する。ユーザデータ３は、ノウハウが蓄積されたデータである。例えば、災害時に使用するための保険会社の復旧マニュアルである。また、メーカーが利用するための製品の仕様書や設計書である。更に、出版物や写真等の画像データの校正時に使うための原本の電子データである。また更には、個人情報や顧客情報等が格納されたデータファイルである。
【００４６】
個人情報としては、例えば、氏名、住所、連絡先等の情報を意味する。顧客情報としては、例えば、顧客の氏名、名称、住所、連絡先、取引の内容等の情報である。以後は、このような個人情報や顧客情報等のデータは、単にユーザデータ３と記載する。サーバ側１は、ユーザデータ３と管理プログラム４を記録媒体又は記憶装置に記録してクライアント１１に提供する。記録媒体は、例えばフラッシュメモリ、フレキシブルディスク、コンパクトディスク、ＭＯ（Magneto-Optical Disk）、ＤＶＤ（Digital Versatile Disks）等の記録媒体である。
【００４７】
記憶装置は、ＵＳＢ（Universal Serial Bus）メモリ、メモリカード、ハードディスク等の電子データを記憶して持ち運びできる装置であることが好ましい。ユーザデータ３と管理プログラム４は、同一の記録媒体又は記憶装置に記録されて、クライアント１１に提供されることが可能である。また、ユーザデータ３と管理プログラム４は、ネットワークを介してクライアント１１に提供することも可能である。ユーザデータ３は、ネットワーク共有フォルダやＮＡＳ等のネットワーク型記憶装置によって提供することができる。このように、サーバ側１からクライアント側１０にユーザデータ３と管理プログラム４を提供する方法は問わない。
【００４８】
本実施の形態では、ユーザデータ３は、ＵＳＢメモリ８に格納されてサーバ側１からクライアント側１０に提供される方法を採用する。管理プログラム４を記録媒体９に格納して、サーバ側１とクライアント側１０に提供する。しかし、これは、ユーザデータ３と管理プログラム４の提供方法、使用される記憶装置と記録媒体を制限するものではなく、同様の機能を有するものであれはどのような形態のものでも良い。本実施の形態で記憶装置として使用しているＵＳＢメモリ８は、フラッシュメモリを内蔵した携帯可能な記憶装置である。ＵＳＢメモリ８は、ＵＳＢ規格に準拠する記憶装置である。
【００４９】
ＵＳＢ規格は、電子計算機と周辺機器との間にデータ伝送を行うための規格であり、「USB Mass Storage Class」という、外部記憶装置をリムーバブルドライブとして認識するための仕様が入っている。ＵＳＢメモリ８は、このUSB Mass Storage Classに準拠し、オペレーティングシステム側が持っているMass Storage Class用のドライバを使って、ＵＳＢメモリ８と電子計算機との間で電子データの送受信を行う。ＵＳＢメモリ８は電子計算機のＵＳＢポートに差し込みされると、オペレーティングシステムにリムーバブルドライブとして認識される。
【００５０】
サーバ側１は、サーバ２からＵＳＢメモリ８にユーザデータ３を書き込む。サーバ２は、中央処理ユニット、入出力装置、ＲＯＭ、ＲＡＭ等の内蔵メモリ、ハードディスク等を備えた電子計算機である。クライアントコンピュータ１２は、図示していないが、中央処理ユニット、入出力装置、ＲＯＭ、ＲＡＭ等の内蔵メモリを備えた電子計算機である。
【００５１】
図２には、クライアントコンピュータ１２上で動作するソフトウェアの概要を図示している。本実施の形態においては、オペレーティングシステム２１は、Microsoft社のWindows XP（登録商標）である。しかし、これは、オペレーティングシステム２１を制限するものではなく、同様な機能を実現できれば、オペレーティングシステムの種類は問わない。アプリケーションプログラム２０がオペレーティングシステム２１の上に動作する。
【００５２】
図１に図示した管理プログラム４は、図２に図示したアプリケーションプラットフォームプログラム５と、ドライバウェア５０から構成される。アプリケーションプラットフォームプログラム５は、オペレーティングシステム２１のユーザモード１４で動作するアプリケーションソフトウェアである。ドライバウェア５０は、オペレーティングシステム２１のカーネルモード１５で動作するプログラムである。アプリケーションプラットフォームプログラム５とドライバウェア５０の動作と機能については、後述する。
【００５３】
クライアントコンピュータ１２は、図示していないが、キーボードやマウス等の入力装置、ディスプレイ等の出力装置、ハードディスク等の外部記憶装置、メインメモリ等のメモリを備えている。クライアントコンピュータ１２は、外付けハードディスク、スキャナ、プリンタ等の周辺機器を有することができる。これらの周辺機器は、外部デバイス６として抽象的に図示されている。また、ハードディスク、マウス、キーボード等のクライアントコンピュータ１２に内蔵されているデバイスは、内蔵デバイス２６として抽象的に図示されている。外部デバイス６は、コネクタ２２に接続される。
【００５４】
クライアントコンピュータ１２は、オペレーティングシステム２１によって制御されて動作する。クライアントコンピュータ１２上で動作するアプリケーションプログラム２０は、オペレーティングシステム２１が提供する機能を利用して、入出力装置からの入出力を行い、必要な処理をする。アプリケーションプログラム２０は、オペレーティングシステム２１のカーネルモード１５又はユーザモード１４に動作する実行可能なファイル又はソフトウェアである。例えば、アプリケーションプログラム２０は、ワードプロセッシングソフトウェア、テキストエディタ等の文書を作成、編集するためのソフトウェアであると良い。
【００５５】
更には、pdf形式のファイル等のような特定の形式のファイルを閲覧、作成、編集するためのソフトウェアであると良い。オペレーティングシステム２１は、キーボードからの入力、マウス操作の入力や画面出力等のような入出力装置からの入出力機能、外部記憶装置やメモリの管理等の基本的な機能を提供し、クライアントコンピュータ２１全体を動作させ、管理するためのソフトウェアである。オペレーティングシステム２１は、その提供する機能を実現するために多数の実行可能なプログラムから構成されるものである。
【００５６】
オペレーティングシステム２１、特に本実施の形態に用いているWindows系のオペレーティングシステムについては、多数の書籍があり、その一部から紹介する。本発明を再現するためには、これらの書籍に記述されている技術知識、特に、デバイスドライバ開発に関する知識が必要である。
Windows系のオペレーティングシステムの内部構成、その動作についての書籍一覧：
−  Inside Windows NT by Helen Custer (Microsoft Press, 1992)
−  Inside the Windows NT File System by Helen Custer (Microsoft Press, 1994)
−  Inside Microsoft Windows 2000, Third Edition by David A. Solomon, Mark E. Russinovich (Microsoft Press, 2000)。
【００５７】
デバイスドライバの基礎知識からその開発に関する知識ついての書籍一覧：
−  Programming the Microsoft Windows Driver Model by Walter Oney (Microsoft Press, 1999)
−  Programming the Microsoft Windows Driver Model, Second Edition by Walter Oney (Microsoft Press, 2002)。
ここで、オペレーティングシステム２１の構成要素の内の代表的なものから記述する。オペレーティングシステム２１は、サブシステム１３、エグゼキュティブ１６、カーネル１７、デバイスドライバ３５、３６、ハードウェア抽象化層（ＨＡＬ）１８から構成される。
【００５８】
サブシステム１３は、オペレーティングシステム２１のユーザモード１４で提供されるサービスである。エグゼキュティブ１６は、メモリの管理、プロセスとスレッドの管理、セキュリティ、Ｉ／Ｏ、ネットワーク、及びプロセス間通信等のオペレーティングシステム２１の基本的なサービスを提供するものである。カーネル１７は、スレッドスケジューリング、割り込み、例外通知、マルチプロセッサの同期等の低レベルの関数を提供する。また、カーネル１７は、エグゼキュティブ１６の内部で使用するルーチンセットと基本オブジェクトを提供する。
【００５９】
デバイスドライバ３５、３６は、図２において、第１デバイスドライバ３６、第２デバイスドライバ３５として図示されている。デバイスドライバ３５、３６は、通常は、クライアントコンピュータ１２に接続されたハードウェアごとにプログラムされ、ハードウェア抽象化層１８を介して、そのハードウェアを直接制御するものである。デバイスドライバ３５、３６は、アプリケーションプログラム２０やオペレーティングシステム２１からの入出力機能の要求（Ｉ／Ｏ呼び出し要求）を、特定のハードウェアデバイスに対する入出力機能の要求（Ｉ／Ｏ要求）に変換するサービスと、ファイルシステムやネットワークドライバ等のシステムサービスを提供する。
【００６０】
ハードウェア抽象化層１８は、カーネル１７、デバイスドライバ３５、３６、及びエグゼキュティブ１６をプラットフォーム固有のハードウェア機能から分離し抽象化するためのコード層である。即ち、ハードウェア抽象化層１８は、クライアントコンピュータ１２の内蔵デバイス２６や、クライアントコンピュータ１２に接続されている外部デバイス６等のハードウェアの機種、種類による違いを吸収し、オペレーティングシステム２１の各サービスに対して抽象化したサービスを提供する。ハードウェア抽象化層１８によって、オペレーティングシステム２１を構成する各種のサービスは、ハードウェアの機種、種類による違いを意識することなくハードウェアにアクセスすることが可能になる。
【００６１】
〔ドライバウェア５０〕
ドライバウェア５０は、デバイスドライバ間のデータの送受信をカーネルモードで実現するためのものである。ドライバウェア５０は、アプリケーションプログラム２０からデバイスドライバ３５、３６へアクセスするとき、また、デバイスドライバ３５、３６からアプリケーションプログラム２０へデータを送信するときに、共通のインターフェースを提供する。ドライバウェア５０は、オペレーティングシステム２１のカーネルモード１５で動作する。ドライバウェア５０は、デバイスドライバ３５、３６間だけではなく、オペレーティングシステム２１と複数のデバイスドライバ３５、３６との共通のデータの送受信を提供し、仲介する機能を有する。
【００６２】
ドライバウェア５０の例としては、電子計算機のインターフェースドライバプログラムとしてＷＯ０２／０９１１９５号公報等に開示されている周知の技術である。ドライバウェア５０は、アプリケーションプログラム２０からの命令やデータ等を受信し、アプリケーションプログラム２０へのデータを送信するためのアプリケーションプログラムインターフェース部５１を有する。ドライバウェア５０は、ドライバウェア５０の全体の動作を制御するための制御部５２を有する。また、ドライバウェア５０の動作の履歴を取得するためのログ取得部５３も有する。
【００６３】
更に、ドライバウェア５０は、第１デバイスドライバ３６、及び第２デバイスドライバ３５を制御するために、それぞれ第１デバイスドライバ制御部４６、及び第２デバイスドライバ制御部４５を有する。ドライバウェア５０は、送受信するデータを暗号化するための暗号化部５４、暗号化されたデータを復号化するための復号化部５５を有する。制御部５２は、第１デバイスドライバ制御部４６、第２デバイスドライバ制御部４５、アプリケーションプログラムインターフェース部５１、ログ取得部５３、暗号化部５４、復号化部５５等のドライバウェア５０の他の部を制御し、監視するためのもので、ドライバウェア５０の中核部である。
【００６４】
〔アプリケーションプラットフォームプログラム５〕
アプリケーションプラットフォームプログラム５は、アプリケーションプログラム２０と、オペレーティングシステム２１との間に位置し、これらの間に命令やデータの送受信を仲介し制御するためのアプリケーションプログラムである。アプリケーションプラットフォームプログラム５は、オペレーティングシステム２１のユーザモード１４で動作する。
【００６５】
アプリケーションプラットフォームプログラム５は、オペレーティングシステム２１のファイルシステムにアクセスするためのユーザインターフェースを提供するためのアプリケーションプログラムである。アプリケーションプラットフォームプログラム５は、アプリケーションプログラム２０の起動、これに伴うプロセスの起動を監視し、これらの属性情報を取得する機能を有する。アプリケーションプラットフォームプログラム５は、Windowsエクスプローラと互換性があるアプリケーションプログラムであるものが特に好ましい。
【００６６】
図３は、本実施の形態の概要を示す機能ブロック図である。図３には、図２に抽象的に図示したデバイスドライバ３５、３６、外部デバイス６、内蔵デバイス２６の具体的な例を図示している。また、クライアントコンピュータ１２は、ハードディスク２５等の外部記憶装置を備えている。クライアントコンピュータ１２は、周辺機器と接続するためのコネクタ２２を有する。コネクタ２２は、ＲＳ―２３２Ｃ、ＩｒＤＡ、ＵＳＢ、ＩＥＥＥ１３９４等のシリアルポート、ＩＥＥＥ１２８４、ＳＣＳＩ、ＩＤＥ等のパラレルポートであることが好ましい。
【００６７】
このシリアル転送方式は、１本の信号線で１ビットずつデータを伝送するデータ伝送の方式である。パラレル転送方式は、複数の信号線で同時に複数のビットを転送するデータ伝送の方式である。このデータ伝送は、電子計算機に内蔵されたデバイス、電子計算機とその周辺機器間のデータ伝送に用途ごとに最適なインターフェースを使用している。ここで、その代表的なものから例示する。記憶装置の場合は、パラレル転送方式が高速で、この伝送方式を採用することが多いが、ＵＳＢ規格の普及により、ＵＳＢポートを利用することが多くなっている。
【００６８】
電子計算機とプリンタとの通信には、ＩＥＥＥ１２８４ポート、ＵＳＢポートを利用することが多く、またネットワークを介することもある。クライアントコンピュータ１２は、ネットワーク７に接続するためのネットワークカード２３を備えている。更に、ＵＳＢメモリ８等のＵＳＢ規格準拠の機器を接続するためのＵＳＢポート２４を備えている。これらのコネクタ２２、ネットワークカード２３を直接制御し、通信を行うためのプログラムは、それぞれのデバイスドライバであるインターフェースドライバ３２、ネットワークドライバ３３である。
【００６９】
本実施の形態における各デバイスドライバ３２〜３４は、オペレーティングシステム２１に付属するものである。インターフェースドライバ３２は、コネクタ２２を制御するためのデバイスドライバである。ネットワークドライバ３３は、ネットワークカード２３を制御するためのデバイスドライバである。ファイルシステムドライバ３４は、ハードディスク２５等の外部記憶装置に保存されているファイル、フォルダに関する情報を管理するもので、ハードディスク２５に保存されているファイルやフォルダへのアクセスをするためのプログラムである。
【００７０】
ファイルシステムドライバ３４は、クライアントコンピュータ１２に接続されたＵＳＢ規格準拠の記憶装置へのアクセスするためのプログラムである。このアクセスは、オペレーティングシステム２１のMass Storage Class用のドライバ（図示せず）を介して行われる。アプリケーションプログラム２０は、クライアントコンピュータ１２にインストールされた又は、動作しているソフトウェアである。アプリケーションプログラム２０は、オペレーティングシステム２１のユーザモード１４上で動作する（図２を参照。）。
【００７１】
アプリケーションプログラム２０は、ハードディスク２５にアクセスして、必要なファイルを読み込んだり、書き込んだりする。また、本実施の形態では、アプリケーションプログラム２０は、Windows（登録商標）のカーネルモード１５で動作する一部のプログラムをも意味する。ドライバウェア５０は、アプリケーションプログラム２０からデバイスドライバ３２〜３４へアクセスするとき、また、デバイスドライバ３２〜３４からアプリケーションプログラム２０へデータを送信するときに、共通のインターフェースの機能、役割を果たす。ドライバウェア５０は、前述したようにアプリケーションプログラムインターフェース部５１、制御部５２、ログ取得部５３等を有する。
【００７２】
ドライバウェア５０は、通信するデータを暗号化するための暗号化部５４、暗号化されたデータを復号化するための復号化部５５を有する。また、ドライバウェア５０は、インターフェースドライバ３２を制御するためのインターフェース制御部４２を有する。ドライバウェア５０は、ネットワークドライバ３３を制御するためのネットワーク制御部４３を有する。ドライバウェア５０は、ファイルシステムドライバ３４を制御するためのファイルシステム制御部４４を有する。
【００７３】
制御部５２は、インターフェース制御部４２、ネットワーク制御部４３、ファイルシステム制御部４４等のドライバウェア５０の他の部を制御し、監視するためのもので、ドライバウェア５０の中核部である。ＵＳＢメモリ８等の記憶装置は、クライアントコンピュータ１２に接続されると、その装置のデバイスドライバによって認識された後、ファイルシステムドライバ３４から制御される。ドライバウェア５０のインターフェース制御部４２、ネットワーク制御部４３、ファイルシステム制御部４４等は、デバイスドライバ３２〜３４を制御することで、最終的には、クライアントコンピュータ１２に、接続又は内蔵されているデバイスを制御するものと理解することができる。
【００７４】
つまり、クライアントコンピュータ１２に、接続又は内蔵されているデバイスを制御するためには、既存のデバイスドライバ３２〜３４を利用している。ドライバウェア５０は、デバイスドライバ３２〜３４がオペレーティングシステム２１の他の構成部分と通信しているインターフェースをカーネルモードで制御している。
【００７５】
図４は、ＵＳＢボード２４に接続されるＵＳＢメモリ８の内部構造を示すブロック図である。図４は、筐体（図示せず）に格納されている基板１０５の構成の概要を図示している。基板１０５の上には、ユーザ領域１０６、プログラム領域１０７等が搭載されて配置されている。ユーザ領域１０６は、ユーザデータ３を格納するためのメモリである。プログラム領域１０７は、専用プログラム１１３（説明は後述する。）を格納するためのメモリである。
【００７６】
コネクタ１１４は、ＵＳＢメモリ８をクライアントコンピュータ１２に接続するためのコネクタである。ＵＳＢメモリ８は、データ等を記憶する隠し領域を持っている。例えば、認証に利用する認証データ１１６を格納した認証領域１１５を有する。この認証領域１１５に格納されている認証データ１１６は、ＵＳＢメモリ８の認証、ＵＳＢメモリ８を利用する利用者の個人認証等に使うものである。ユーザデータ３と、専用プログラム１１３は、ＵＳＢメモリ８の別々のメモリ領域であるユーザ領域１０６とプログラム領域１０７にそれぞれ格納されている。
【００７７】
ＵＳＢメモリ８がクライアントコンピュータ１２に接続されると、ユーザ領域１０６、プログラム領域１０７がリムーバブルドライブとしてオペレーティングシステム２１に認識される。ＵＳＢメモリ８の初期設定では、プログラム領域１０７がオペレーティングシステム２１からアクセス可能な状態になっている。ユーザ領域１０６は、初期設定では、クライアントコンピュータ１２からアクセスできない設定になっている。プログラム領域１０７に格納されている専用プログラム１１３は、自動起動してクライアントコンピュータ１２上で動作する。
【００７８】
専用プログラム１１３により認証を行い成功すると、この専用bプログラム１１３の命令で、ユーザ領域１０６をクライアントコンピュータ１２からアクセスできるように設定をする。この設定は、ＵＳＢメモリ８内のスイッチ（図示せず）を切り替えすることで行われる。専用プログラム１１３が行う認証は、クライアントコンピュータ１２上に導入されている管理プログラム４の確認と、クライアント１１の個人認証からなる。
【００７９】
専用プログラム１１３は、管理プログラム４と通信することによって、管理プログラム４がクライアントコンピュータ１２にインストールされていることを確認する。専用プログラム１１３は、管理プログラム４に指示して、管理プログラム４の制御モード（詳しくは、後述する。）をオンにする。クライアント１１の個人認証方法は、パスワードによる認証、バイオメトリックス認証等である方法が好ましい。本実施の形態においては、クライアント１１の個人認証は、パスワードによる認証として説明する。
【００８０】
図５は、全体の動作を示すフローチャートである。記録媒体９に格納されている管理プログラム４は、サーバ２にインストールされる（ステップ１０）。記録媒体９は、ＣＤ−ＲＯＭであることが好ましい。ＵＳＢメモリ８は、サーバ２に接続されて、ユーザデータ３がサーバ２からＵＳＢメモリ８に書き込まれる（ステップ１４）。このユーザデータ３が、サーバ２からＵＳＢメモリ８に書き込まれる詳細なフローは、図６に図示している。ＵＳＢメモリ８は、クライアント１１に渡される（ステップ１８）。
【００８１】
クライアント１１は、サーバ側１から提供されたＵＳＢメモリ８を受け取る。クライアント１１は、記録媒体９をクライアントコンピュータ１２の記録媒体用ドライブにセットして、管理プログラム４をクライアントコンピュータ１２にインストールする（ステップ２０）。クライアントコンピュータ１２にインストールされた管理プログラム４は、サーバ２にインストールされた管理プログラム４と同一のものでも良い。又は、サーバ２にインストールされた管理プログラム４とライセンス認証等によって連動して動作するものでも良い。
【００８２】
以後、クライアントコンピュータ１２にインストールされた管理プログラム４は、サーバ２にインストールされた管理プログラム４とライセンス認証によって連動し動作するものとする。このように管理プログラム４がクライアントコンピュータ１２にインストールされないと、ＵＳＢメモリ８に格納されているユーザデータ３をクライアントコンピュータ１２から読み出して、出力装置に表示してクライアント１１が閲覧することができない。ＵＳＢメモリ８に格納されているユーザデータ３は、クライアントコンピュータ１２上に管理プログラム４によって、提供された環境のみから、読み出されて利用できるように設定されている。
【００８３】
管理プログラム４がクライアントコンピュータ１２にインストールされると、管理プログラム４のライセンス認証が行われることが好ましい。このライセンス認証は、インターネット等のネットワーク７を介してサーバ側１に接続して行われると良い。また、サーバ側１からクライアント１１に提供した認証の識別番号を、クライアント１１がクライアントコンピュータ１２の入力装置から入力して行われても良い。ＵＳＢメモリ８は、クライアントコンピュータ１２のＵＳＢポート２４にクライアント１１によって挿入され、接続される（ステップ２２）。
【００８４】
クライアントコンピュータ１２上に動作しているオペレーティングシステム２１は、そのプラグアンドプレイ（ＰｎＰ）機能を利用してＵＳＢメモリ８を認識する。ＵＳＢメモリ８がクライアントコンピュータ１２に認識されると、オペレーティングシステム２１に標準装備されているMass Storage Class用のドライバを使って、オペレーティングシステム２１のファイルシステムからＵＳＢメモリ８に格納されているデータへアクセスできるようになる。管理プログラム４は、オペレーティングシステム２１がＵＳＢメモリ８を認識した結果を取得して、サーバ側１から渡されたＵＳＢメモリ８である否かの認証を行う（ステップ２３）。
【００８５】
この認証を行うとき、管理プログラム４は、ＵＳＢメモリ８の識別番号、型番、クライアントを識別するための暗証番号、又は暗号鍵等の認証領域１１５中の認証データ１１６を確認する。この認証により、管理プログラム４とＵＳＢメモリ８がペアで利用できるものか否かを確認する。この認証が正常に終わると、管理プログラム４がＵＳＢメモリ８へのアクセスの設定を行う。この認証は、ＵＳＢメモリ８に格納されていて自動起動して動作している、専用プログラム１１３と管理プログラム４が通信することによって行われる。
【００８６】
そして、クライアント１１は、クライアントコンピュータ１２からＵＳＢメモリ８に格納されているユーザデータ３にアクセスすることが可能になる（ステップ２４）。管理プログラム４は、クライアントコンピュータ１２からＵＳＢメモリ８にアクセスしているアクセス要求を全て監視する。管理プログラム４は、クライアントコンピュータ１２上で動作するアプリケーションプログラム２０と、アプリケーションプログラム２０が実行されるときに起動するプロセスの全てを監視する。管理プログラム４は、所定の条件に合うアクセス要求だけを遂行する。
【００８７】
所定の条件としては、例えば、ユーザデータ３の読み取り専用だけを許可するように設定することができる（ステップ２６）。所定の条件の設定については、図９のフローチャートに示している。この所定の条件に合致しないアクセス要求の場合、ユーザデータ３に関するアクセスは、全てを不許可し、破棄する。例えば、ユーザデータ３を書き換え、ユーザデータ３を編集して保存、ユーザデータ３を複製する等のアクセスは不許可し、破棄する。このように設定されると、クライアントコンピュータ１２内でユーザデータ３を編集することも、ハードディスク２５等の他の外部記憶装置にユーザデータ３をコピーすることもできない。
【００８８】
管理プログラム４は、ネットワーク機能、各種の通信ポート、クリップボードの利用、スクリーンキャプチャ、コピー＆ペースト機能、ネットワーク機能等の使用を禁止する設定をする。更に、管理プログラム４は、プリンタが接続されている通信ポートへの出力禁止、プリンタドライバの使用を禁止する等してプリンタの使用を禁止する設定を行う。これらの禁止設定をする例示するがこの方法だけに限るものではない。キーボードの「Ｃｔｒｌ」キー及び「ｃ」キーの押下、マウスの右クリックを禁止することで、データのコピーを禁止することができる。
【００８９】
クリップボード内のデータを自動的にクリアすることでクリップボードの利用を禁止することができる。このクリップボード利用の禁止設定方法は、具体的には、クリープボードを利用するときにイベントが発生されるので、このイベントをフックし、クリップボード内のデータを削除する。キーボードのスクリーンキャプチャ用のキーを使用禁止にすることで、スクリーンキャプチャの使用を禁止することができる。このように設定することで、ユーザデータ３を複製すること、印刷すること、他者へ送信すること、ユーザデータ３を利用して２次的な電子データを作成すること、表示画面から画像として取得することができなくなる。
【００９０】
管理プログラム４は、印刷時のデータに使用されるスプーラの使用を禁止することでプリンタへの出力禁止を行うことができる。図６は、サーバ２において、ユーザデータ３をＵＳＢメモリ８に書き込むときの流れを示すフローチャートである。ユーザデータ３（図４を参照。）は、サーバ２からＵＳＢメモリ８に書き込まれるために、サーバ２に管理プログラム４がインストールされて動作している必要がある。管理プログラム４は、記録媒体９に書き込まれてサーバ側１に提供される。サーバ２の記録媒体用ドライブに記録媒体９を設定する。管理プログラム４を記録媒体９からサーバ２にインストールする（ステップ４０）。
【００９１】
ユーザデータ３を書き込むＵＳＢメモリ８を、サーバ２に接続する（ステップ４２）。ＵＳＢメモリ８がサーバ２に認識される。ＵＳＢメモリ８は、プログラム領域１０７、ユーザ領域１０６、隠し領域等の複数のメモリ領域からなっている。これらの複数のメモリ領域内のプログラム領域１０７は、サーバ２に認識される（ステップ４４）。プログラム領域１０７に格納されている専用プログラム１１３は、自動起動し実行される（ステップ４６）。
【００９２】
専用プログラム１１３は、サーバ２に管理プログラム４がインストールされているか否かの認証を開始する（ステップ４８）。サーバ２に管理プログラム４がインストールされている場合は、パスワードによる個人認証を行う（ステップ５０）。個人認証が成功すると、専用プログラム１１３は、ＵＳＢメモリ８のユーザ領域１０６をサーバ２に認識させる。よって、ユーザ領域１０６はサーバ２からアクセスできるようになり、利用可能になる（ステップ５２、５４）。ユーザデータ３は、暗号化されて、ユーザ領域１０６に書き込まれる（ステップ５６、５８）。
【００９３】
その後、ＵＳＢメモリ８は、サーバ２から切断されて、クライアント１１に利用可能になる（ステップ６０）。専用プログラム１１３は、サーバ２に管理プログラム４がインストールされていない場合と、個人認証が成功しない場合は、ユーザ領域１０６をサーバ２に認識させない。よって、ユーザ領域１０６にユーザデータ３を書き込むことができなくなり、ＵＳＢメモリ８は利用できない（ステップ５０、５２→ステップ６６）。ここで用いられる暗号化方法は、公開鍵と秘密鍵のペアを用いる公開鍵暗号方式を採用することが好ましい。しかし、これは、暗号化する方式を限定するものではない。暗号化と復号化は、本発明の趣旨ではないので詳細な説明は省略する。
【００９４】
図７は、クライアントコンピュータ１２において、ユーザデータ３をＵＳＢメモリ８から読み出して閲覧するときの流れを示すフローチャートである。ＵＳＢメモリ８は、クライアントコンピュータ１２に接続される（ステップ７０）。クライアントコンピュータ１２は、ＵＳＢメモリ８を認識する（ステップ７２）。このとき、オペレーティングシステム２１は、ＰｎＰ機能を利用してＵＳＢメモリ８の接続を検知して認識する。ＵＳＢメモリ８の複数のメモリ領域の内のプログラム領域１０７は、クライアントコンピュータ１２に認識される。
【００９５】
ＵＳＢメモリ８が認識されると、ＵＳＢメモリ８のプログラム領域１０７に格納されている専用プログラム１１３が自動起動する（ステップ７４）。専用プログラム１１３は、クライアントコンピュータ１２に管理プログラム４がインストールされているか否かの認証を開始する（ステップ７４）。専用プログラム１１３は、クライアントコンピュータ１２に管理プログラム４がインストールされているかを確認する（ステップ７６）。
【００９６】
管理プログラム４がインストールされていない場合は、クライアント１１が管理プログラム４をインストールする（ステップ７６、９０）。管理プログラム４がクライアントコンピュータ１２にインストールされている場合は、パスワードによる個人認証を行う（ステップ７７）。個人認証が成功すると管理プログラム４を制御モードにさせる（ステップ７６、７８）。制御モードの詳細については、図９のフローチャートに図示している。管理プログラム４の制御モードの設定が終わると、専用プログラム１１３は、ＵＳＢメモリ８のユーザ領域１０６をクライアントコンピュータ１２に認識させる。
【００９７】
よって、ユーザ領域１０６はクライアントコンピュータ１２からアクセスできるようになり、利用可能になる（ステップ８０）。ユーザデータ３の読み出しが許可され、暗号化されたユーザデータ３の自動復号化も許可される（ステップ８２）。ユーザデータ３がＵＳＢメモリ８から読み出される（ステップ８４）。ＵＳＢメモリ８から読み出されたユーザデータ３は、復号化される（ステップ８６）。復号化されたユーザデータ３は、クライアントコンピュータ１２のディスプレイ等の出力装置に表示される（ステップ８８）。
【００９８】
管理プログラム４は、制御モード（図９の説明を参照。）に入ると、ハードディスク２５、ＵＳＢメモリ８、クライアントコンピュータ１２に接続されている他の周辺機器にユーザデータ３を保存できないように各装置へのアクセスを制限している。このために、クライアント１１は、ユーザデータ３をハードディスク２５や、クライアントコンピュータ１２に接続されている周辺機器に保存することができない。更には、管理プログラム４は、制御モードに入ると、ネットワーク機能、各種の通信ポート、クリップボードの利用、スクリーンキャプチャ、コピー＆ペースト機能等も使用禁止の設定にしている。よって、ユーザデータ３は、閲覧以外の操作ができなくなる。
【００９９】
図８は、管理プログラム４の動作を示すフローチャートである。管理プログラム４は、記録媒体９に格納されて、クライアント１１に渡される。管理プログラム４は、クライアント１１によって、クライアントコンピュータ１２にインストールされる（ステップ１００）。管理プログラム４は、起動されて、動作を開始する（ステップ１０２）。ＵＳＢメモリ８がクライアントコンピュータ１２に接続されると、オペレーティングシステム２１はＰｎＰ機能を利用してＵＳＢメモリ８の接続を検知して認識する。ＵＳＢメモリ８が認識されると、ＵＳＢメモリ８のプログラム領域１０７に格納されている専用プログラム１１３が自動起動する（図７のステップ７４）。
【０１００】
専用プログラム１１３は、クライアントコンピュータ１２に管理プログラム４がインストールされているかを確認する（図７のステップ７６）。管理プログラム４がクライアントコンピュータ１２にインストールされている場合は、専用プログラム１１３から管理プログラム４に、制御モードになるように指示され、管理プログラム４が制御モードに設定される（ステップ１０６）。管理プログラム４が制御モードに設定されると、専用プログラム１１３は、ＵＳＢメモリ８内のユーザ領域１０６をオペレーティングシステム２１に認識させて、利用可能な状態にする（図７のステップ８０）。
【０１０１】
管理プログラム４は、アプリケーションプログラムからＵＳＢメモリ８へのアクセスを監視する。ＵＳＢメモリ８へのアクセスがあると、それを管理プログラム４が受信する（ステップ１０８）。管理プログラム４は、アクセスの種類を確認する（ステップ１０８）。許可されているアクセスか否かを確認する（ステップ１１０）。許可されているアクセスのときは、ユーザデータ３をＵＳＢメモリ８から読み出す（ステップ１１２）。管理プログラム４は、ＵＳＢメモリ８から読み出したユーザデータ３を復号化する（ステップ１１４）。
【０１０２】
復号化されたユーザデータ３は、クライアントコンピュータ１２の出力装置に表示される（ステップ１１６）。許可されていないアクセスのときは、管理プログラム４はそのアクセスを破棄する（ステップ１１０、１２０）。このとき、不許可にされたアクセスである旨のメッセージをディスプレイに表示する際、クライアント１１が閲覧できるように表示することも可能である（ステップ１２２）。管理プログラム４は、表示されているユーザデータ３を継続して監視する（ステップ１１８）。ユーザデータ３は、データの種類によるが、適当なアプリケーションプログラム２０を起動させて表示される。
【０１０３】
例えば、ユーザデータ３は、テキストデータの場合は、テキスト編集用のアプリケーションプログラム２０に渡されて表示される。クライアント１１は、キーボードやマウス等の入力装置を操作しながら、このアプリケーションプログラム２０を操作して、ユーザデータ３を閲覧する。しかし、このアプリケーションプログラム２０からユーザデータ３を保存することはできない。また、ユーザデータ３を利用して新しく作成したファイルも保存することができない。クライアント１１は、ユーザデータ３を閲覧することだけができる。
【０１０４】
制御モードの設定によるが、仮にユーザデータ３を編集すると、このアクセスが中断される。また、ユーザデータ３をハードディスク２５等の記憶装置、記録媒体に記録するときもそれを中断する。ここで、管理プログラム４の制御モードのときの動作について説明する。制御モードは、管理プログラム４が電子計算機のどの機能を監視し、どのようなデータの流れを制御するかを定めたものである。制御モードがオンとは、管理プログラム４が電子計算機を監視し、電子計算機の機能の一部を制限している状態をいう。制御モードがオフとは、管理プログラム４が電子計算機上に動作しているが、電子計算機の機能を特に制限していない状態をいう。
【０１０５】
図９は、管理プログラム４が制御モードをオンにするときの動作を示すフローチャートである。図７のステップ７８、図８のステップ１０６に示すように、管理プログラム４が制御モードをオンにする（ステップ１３０）。このとき、管理プログラム４は、クライアントコンピュータ１２に内蔵されたハードディスク２５への書き込みを禁止にする（ステップ１３１）。また、管理プログラム４は、リムーバブルドライブへの書き込みを禁止にする（ステップ１３２）。このリムーバブルドライブには、ＵＳＢメモリ８も含まれる。
【０１０６】
よって、アプリケーションプログラム２０又はオペレーティングシステム２１からは、ＵＳＢメモリ８にデータを書き込みしようとするとき、ドライバウェア５０がこれを検知して書き込みの動作を中止させる。ＵＳＢメモリ８、内蔵のハードディスクの他に記録装置があるときは、それらへの書き込みを禁止にする（ステップ１３４）。例えば、リムーバブルドライブ、フレキシブルディスクドライブ、外付けハードディスク等である。更に、管理プログラム４は、ネットワーク通信の使用を禁止する（ステップ１３６）。
【０１０７】
例えば、ネットワーク通信の使用としては、ネットワークカード２３を介してインターネット、ＬＡＮ等へのアクセス、コンピュータ同士の通信が含まれる。このＵＳＢメモリ８の他のインターフェースの使用を禁止する。例えば、ＵＳＢ、ＳＣＳＩ、ＩＤＥ、ＲＳ−２３２Ｃ規格のインターフェースの使用を禁止にする（ステップ１３８）。更に、管理プログラム４は、コピー＆ペースト、クリープボードの使用、ネットワーク機能を禁止にする（ステップ１３９）。また、管理プログラム４は、スクリーンキャプチャの使用も禁止にする（ステップ１３９）。
【０１０８】
管理プログラム４は、オペレーティングシステム２１の正常な動作に必要なプロセスを指定し、例外設定をする（ステップ１４０）。例えば、オペレーティングシステム２１の動作に必要な「System」等を動作可能にする。管理プログラム４は、起動しているプロセスのプロセス名、プロセスＩＤを取得する（ステップ１４２）。管理プログラム４は、取得したプロセス名とプロセスＩＤを管理テーブルに保存する（ステップ１４４）。管理プログラム４が制御モードをオンにした後の、ステップ１３１〜１４０の各種の設定は、必ずしもこの順番で行う必要はなく、状況に応じて自由自在に組み合わせることができる。
【０１０９】
ＵＳＢメモリ８をクライアントコンピュータ１２から抜き取ると、オペレーティングシステム２１はこれを検知する。ＵＳＢメモリ８は、オペレーティングシステム２１にはリムーバブルドライブとして認識されているため、管理プログラム４はこれを専用プログラム１１３が格納されているＵＳＢメモリ８であるか否かの確認を行う。この確認では、ＵＳＢメモリ８が切断されたときは、管理プログラム４は、ステップ１３１〜１４０に設定した設定を全て解除する。また、ファイルの自動復号化の設定も解除にする。
【０１１０】
図１０には、制御部５２の動作のフローチャートを示している。ドライバウェア５０が制御モードをオンにするように指示されると、制御部５２はこの指示を受信し、ファイルアクセスを全て禁止する命令を送信する（ステップ２００）。この命令は、インターフェース制御部４２、ネットワーク制御部４３、ファイルシステム制御部４４に送信される。インターフェース制御部４２、ネットワーク制御部４３、ファイルシステム制御部４４は、この命令を受信して、ファイルアクセスを禁止にする。また、制御プロセスの設定、ネットワーク利用の禁止、クリップボードの利用禁止、スクリーンキャプチャの使用禁止、コピーアンドペースト機能の禁止等を行います。
【０１１１】
エグゼキュティブ１６（図２参照）のプロセスマネージャは、電子計算機上で実行されている全てのプロセスを管理している。ここに、コールバック関数を登録（カーネル１７のＡＰＩを利用）することで、プロセスの起動・終了のイベントを取得する。実行するプロセスの起動・終了イベントに対して、コールバック関数を設定し、アプリケーションプログラム２０の起動と終了を検出できるように設定する。アプリケーションプラットフォームプログラム５が動作しているときに、アプリケーションプログラム２０が起動する（ステップ２０２）。アプリケーションプラットフォームプログラム５は、アプリケーションプログラム２０の起動を検出する（ステップ２０４）。
【０１１２】
“CreateProcess”の“SUSPEND”（サスペンド）モードでアプリケーションプログラム２０のプロセスが起動され、アプリケーションプラットフォームプログラム５は、このプロセスのハンドルとプロセスＩＤを取得する。プロセスが“CreateProcess”のサスペンドモードで起動されると、プロセスが一時休止した状態になり、再開されるまでに実行されない。ハンドルは、“CreateProcess”から戻されるプロセスハンドルである。アプリケーションプラットフォームプログラム５は、取得したハンドルとプロセスＩＤを制御部５２に送信する。
【０１１３】
プロセスが起動されると、ファイルシステム制御部４４内のコールバック関数を実行し、制御部５２へ制御開始を通知する。制御部５２は、ハンドルとプロセスＩＤを取得する（ステップ２０６）。この取得の詳細な動作について後述する。制御部５２は、ファイルシステム制御部４４へハンドルとプロセスＩＤを送信し、プロセスＩＤから出されるファイルアクセスを許可する設定を行う。ファイルアクセスを許可するように設定する項目はプロセスＩＤ、プロセス名、ファイル名、フォルダ名、ファイル操作である。ファイル操作に指定される設定は、読み込み専用（Read Only）と、読み込み書き込み（Read/Write）とのいずれかを許可する設定である（ステップ２０８）。
【０１１４】
インターフェース制御部４２は、各種のインターフェースを使用禁止に設定する（ステップ２１０）。  また、ネットワーク制御部４３は、ネットワーク通信を禁止するように設定する（ステップ２１０）。これらの一連の設定が終わると、取得したハンドルを使って、サスペンドプロセスを再開する（ステップ２１２）。アプリケーションプログラム２０が動作される。そして、制御部５２は、アプリケーションプログラム２０が終了するときにオペレーティングシステム２１から発される通知である終了イベントを待機する（ステップ２１４）。アプリケーションプログラム２０が終了すると、ファイルシステム制御部４４内のコールバック関数を実行し、制御部５２へ制御解除を通知する。
【０１１５】
ファイルシステム制御部４４は、プロセス制御リスト１５０（図１４を参照。）によって行われていた制御解除をし、それ以後は、このアプリケーションプログラム２０の制御を行わない。無論、このアプリケーションプログラム２０がユーザデータ３にアクセスしたときは、制御が再開される。図１１は、アプリケーションプログラム２０が終了するとき、制御部５２の動作を示すフローチャートである。アプリケーションプログラム２０は動作し、終了するとき、終了イベントが発生される（ステップ２３０）。アプリケーションプラットフォームプログラム５は、終了イベントのプロセスＩＤを取得する。
【０１１６】
アプリケーションプラットフォームプログラム５は、終了イベントのプロセスＩＤを制御部５２に送信する。制御部５２は、終了イベントのプロセスＩＤを取得する（ステップ２３２）。制御部５２は、ファイルシステム制御部４４へ、取得したプロセスＩＤからファイルアクセスを禁止するように設定する（ステップ２３４）。そして、インターフェース制御部４２へ禁止設定の解除を指示し、インターフェース制御部４２は使用禁止に設定したものを解除する（ステップ２３６）。ネットワーク制御部４３に禁止設定の解除を指示し、ネットワーク制御部４３には使用禁止に設定したものを解除する（ステップ２３８）。
【０１１７】
図１２は、制御部５２が使用禁止の除外を設定するときのフローチャートを示す図面である。図７のステップ７４、及び７６に示す個人認証が成功する（ステップ２６０）。認証が成功すると、オペレーティングシステム２１の動作に不可欠なプロセスを指定、これらのプロセスに何らかの制限をしないようにする必要がある。例えば、オペレーティングシステム２１のシステムサービス関連の実行ファイル、その実行ファイルが動作するときのプロセスが使用禁止にされたり、起動できなくなったりするとき、オペレーティングシステム２１が提供するサービスに支障ができたり、オペレーティングシステム２１自体の動作が不安定になる。
【０１１８】
そのためには、オペレーティングシステム２１の動作に必要な最低限の実行ファイルとプロセスを制限なしに動作させる必要がある。例えば、プロセスとしては、“System”、“Kernel.exe”、“explorer.exe”が例示できる。制御プロセス名、制御ディレクトリは、プロセス制御リスト１５０に登録される。プロセス制御リスト１５０は、図１４に例示している。制御部５２は、プロセス制御リスト１５０から制御プロセス名、制御ディレクトリを読み込む（ステップ２６２）。
【０１１９】
また、一時ファイルをローカルディスクに保存も動作もしないアプリケーションプログラムがある。このためには、アプリケーションプログラムがローカルディスクに一時ファイルを作成するときに暗号化を行うことにより、一時ファイルが他のアプリケーションプログラムからアクセスできないようにするためにプロセス保護を行う。このプロセス保護は、ドライバウェアによって、制御中のこのアプリケーションプログラム以外のアプリケーションプログラムによるプロセスがファイルアクセスを禁止して行う。アプリケーションプログラムの動作が終了したとき、この一時ファイルは削除される。
【０１２０】
制御部５２は、制御プロセス名からプロセスＩＤを取得する（ステップ２６４）。プロセスＩＤから実際のプログラム（.exeなどのモジュール）名を判断する。そして、制御部５２は、ファイルシステム制御部４４へ全て禁止の設定を指示し、ファイルシステム制御部４４は全てのプロセスの禁止を設定する（ステップ２６６）。次には、制御部５２は、ファイルシステム制御部４４へ制御プロセス名のプロセスＩＤと、制御ディレクトリの読み込み書き込み（Read／Write）の許可設定を指示する（ステップ２６８）。ファイルシステム制御部４４は、制御部５２から送信されてきたプロセスＩＤとファイルパスと制御モードを受信する（ステップ２７０）。
【０１２１】
ファイルシステム制御部４４は、プロセスＩＤとファイルパスと制御モードをプロセス制御リスト１５０に追加する（ステップ２７２）。図１３は、ファイルシステム制御部３４の動作を示す処理フローチャートである。アプリケーションプログラム２０又は、オペレーティングシステム２１からファイルへアクセスするときにファイルアクセスイベントが発生する（ステップ３００）。ファイルシステム制御部４４は、制御部５２からプロセスＩＤとファイルパスとファイル操作（Read/Write）を取得する（ステップ３０２）。
【０１２２】
このプロセスＩＤとファイルパスが、プロセス制御リスト１５０に登録されたものと合致するか否かを確認する（ステップ３０４〜３１０）。このプロセスＩＤとファイルパスが、プロセス制御リスト１５０に登録されたものと合致するとき、制御欄の値よりファイルの操作を許可又は禁止に設定する（ステップ３０８）。このプロセスＩＤとファイルパスがプロセス制御リスト１５０に登録されたものと合致しないとき、制御の値よりファイルの操作を禁止に設定する（ステップ３１２）。
【０１２３】
図１４には、プロセス制御リスト１５０の例を図示している。プロセス制御リスト１５０は、管理プログラム４がインストールされたときに、初期値としてファイルに格納されてハードディスク２５に保存されるものである。プロセス制御リスト１５０は、必要なとき、編集して変更することも可能である。プロセス制御リスト１５０には、登録されたものの順番を示す連番欄１５１、制御対象のプロセス名を示すプロセス名１５２、制御対象のプロセスＩＤを示すプロセスＩＤ１５３、ファイルパスを示すファイルパス１５４、制御の方法を示す制御１５５のデータ欄がある。制御対象のプロセス名は、上述の説明の一部では制御プロセスとして記述されている。
【０１２４】
（ＵＳＢメモリ８の内部構造の他の実施の形態）
図１５は、ＵＳＢメモリ８の内部構造の他の実施の形態を示すブロック図である。図１５は、筐体（図示せず）に格納されている基板１０５の構成の概要を図示している。基板１０５の上には、ユーザ領域１０６、プログラム領域１０７、ＵＳＢ（Universal Serial Bus）コントローラ１０９、中央処理装置１０８等が搭載されて配置されている。ユーザ領域１０６は、ユーザデータ３を格納するためのメモリである。プログラム領域１０７は、専用プログラム１１３を格納するためのメモリである。
【０１２５】
ＵＳＢコントローラ９は、コネクタ１１４を介して電子計算機（図示せず）との送受信を制御するためのプログラムである。コネクタ１１４は、ＵＳＢメモリ８をクライアントコンピュータ１２に接続するためのコネクタである。中央処理装置１０８は、ＵＳＢメモリ８全体を制御するための中央演算処理装置である。認証部１０４及びその指紋情報の認識方法等の技術については、周知の技術であり、かつ本発明の要旨でもないので、その詳細な説明は省略する。
【０１２６】
ユーザデータ３と、専用プログラム１１３はＵＳＢメモリ８の別々のメモリ領域であるユーザ領域１０６とプログラム領域１０７に格納されている。この２つのメモリ領域は、電子計算機から同時にアクセスできないような設計になっている。スイッチ１１０は、中央処理装置１０８によってソフトウェア的に制御されるもので、クライアントコンピュータ１２からユーザ領域１０６とプログラム領域１０７へのアクセスを制御するためのものである。
【０１２７】
ＵＳＢメモリ８がクライアントコンピュータ１２と接続され、専用プログラム１１３がクライアントコンピュータ１２上に動作すると、スイッチ１１０がプログラム領域１０７からユーザ領域１０６へと切り替わり、ユーザデータ３の送受信が可能になる。また、基板１０５には、認証用データベース１１１、認証モジュール１１２が配置されている。認証モジュール１１２は、ユーザの認証を行うためのものである。認証用データベース１１１は、クライアントコンピュータ１２を使用できるユーザの指紋情報、パスワード等の識別データを格納したデータベースのためのメモリである。
【０１２８】
（プロセス名、プロセスＩＤ、及びファイル名の取得について）
プロセスを検出するためには、次の前処理が実施される。ファイルシステム制御部４４において、ファイルアクセスに関する入出力機能の要求（以下、Ｉ／Ｏ要求とする。）のコールバックを制御部５２に来るように設定する。これは、ファイルアクセスに関するＩ／Ｏ要求が全てファイルシステム制御部４４を通るため、このＩ／Ｏ要求を制御部５２に転送して、制御部５２がこれを解析するためである。そして、プロセス制御リスト１５０をファイルシステム制御部４４へ転送し、ファイルシステム制御部４４がプロセス制御リスト１５０に登録されているアクセスが行われているか否かを監視する。
【０１２９】
プロセスを検出するためには、次の実行処理が行われる。アプリケーションプログラム２０が、ＵＳＢメモリ８に格納されているファイルをアクセスしようとする。このとき、アプリケーションプログラム２０が、ファイルアクセスに関するＩ／Ｏ要求を発する。このＩ／Ｏ要求は、上述の前処理時に設定された通り、コールバックされて制御部５２へ送信される。制御部５２では、このＩ／Ｏ要求のコールバックを受信したら、プロセスＩＤ、プロセス名、及びファイル名を取得する。プロセスに関連するプロセス名、プロセスＩＤ、及びファイル名は次のように取得される。
【０１３０】
プロセス名を取得するには、“ZwQueryInformationProcess”関数を使い、実行プロセスのイメージパスを取得し、これの実行ファイルexeのファイル名からプロセス名を取得する。プロセスＩＤを取得するには、“PsGetCurrentProcessId()”関数を使って現在のプロセスのＩＤを取得する。ファイル名を取得するには、ファイルのＩ／Ｏ要求に関する入出力（Ｉ／Ｏ）要求（ＩＲＰ）から、参照されるファイルオブジェクトよりファイル名を取得する。
【０１３１】
そして、ファイルシステム制御部４４は、Ｉ／Ｏ要求に関するプロセス名、プロセスＩＤ、及びファイル名を、制御部５２から受信して、プロセス制御リスト１５０と比較してファイルアクセスの制御を行う。ファイルシステム制御部４４は、プロセス制御リスト１５０に従ってＩ／Ｏ要求に対するファイルへのアクセスの許可、又は拒否をアプリケーションプログラム２０に戻す。
【０１３２】
（イベントの検出）
イベントの検出は、次のように行われる。オペレーティングシステム２１のカーネル内のＩ／Ｏ要求は、ＩＲＰ（IO Request Packet）の形式で行われる。ファイルアクセスに関しては、次の表１に示すＩＲＰが利用される。このＩＲＰを対象にコールバック関数を設定することで、イベント検出を行う。コールバック関数は、エグゼキュティブ１６（図２参照）のプロセスマネージャに登録され、コールバック関数が実行されると参照先のドライバウェア５０に制御が移動される。
【表１】
2009230587.tif 000003
【０１３３】
本発明の管理プログラム４のプログラムによっては、ユーザデータ３を格納しているＵＳＢメモリ８にアクセスしようとするアプリケーションプログラム２０、プロセスだけに、ターゲットを絞って制御を行うことができる。このように、クライアントコンピュータ１２上で動作する他のアプリケーションプログラム２０、オペレーティングシステム２１のサービスを無理に制限せずに、ユーザデータ３のみにアクセスする試みのみを監視し、そのアクセスを許可又は不許可して制御を行う。
【０１３４】
更に、ユーザデータ３にアクセスしているアプリケーションプログラム２０、そのプロセスのネットワーク機能、他の記録装置へのアクセスを遮断し、更にクリップボード等のユーザデータ３を複製しそうな機能の使用を禁止する。これによって、ユーザデータ３が外部へ流出されることなく使用することができる。
【０１３５】
（その他の実施の形態）
本発明のその他のクライアントコンピュータ１２の実施の形態を説明する。このクライアントコンピュータ１２の形態の概要を図２５に図示している。ここでは、入力装置のキーボード８０とマウス７０を制御する、入力装置制御部７５をドライバウェア５０が有する。入力装置制御部７５は、キーボードドライバ８２、マウスドライバ７２、キーボードポート８１、マウスポート７２を介して、キーボード８０とマウス７０の操作を監視する。キーボード８０とマウス７０の制御は、オペレーティングシステムの入出力インターフェース（図示せず。）を制御することで実現できる。
【０１３６】
つまり、キーボード８０とマウス７０から入力されたデータは、キーボードドライバ８２、マウスドライバ７２から、オペレーティングシステムの入出力インターフェースに送信される。これの中間に、本実施の形態では、ドライバウェア５０が存在するので、キーボード８０とマウス７０からのデータを自由に制御できる。この点については、図２に示したドライバウェア２と同一であるので、図２の説明を参照できる。後述するように、マウス７０を操作するのみでデータの複製又は移動すること、クリップボードを介してデータの複製又は移動することが可能である。本実施の形態においては、これらの複製又は移動を確認して、ユーザデータの漏洩を防止する。
【０１３７】
まず、マウスを操作するのみでデータの複製が行なわれることを防止する例を説明する。ディスプレイ上のマウスポインタの移動を制限して、このデータ複製を防止する。図１７には、ディスプレイ上のマウスの移動を制限する例を図示している。図１７には、ディスプレイ上に２つのウインドウが表示され、データを複製しようとしている様子の例を示している。図１７には、前面のウインドウに表示されているデータの一部をマウスで選択して、色反転させている。
【０１３８】
この色反転されたデータは、背景が黒くなって表示されている。従来技術の場合、この色反転されたデータをマウスのみで移動させて、背面のウインドウ上にドロップすれば、図１６に示したように、データの複製ができる。しかし、図１７に示すように、この色反転されたデータをマウスのみで移動させると、マウスポインタは、前面のウインドウ内でしか移動しない。ユーザが操作しようとしているマウスポインタの跡は、前面のウインドウ内では、実線で示され、背面のウインドウ上には破線で示されている。マウスポインタは、前面のウインドウ内では自由に移動でき、選択されたデータの複製又は移動は可能である。この制限は、マウスのイベントを利用して実現できる。
【０１３９】
〔ウインドウに関する単語の定義〕
以後の説明を分かりやすくするために、マウスによって操作しているウインドウを第１ウインドウと、データを挿入しようとしているウインドウを第２ウインドウと定義する。第１ウインドウは、マウスによる操作の操作元のウインドウで、第２ウインドウはこの操作の対象先、操作先のウインドウである。マウスによって操作をしているウインドウを、アクティブウィンドウということもある。マウスを利用した通常の操作では、ディスプレイ上に表示される任意のウインドウを選択すると、そのウインドウが最前の位置になり、アクティブウィンドウになる。アクティブウィンドウは、通常は、最前面に位置ｓいている。
【０１４０】
また、データの複製又は移動を考えると、第１ウインドウは複製元ウインドウ又は移動元ウインドウになり、第２ウインドウは複製先ウインドウ又は移動先ウインドウになる。漏洩を防止すべきユーザデータ３の観点から見ると、ユーザデータ３を用いて作業を行っているウインドウは、制御対象ウインドウに、即ち通常はアクティブウィンドウになる。ユーザデータ３を用いていない、別のデータを用いているウインドウは、制御対象ウインドウにならない。制御対象ウインドウというと、ユーザデータ３、又は、ユーザデータ３から派生したデータ、を用いて作業を行っているウインドウと理解する。更に、第１ウインドウと第２ウインドウは、両方とも制御対象ウインドウであることができる。
【０１４１】
この場合は、両者間には、データの複製又は移動ができる。第１ウインドウが制御対象ウインドウであり、第２ウインドウが制御対象ウインドウではない場合は、第１ウインドウから第２ウインドウへのデータの複製又は移動ができない。第１ウインドウと第２ウインドウは、両方とも制御対象ウインドウではない場合は、データの複製又は移動ができる。第１ウインドウが制御対象ウインドウではなく、第２ウインドウが制御対象ウインドウである場合は、第１ウインドウから第２ウインドウへのデータの複製又は移動ができる。この定義によって、図１７の例は、前面のウインドウは、第１ウインドウで制御対象ウインドウになり、背面のウインドウは、第２ウインドウで、制御対象ウインドウではないことになる。
【０１４２】
〔マウスイベントについて〕
マウスのイベントについては、Windows の公開されている開発者用の資料に細かく記述している。例えば、  Microsoft社のソフトウェア開発者向けサポートサービスMSDN（Microsoft Developer Network）のホームページ等に提供されている「.NET Framework」に関する開発者用の資料から閲覧可能である。マウス入力を処理する場合、通常、マウスポインタの位置とマウスボタンの状態を確認する必要がある。通常は、ユーザは、ディスプレイ上に表示されているマウスポインタを見ながら、マウスをクリック、スクロール、ダブルクリック等をして、マウスを操作する。
【０１４３】
これの各操作のとき、それぞれに対応したイベントが発生し、オペレーティングシステムの他のサービス、アプリケーションプログラム等は、このイベントを取得して処理する。ここで、マウスをクリックしたときのイベントについて表２で説明する。すべての Windows フォームコントロールは、マウスボタンが押されて離されたときに同じ順序でクリックイベントを発生させる。マウスボタンを１回クリックしたときに、“MouseDown”、“Click”、“MouseClick”、及び“MouseUp”の順番でイベントが発生する。マウスボタンをダブルクリックしたときに、“MouseDown”、“Click”、“MouseClick”、“MouseUp”、“MouseDown”、“DoubleClick”、“MouseDoubleClick”、及び“MouseUp”の順番でイベントが発生する。
【０１４４】
【表２】
2009230587.tif 000004
【０１４５】
“MouseEventArgs” は、マウスボタンのクリック及びマウスの動きの追跡に関連するマウスイベントのハンドラに送信される。“MouseEventArgs”は、クライアント座標におけるマウスポインタの位置、どのマウスボタンが押されているか、及びマウスホイールがスクロールされたかどうか等の情報を含む、マウスの現在の状態に関する情報を提供する。マウスポインタがコントロールの境界にいつ出入りしたかだけを通知するマウスイベント等、いくつかのマウスイベントは “EventArgs” だけを送信し、それ以外の情報は送信しない。
【０１４６】
マウスボタンの現在の状態やマウスポインタの位置を知る必要があり、マウスイベントの処理を回避する必要がある場合は、Control クラスの “MouseButtons” プロパティ及び “MousePosition” プロパティを使用できる。“MouseButtons” は、どのマウス ボタンが現在押されているかに関する情報を返す。“MousePosition” はマウス ポインタの画面座標を返す。マウスの位置情報はクライアント座標で表されたり画面座標で表されたりするため、ある座標系から別の座標系への位置の変換が必要になることがある。この作業は、Control クラスで使用できる“PointToClient”メソッド及び “PointToScreen”メソッドを使用することによって簡単に行うことができる。
【０１４７】
上述のように、マウスボタンをクリックしたときの、“MouseDown”、“MouseUp”イベントは、マウスの現在の状態に関する情報を取得できる。例えば、クライアント座標におけるマウスポインタの位置、どのマウスボタンが押されているか、及びマウスホイールがスクロールされたかどうか等の情報を含む。本実施の形態においては、このマウスポインタの位置を示す情報から、その位置の最前のウインドウに関する情報を取得する。この最前ウインドウを所有するアプリケーションプログラムのプロセスＩＤと、制御対象のアプリケーションプログラムのプロセスＩＤとを比較して、制御対象のウインドウであるか否かを判定する。
【０１４８】
このとき、比較が一致しない、つまり、制御対象アプリケーションプログラムではない場合は、それらのアプリケーションプログラム間のコピーは許可される。図１７に破線で示したマウスポインタの操作が許可されて、マウスのドロップ操作も許可されたデータの複製又は移動が行なわれる。比較が一致し、つまり、制御対象アプリケーションプログラムである場合は、制御対象のアプリケーションプログラムのウインドウから、別のウインドウへコピーすることができない。このとき、制御対象のウインドウへマウスポインタを移動させようとしても、マウスポインタは最前のウインドウの範囲からでることができない。
【０１４９】
〔制御対象プロセスリスト２５０について〕
ここでいう、制御対象のアプリケーションプログラムは、ユーザデータを利用して動作しているアプリケーションプログラムである。例えば、図２３に示す制御対象プロセスリスト２５０のようなリストに登録されているアプリケーションプログラム、そのプロセスである。制御対象リスト２５０の説明をする。図２３には、制御対象プロセスリスト２５０の例を図示している。制御対象プロセスリスト２５０は、上述の実施の形態に示したように、管理プログラム４がインストールされたときに初期値としてファイルに格納されてハードディスク２５等に保存されるものである。
【０１５０】
又は、制御対象プロセスリスト２５０は、ＵＳＢメモリ８に保存することもできる。制御対象プロセスリスト２５０は、必要なとき、編集して変更することも可能である。制御対象プロセスリスト２５０には、登録されたものの順番を示す連番欄２５１、制御対象のプロセスの名前を示すプロセス名２５２、制御対象のプロセスのＩＤを示すプロセスＩＤ２５３、プロセスが使用しているユーザデータのファイルパスを示すファイルパス２５４、制御対象であるか否かを示す制御２５５の欄がある。プロセス名２５２は、そのプロセスを所有するアプリケーションプログラムを示すものでも良い。制御２５５の欄の値は、制御対象であることを示す「１」又は「Ｙｅｓ」、制御対象ではないことを示す「０」又は「Ｎｏ」等の値をとる。
【０１５１】
しかし、この制御対象プロセスリスト２５０のデータ例は、一つの例にすぎず、システム設計上自由に変更できるものである。管理プログラム４は、ＵＳＢメモリ８からユーザデータ３がクライアントコンピュータ１２から読み出されたとき、そのアプリケーションプログラムを特定して、そのアプリケーションプログラムの名前、そのプロセス名、及びそのプロセスＩＤの中から選択される１以上のデータを制御対象プロセスリスト２５０に追加する。そして、ユーザデータ３の利用が終わったとき、該当するアプリケーションプログラム、又はそのプロセス等を、制御対象プロセスリスト２５０から削除する。
【０１５２】
このように、制御対象プロセスリスト２５０に追加された値は、開いたユーザデータ３のファイルを閉じるまでに、制御対象プロセスリスト２５０に維持される。これらの、制御対象プロセスリスト２５０への登録、その登録の解除は、管理プログラム４（図１を参照。）によって行なわれる。管理プログラム４は、制御対象プロセスリスト２５０に登録されているアプリケーションプログラム又はそのプロセスを継続して監視する。アプリケーションプログラムの名前、そのプロセス名、及びそのプロセスＩＤの中から選択される１以上のデータを制御対象プロセスリスト２５０に追加するとき、制御２５５の値を、制御対象であることを示す「１」又は「Ｙｅｓ」にすることができる。
【０１５３】
ユーザデータ３の利用が終わったとき、該当するアプリケーションプログラム、又はそのプロセス等を、制御対象プロセスリスト２５０から削除しないで、制御２５５の値を、制御対象ではないことを示す「０」又は「Ｎｏ」等の値に変更しても良い。初期値として、アプリケーションプログラムの名前、そのプロセス名、ユーザデータ３のファイル等を、制御対象プロセスリスト２５０に登録しておき、ユーザデータ３が読み出されたとき、該当するプロセスＩＤ、制御２５５の値を変更することができる。この場合は、制御２５５の値は、初期値として、制御対象ではないことを示す値であることが好ましい。
【０１５４】
〔マウスポインタの制御の流れ〕
ここで、マウスポインタの制限を、どのように実現するかを、図２５のクライアントコンピュータ１２、及び図２４のフローチャートを参照しながら説明する。管理プログラム４のドライバウェア５０は、ハードディスク２５に格納されている制御対象プロセスリスト２５０を参照して、制御対象のアプリケーションプログラム、又は、制御対象のプロセスに関する情報を取得する。マウスのイベントに関するデータは、ユーザモードで取得する場合、アプリケーションプラットフォーム５によって取得する（ステップ５００〜５０６）。
【０１５５】
マウスイベントは、ウインドウ上のデータを複製又は移動しようとするものかを判定する（ステップ５０６）。マウスイベントからマウスポインタの位置を取得し、また、マウスポインタの位置に位置するウインドウに関するデータも取得する（ステップ５０８、５１０）。マウスポインタの位置に位置するウインドウに関するデータと共に、ディスプレイに表示されているウインドウ全てに関する情報も取得できる。
【０１５６】
取得されたマウス及びウインドウに関するデータは、アプリケーションプログラムインターフェース部５１に渡される。管理プログラム４は、マウスのイベントを取得することに特化したマウスイベント制御部（図示せず。）を有することもできる。マウスイベント制御部が取得したデータを、アプリケーションプログラムインターフェース部５１へ渡す。更に、管理プログラム４は、ウインドウに関するデータを取得することに特化したウインドウイベント制御部（図示せず。）を有することもできる。ウインドウイベント制御部は、取得したデータをアプリケーションプログラムインターフェース部５１へ渡す。
【０１５７】
〔制御方法１〕
取得されたマウスイベント及びウインドウに関するデータは、制御部５２に渡される。制御部５２は、マウスイベントに関するデータを受信して、マウスポインタの位置に位置するウインドウに関するデータを取得する。そのウインドウを所有するプロセス、又はアプリケーションプログラムが、制御対象プロセスリスト２５０に登録されているかを確認する（ステップ５１２〜５１６）。制御対象プロセスリスト２５０に登録され、制御すべきである場合は、マウスポインタを制限する旨の指示を送信する（ステップ５１８）。この指示は、アプリケーションプラットフォームプログラム５に送信される。
【０１５８】
この指示は、アプリケーションプログラムインターフェース部５１を介して、制御部５２からアプリケーションプラットフォームプログラム５に送信される。この指示を受けて、アプリケーションプラットフォームプログラム５は、マウスポインタをアクティブウィンドウの範囲から出ないように設定を行う（ステップ５２０）。よって、マウスポインタは、アクティブウィンドウの範囲から出なくなり、ユーザデータの複製又は移動ができなくなる。
【０１５９】
〔制御方法２〕
制御部５２は、マウスイベント及びウインドウに関するデータを受信する。そして、マウスポインタの位置に位置するウインドウに関するデータを取得し、第１ウインドウを決定する。そして、マウスのデータから第２ウインドウを決定する。第１ウインドウ及び第２ウインドウを所有するプロセスが、制御対象プロセスリスト２５０に登録されているかを確認する。第１ウインドウを所有するプロセスが制御対象プロセスリスト２５０に登録され、制御対象プロセスであり、第２ウインドウを所有するプロセスが制御対象プロセスではない場合は、マウスポインタを制限する旨の指示を送信する。
【０１６０】
この指示は、アプリケーションプラットフォームプログラム５に送信される。この指示は、アプリケーションプログラムインターフェース部５１を介して、制御部５２からアプリケーションプラットフォームプログラム５に送信される。アプリケーションプラットフォームプログラム５は、受けた指示通りには、マウスポインタをアクティブウィンドウの範囲から出ないように設定を行う。よって、マウスポインタは、アクティブウィンドウの範囲から出なくなり、ユーザデータの複製又は移動ができなくなる。
【０１６１】
第１ウインドウ及び第２ウインドウを所有するプロセスが、両方とも制御対象プロセスリスト２５０に登録され、両方とも制御すべきである場合は、マウスポインタを制限しない旨の指示を送信する。第１ウインドウ及び第２ウインドウを所有するプロセスの両方が制御対象プロセスではない場合は、マウスポインタを制限しない旨の指示を送信する。第１ウインドウを所有するプロセスが制御対象プロセスではなく、第２ウインドウを所有するプロセスが制御対象プロセスである場合は、マウスポインタを制限しない旨の指示を送信する。
【０１６２】
この指示は、アプリケーションプラットフォームプログラム５に送信される。この指示は、アプリケーションプログラムインターフェース部５１を介して、制御部５２からアプリケーションプラットフォームプログラム５に送信される。アプリケーションプラットフォームプログラム５は、受けた指示通りには、マウスポインタを特に制限しないように設定を行う。よって、マウスポインタは、アクティブウィンドウの範囲からでることができ、ユーザデータの複製又は移動ができる。
【０１６３】
図１８には、ディスプレイ上のマウスポインタの移動を制限する他の例を図示している。図１８には、ディスプレイ上に２つのウインドウが表示され、データを複製しようとしている様子の例を示している。図１８には、最前面のウインドウに表示されているデータの一部をマウスで選択して、色反転させている。この色反転されたデータは、背景が黒くなって表示されている。従来技術の場合、この色反転されたデータをマウスのみで移動させて、背面のウインドウ上にドロップすれば、データの複製が行なわれる。操作しようとするマウスポインタの跡は、前面のウインドウ内では、実線示され、背面のウインドウ上には破線で示されている。
【０１６４】
マウスポインタは、最前面のウインドウ内では自由に移動でき、選択されたデータの複製・移動は可能である。しかし、マウスポインタが前面のウインドウから出ると、選択されたデータの複製又は移動ができない旨のメッセージが表示される。このメッセージは、例えば、図中に、丸に横線を入れた車両通行止め標識のような記号で示している。このメッセージは、視覚的に又は音声でユーザに通知できるものであればどのようなものでも良い。これらの制限は、上述の図１７に示した例と同様に、オペレーティングシステムの機能の一つであるマウスのボタンの“MouseUp”、“MouseDown”イベントの通知を利用する。
【０１６５】
具体的には、上述の制御方法１、及び２と同様に、制御することができる。異なる点は、制御部５２から、マウスポインタを制限する旨の指示を送信したとき、マウスポインタが第１ウインドウの範囲から出るが、第２ウインドウ上に操作してデータを複製又は移動できなくなる。このとき、複製又は移動ができない旨のメッセージが表示される。図１９には、マウスの操作を制御する流れを示している。ウインドウ内でデータが選択されると、当該ウインドウが制御対象アプリケーションプログラムに属するか否かを判定する（ステップ３５０〜３５６）。
【０１６６】
この判定は、制御部５２が制御対象プロセスリスト２５０を参照して行なわれる。制御対象アプリケーションプログラムに属しないウインドウの場合は、特にマウスの操作を制御しない（ステップ３７０）。制御対象アプリケーションプログラムに属するウインドウの場合は、マウスの操作を制御する（ステップ３５６）。この制御には、マウスポインタを当該ウインドウから出ないようにする制御、又は、マウスポインタが他のウインドウに移動して、ドロップ操作を行う操作などが含まれる。
【０１６７】
そして、マウスで選択した操作を解除したかを確認する（ステップ３５８）。例えば、マウスでウインドウ内のデータを選択したとき、色反転される。これを解除するには、マウスポインタをクリックする、又は、キーボードのESCキーを押す等の方法がある。選択が解除されたらマウスの制御を解除し、次の操作に写る（ステップ３６０）。
【０１６８】
図２０は、制御対象ウインドウ内でマウスポインタを制御する流れを示すフローチャートである。ディスプレイ上のマウスポインタの位置を取得する（ステップ４００〜４０２）。言い換えるとマウスポインタのディスプレイ上の座標を取得する。この座標は、マウスのボタンの“MouseDown”イベントの通知を取得することで行なわれる。次にデスクトップの最前面のウインドウの位置を含む、ウインドウに関するデータを“GetParent()”および“GetLastActivePopup()”を使って取得する（ステップ４０４）。このウインドウの位置についてデータは、“GetClientRect()”から取得される。
【０１６９】
そして、これらの２つの位置データを比較し、この比較で、制御対象アプリケーションプログラムであるか否かを判定する（ステップ４０６）。制御対象アプリケーションプログラムである場合は、続いて、アプリケーションプログラムのウインドウ領域の短形座標を取得する（ステップ４０８）。この短形座標は、“GetClientRect()”から取得する。そして、マウスポインタの移動範囲をこの短形座標範囲内に設定する（ステップ４１０）。制御対象アプリケーションプログラムではない場合は、特に、マウスポインタの制限設定をしない（ステップ４０６→４１２）。
【０１７０】
この制限設定は、オペレーティングシステムの“::ClipCursor()”機能を利用して設定される。図２１には、マウスポインタの移動範囲の解除を示すフローを示している。マウスのボタンの“MouseUp”イベントをオペレーティングシステムの“WM_DRAWCLIPBOARD”にて通知を取得する（ステップ４２０）。マウスポインタの移動範囲の制限解除を行う（ステップ４２２）。
【０１７１】
〔クリップボードについて〕
Windows環境では、オペレーティングシステムは、「クリップボード」と呼ばれる機能を備えている。これにより、開いているウインドウズでは、データを簡単に移動又はコピーできる。クリップボードは、一種の共有メモリだと考えることができる。複数のアプリケーションからこの共有メモリにアクセス可能である。あるアプリケーションでデータをカット又はコピーすると、そのデータはこの共有メモリの領域に転送されて保存される。別のアプリケーションでこのデータをペーストすると、共有メモリの領域からデータが転送されて指定された場所に挿入される。
【０１７２】
再度、カット又はコピーが実行されない限り、又は専用のアプリケーションからこの領域のデータを削除しない限り、また、オペレーティングシステムを終了させない限り、クリップボードに保存されたデータは、記録が保存された状態のままである。また、データはクリップボードにコピーされるとき、複数の形式でデータがコピーされる。例えば、ワードプロセッサのWord（登録商標）で、データを選択してコピーを実行すると、フォント、サイズ等の文字修飾情報を含むWordネーティブデータに加え、テキストデータのみのテキスト、Unicode形式のテキスト・データであるUnicodeテキスト、ページ・イメージのビットマップ等のイメージデータ、文字の修飾情報などを含むRTF形式のデータであるRich Text Format、HTML形式のデータであるHTML Format等の複数のフォーマットでデータが転送される。
【０１７３】
クリップボードは、オペレーティングシステムの内部的な機能であり、通常はユーザが直接中身を覗くことができないが、Windowsには「クリップブック“clipbrd.exe”」という標準ツールが提供されている。このツールを利用してクリップボードの中身を確認できる。ワードプロセッサ等のアプリケーションプログラムで、データをペーストしたとき、ワードプロセッサのネーティブデータが指定場所に挿入される。テキストのみ扱うテキストエディタでデータをペーストしたとき、クリップボードからテキスト形式のデータが、テキストエディタに転送されて挿入される。ビットマップ・エディタでペーストしたときは、ビットマップ・データがクリップボードから転送される。
【０１７４】
クリップボードへデータを転送するアプリケーションは、できるだけ多くのアプリケーションがデータを取得できるように、多数の形式のデータをクリップボードに転送する機能を有している。クリップボードのデータを利用する側のアプリケーションは、クリップボードに格納された多数の形式の中から、情報損失が最も少ないものを取得して利用する。新しい、カット又はコピーを行うと、古いデータが削除されて、新しいデータがクリップボードに保存される。そのため、標準のクリップボードの機能では、データの履歴等を保存することはできない。
【０１７５】
しかし、このクリップボードと同じような機能をするアプリケーションプログラムが多数あり、独自のクリップボードを備えてアプリケーションプログラムも多数ある。例えば、マイクロソフト社のOffice 2000（登録商標）以降のOffice（登録商標）製品では、独自にクリップボードの履歴を管理するOfficeクリップボードの機能が追加されている。ここでは、クリップボードでの最新の１２個までのカット及び／又はコピー操作の履歴が保存できる。カット＆ペーストするには、コピー元のアプリケーションプログラムのウインドウで、コピーしたいデータを選択し、アプリケーションの［編集］−［切り取り］メニューを実行する。
【０１７６】
選択したデータが消去される。又は、［編集］−［切り取り］ではなく、［編集］−［コピー］を実行すれば、選択データは複製されてクリップボードに転送される。次にコピー先のアプリケーションプログラムのウインドウをアクティブにし、このアプリケーションの［編集］−［貼り付け］メニューを実行する。このとき、カット又はコピーした要素が挿入される。ほとんどのアプリケーションにおいて、このカット＆ペーストには、それぞれ［Ctrl］＋［X］と［Ctrl］＋［V］というショートカット・キーが割り当てられている。コピー＆ペーストの場合は、［Ctrl］＋［C］と［Ctrl］＋［V］というショートカット・キーが割り当てられている。しかし、ユーザは、ショートカット・キーの設定を変更できるようにもなっている。
【０１７７】
図２２には、このようにクリップボードを介したデータ複製を防止しするフローチャート示している。アプリケーションプログラムでコピーをすると、内容はシステム標準のクリップボードに格納される（ステップ４５０〜４５４）。クリップボードは、コピー操作が発生するとクリップボードマネージャ７６が、クリップボードにデータが入った事象を通知する（図２５を参照。）。クリップボードマネージャ７６は、オペレーティングシステムが持つ機能である。ここで、通知は、ドライバウェア５０のクリップボード制御部８３に通知される。クリップボードマネージャ７６に、事前に複数のアプリケーションプログラムを登録しておくことができる。
【０１７８】
クリップボードマネージャ７６に登録された通知先はチェーン構造となり、最後に登録したプロセスが最上位、つまり、最初に通知を受ける位置、に位置する。クリップボード制御部８３から、Word等の他のアプリケーションプログラムに通知される。ここで、通常のケースでは、クリップボードマネージャ７６から通知を受けると、チェーン構造のアプリケーションプログラムに順番で通知を受け取り、最下位のプロセスがクリップボードマネージャ７６へ制御を戻す。一部のアプリケーションプログラムは、独自のクリップボードを持っている。
【０１７９】
通知を受けたとき、独自のクリップボードは、クリップボードのデータをコピーし、独自のメモリに保存する。この保存されたデータは、貼り付けを行うとき、コピー先のアプリケーションプログラムへ渡される。通常の貼り付けでは、クリップボードの内容が、アプリケーションへデータが渡される。
本実施の形態では、ドライバウェア５０のクリップボード制御部８３は、クリップボードマネージャ７６の最上位に位置するように登録する。例えば、そのために、定期的に解除・登録を行い、最後に登録した状態を作る。そして、クリップボード制御部８３は、クリップボードマネージャ７６から通知を受けると、それをクリップボードマネージャ７６に登録されている他のアプリケーションプログラムへ渡さず、クリップボードマネージャ７６へ制御を戻す。
【０１８０】
そのため、独自のクリップボードを持っているアプリケーションプログラムのクリップボードは通知を受けることができない。マウスポインタが別のウインドウへ移動すると、クリップボード制御部８３は、クリップボードの内容を独自のメモリに複製して保存し、クリップボードの内容を削除する（４５８〜４６２）。そして、マウスポインタが元のウインドウへ移動したかを確認し、移動しないでマウスポインタ移動された別のウインドウがアクティブになり作業を行うときは、複製された独自のメモリのデータ削除する（ステップ４６４→４８０）。
【０１８１】
マウスポインタが元のウインドウへ戻ったとき、クリップボードの複製された内容がコピーされて、正当な作業を再開する（ステップ４６４→４６６、４６８）。更に、キーボードの中で、特定のキーを押すと、ディスプレイ又はアクティブウィンドウ等のイメージがクリップボードにコピーされるように設定されていることがある。これは、アプリケーションプログラムは、独自のホットキー、オペレーティングシステム標準の設定でもできる。例えば、キーボードの中で、“PrintScreen”又は“Prt Sc”等と印字されているプリントスクリーンキーを押すと、ディスプレイ上に表示されているデスクトップ画面全体のイメージがクリップボードにコピーされる。
【０１８２】
また、[Alt] キーを押しながら、このプリントスクリーンキーを押した場合は、アクティブウィンドウだけのイメージがクリップボードに格納される。よって、上記の制限対象のウインドウがディスプレイ上に表示されているときは、プリントスクリーンキーの機能を無効化することが好ましい。例えば、図２５に図したドライバウェア５０は、入力装置制御部７５を各インターフェース部４２〜４４と並列に設け、キーボード８０からの入力を監視できる。又は、オペレーティングシステムのホットキーの情報の中で、ディスプレイをキャプチャする機能が登録されているキーを無効化する設定を行う。こので、ドライバウェア５０は、制御対象のファイルがオープンされたことを検知する、登録内容を自身の処理にして、登録する。制限対象のファイルが閉じるまでにこれを維持する。
【産業上の利用可能性】
【０１８３】
本発明は、ユーザのファイル、データやプログラム等を電子記録媒体に記録して、外部へ提供し、提供先でどのように利用されているかを把握すること可能であり、電子データの緊密な管理が必要な分野に利用すると良い。特に、営業または経理データ等でユーザのデータやファイル等の秘密情報、従業員のデータ管理が必要とされる印刷業界、保険会社、販売店で利用されることが望ましい。更に、電子データの緊密な管理が必要な金融機関、原子力関連の施設、や個人データを扱う端末等の分野に利用されても良い。
【図面の簡単な説明】
【０１８４】
【図１】図１は、本発明の実施の形態の概要を図示している図である。
【図２】図２は、クライアントコンピュータ１２上に動作するソフトウェアの概要を図示している図である。
【図３】図３は、本発明のクライアントコンピュータ１２の実施の形態を示した機能ブロック図である。
【図４】図４は、ＵＳＢメモリ８の内部構造を示すブロック図である。
【図５】図５は、本発明のＵＳＢメモリ８を利用するときの全体の動作を示すフローチャートである。
【図６】図６は、サーバ２において、ユーザデータ３と管理プログラム４を記憶装置８、記録媒体９に書き込むときの流れを示すフローチャートである。
【図７】図７は、ＵＳＢメモリ８からユーザデータ３を閲覧するときの流れを示すフローチャートである。
【図８】図８は、管理プログラム４の動作を示すフローチャートである。
【図９】図９は、管理プログラム４が制御モードをオンしたときの動作を示すフローチャートである。
【図１０】図１０は、制御部５２の動作を示すフローチャートである。
【図１１】図１１は、アプリケーションプログラム２０が終了するとき、制御部５２の動作を示すフローチャートである。
【図１２】図１２は、制御部５２が使用禁止の除外を設定するときの流れを示すフローチャートである。
【図１３】図１３は、ファイルシステム制御部４４の動作を示す処理フローチャートである。
【図１４】図１４は、プロセス制御リスト１５０の例を図示している。
【図１５】図１５は、ＵＳＢメモリ８の内部構造の他の実施の形態を示すブロック図である。
【図１６】図１６は、マウスのみでデータの複製を行う従来技術の例を示したウインドウの概念図である。
【図１７】図１７は、マウスのみでデータの複製を行うとき、その制限をするウインドウの他の実施の形態を示した図である。
【図１８】図１８は、マウスのみでデータの複製を行うとき、その制限をするウインドウの他の実施の形態を示した図である。
【図１９】図１９は、マウスのみでのデータ複製を行うとき、その制限をする他の実施の形態を示したフローチャートである。
【図２０】図２０は、マウスのみでのデータ複製を制限するときのマウスのイベント処理を行う他の実施の形態を示したフローチャートである。
【図２１】図２１は、マウスのみでのデータ複製を制限するときのマウスのイベント処理を行う他の実施の形態を示したフローチャートである。
【図２２】図２２は、クリップボードを介したデータ複製を制限するときの他の実施の形態を示したフローチャートである。
【図２３】図２３は、制御対象プロセスリストの例を示す図である。
【図２４】図２３は、マウスのみでのデータ複製を制限するときのマウスのイベント処理を行う他の実施の形態を示したフローチャートである。
【図２５】図２５は、本発明のその他のクライアントコンピュータ１２の実施の形態の概要を図示している図である。
【符号の説明】
【０１８５】
１…サーバ側
２…サーバ
３…ユーザデータ
４…管理プログラム
５…アプリケーションプラットフォームプログラム
６…外部デバイス
７…ネットワーク
８…ＵＳＢメモリ
９…記録媒体
１０…クライアント側
１１…クライアント
１２…クライアントコンピュータ
１３…サブシステム
１４…ユーザモード
１５…カーネルモード
１６…エグゼキュティブ
１７…カーネル
１８…ハードウェア抽象化層
２０…アプリケーションプログラム
２１…オペレーティングシステム
２２…コネクタ
２３…ネットワークカード
２４…ＵＳＢポート
２５…ハードディスク
２６…内蔵デバイス
３２…インターフェースドライバ
３３…ネットワークドライバ
３４…ファイルシステムドライバ
３５…第２デバイスドライバ
３６…第１デバイスドライバ
４２…インターフェース制御部
４３…ネットワーク制御部
４４…ファイルシステム制御部
４５…第２デバイスドライバ制御部
４６…第１デバイスドライバ制御部
５０…ドライバウェア
５１…アプリケーションプログラムインターフェース部
５２…制御部
５３…ログ取得部
５４…暗号化部
５５…復号化部
７０…マウス
７２…マウスドライバ
７５…入力装置制御部
８０…キーボード
８２…キーボードドライバ
８３…クリップボード制御部
７６…クリップボードマネージャ
１０５…基板
１０６…ユーザ領域
１０７…プログラム領域
１０８…中央処理装置
１０９…ＵＳＢコントローラ
２５０…制御対象プロセスリスト
【図１】
2009230587.tif 000005
【図２】
2009230587.tif 000006
【図３】
2009230587.tif 000007
【図４】
2009230587.tif 000008
【図５】
2009230587.tif 000009
【図６】
2009230587.tif 000010
【図７】
2009230587.tif 000011
【図８】
2009230587.tif 000012
【図９】
2009230587.tif 000013
【図１０】
2009230587.tif 000014
【図１１】
2009230587.tif 000015
【図１２】
2009230587.tif 000016
【図１３】
2009230587.tif 000017
【図１４】
2009230587.tif 000018
【図１５】
2009230587.tif 000019
【図１６】
2009230587.tif 000020
【図１７】
2009230587.tif 000021
【図１８】
2009230587.tif 000022
【図１９】
2009230587.tif 000023
【図２０】
2009230587.tif 000024
【図２１】
2009230587.tif 000025
【図２２】
2009230587.tif 000026
【図２３】
2009230587.tif 000027
【図２４】
2009230587.tif 000028
【図２５】
2009230587.tif 000029