ファイル システム イベントの監視の概要
更新 : 2007 年 11 月
FileSystemWatcher コンポーネントを使用すると、ファイル システムを監視して、ディレクトリやその中のファイルに変更が加えられたときに処理を行うことができます。これにより、特定のファイルやディレクトリが作成、変更、または削除されたときにビジネス プロセスをすばやく簡単に起動できるようになります。たとえば、サーバー上の共有ディレクトリに格納されているドキュメントを他の開発者のグループと共同して作成しているとします。FileSystemWatcher コンポーネントのインスタンスを使用すると、共有ディレクトリの内容への変更を監視するようにアプリケーションをプログラムできます。変更が検出されると、コンポーネントは所定のプロシージャを実行して、グループの各メンバに電子メールで通知します。
メモ : |
---|
FileSystemWatcher コンポーネントは、ディレクトリ内の変更を監視するようにデザインされています。ルート ディレクトリの属性自体の変更は監視しません。たとえば、c:\MyProjects というディレクトリを監視している場合、コンポーネントはディレクトリ内に加えられる変更を監視しますが、ルート ディレクトリ自体に加えられる変更は監視しません。 |
ディレクトリ全体とその内容を監視するか、またはディレクトリ内の 1 つ以上の特定のファイルを監視するように、コンポーネントを設定できます。FileSystemWatcher コンポーネントは、指定されたルート ディレクトリ内のファイルまたはサブディレクトリが作成されたとき、削除されたとき、または名前やその他の情報が変更されたときに、イベントを発生させます。コンポーネントが監視する変更の種類には、ファイルまたはサブディレクトリの属性、サイズ、最終書き込み時刻、最終アクセス時刻、およびセキュリティ設定の変更が含まれます。
セキュリティに関するメモ : |
---|
サービス拒否攻撃は、悪意あるプログラムが FileSystemWatcher コンポーネントの監視対象のディレクトリにアクセスし、そのコンポーネントが管理できないほど多くの変更を生成した場合に成立します。サービス拒否攻撃のリスクを減らすには、「大容量システムでのファイル変更に関する考慮事項」の推奨事項に従い、アクセス制御リストを適切に使用します。 |
ディレクトリ レベルのイベント
アプリケーションが監視しているルート ディレクトリ内またはファイルに変更が生じると、1 つ以上のイベントが発生し、バッファに格納された後、処理用のコンポーネントに渡されます。FileSystemWatcher コンポーネントを使用すると、次のイベントにアクセスできます。
Created — ディレクトリまたはファイルが作成されたときに発生します。
Deleted — ディレクトリまたはファイルが削除されたときに発生します。
Renamed — ディレクトリまたはファイルの名前が変更されたときに発生します。
Changed — ディレクトリまたはファイルのサイズ、システム属性、最終書き込み時刻、最終アクセス時刻、またはセキュリティ アクセス許可が変更されたときに発生します。
メモ : ファイルのコピーや移動などの一般的な操作はイベントに直接対応していませんが、そのような操作が行われた場合もイベントが発生します。ファイルをコピーすると、システムはコピー先のディレクトリに Created イベントを発生させますが、コピー元のディレクトリにはイベントを発生させません。ファイルを移動すると、サーバーは 2 つのイベントを発生させます。移動元のディレクトリに Deleted イベントを発生させた後、移動先のディレクトリに Created イベントを発生させます。
ディレクトリ内のファイルに対する各変更が個別のイベントを発生させます。ユーザーが 1 つのファイルに複数の変更を加えると、アプリケーションはそれぞれの変更に対して個別のイベントを発生させます。たとえば、5 つのファイルを含むディレクトリを監視しているときに、すべてのファイルのセキュリティ アクセス許可が一度に変更されると、5 つの Changed イベントが発生します。ユーザーがこれらの各ファイルの名前を変更して新しいセキュリティ アクセス許可を割り当てた場合は、5 つのファイルのそれぞれに対して Changed イベントと Renamed イベントが 1 つずつ、計 10 個のイベントが通知されます。
参照
処理手順
方法 : FileSystemWatcher コンポーネントのインスタンスを作成する
方法 : FileSystemWatcher コンポーネントのインスタンスを設定する
方法 : ファイル システム イベントに対するハンドラを作成する
方法 : 指定されたファイル システム イベントが発生するまで待機する