これは、C# & .Net Framework 4.0 で作成しました


はじめに
イベントログを監視して、通知をおこなうツールです。

まぁ、あまり使いどころはないかもしれないですけど・・・



動作環境
Microsoft .NET Framework4.0

NT サービスとして起動し、イベントログにアクセスして通知する権限が必要です


インストール方法と使用方法

まず、ランタイム(.NET Framework4.0)をセットアップします。

sEventLogMonitor.lzh をダウンロードします。

ダウンロードしたファイルを解凍しします。
(LHAは、吉崎栄泰氏が、著作権を所有)

「sEventLogMonitor.exe -install」で NT サービスにインストール後、NT サービスとしてスタートしてください。
特定のイベントを受信すると、通知処理が行われるかと思いますよ。

「sEventLogMonitor.exe -uninstall」で NT サービスからアンインストールできます。

レジストリ「HKLM\Software\sEventLogMonitor」下に設定を記述してください。

レジストリの設定値は「sEventLogMonitor.reg」を参考にしてください。
当然ですが、悪用厳禁です。


レジストリの説明(共通)
HKLM\Software\sEventLogMonitor\VerboseMode (REG_SZ)
これが空文字以外で存在すれば、バーバスモードとなり、検知しない時はイベントログに記録するようにした(イベントのソース名を調べられるはず) (ver1.1.0.0以降)
HKLM\Software\sEventLogMonitor\TargetEventLog (REG_SZ)
イベントログの対象をカンマ区切りで指定する。指定しない場合は「Application」(ver1.1.0.0以降)
HKLM\Software\sEventLogMonitor\AlertType (REG_SZ)
通知方法を指定します。既定はカンマ区切りの「smtp」「ipmsg」。Plugin.AlertToXML.dllがロードしている場合は「xmlfile」
HKLM\Software\sEventLogMonitor\FilterType (REG_SZ)
イベントログの取捨選択の方法を指定します。既定は「SimpleFilter」
HKLM\Software\sEventLogMonitor\From (REG_SZ)
監視の開始時間を指定します。例えば「9:00」
HKLM\Software\sEventLogMonitor\To (REG_SZ)
監視の終了時間を指定します。例えば「17:30」
HKLM\Software\sEventLogMonitor\plugin (REG_SZ)
通知方法、取捨選択方法についてのプラグインがあれば、そのパスを指定します。



レジストリの説明(既定の取捨選択の方法「SimpleFilter」)
HKLM\Software\sEventLogMonitor\SimpleFilter 以下
イベントログの取捨選択の方法「SimpleFilter」の設定。
HKLM\Software\sEventLogMonitor\SimpleFilter\値 (REG_DWORD)
名前にイベントログの「ソース名」、値にイベントログの「イベントID」



イベントのソース名(ver1.1.0.0 以降)
イベントビューアに表示されるソース名と、内部的に使われているソース名が一致しない場合がある。
例えば、「EventLog」は、内部的には「Microsoft-Windows-Eventlog」だったりする。
図1図1
イベントビューアには「EventLog」と表示されるが・・・
図2図2
内部的には「Microsoft-Windows-Eventlog」のようだ


よって、レジストリ「HKLM\Software\sEventLogMonitor\VerboseMode」を使う事で、図2のようなイベントを出力するので、イベントのソース名を調べやすくなるんではないかと思う。
ただし、レジストリ「HKLM\Software\sEventLogMonitor\VerboseMode」は実運用には適していないので、あくまで内部的なソース名を調べる事にだけ使う事。
(イベントログの書き込みに対して、イベントログを書き込むので、状況によっては無限ループになりうる)


レジストリの説明(既定の通知方法1「IPMsg」)
IPMessenger へ通知します。

HKLM\Software\sEventLogMonitor\IPMsg 以下
IPMessenger で通知します。その設定。
HKLM\Software\sEventLogMonitor\IPMsg\pcname (REG_SZ)
IPMessenger のPCName
HKLM\Software\sEventLogMonitor\IPMsg\name (REG_SZ)
IPMessenger のname
HKLM\Software\sEventLogMonitor\IPMsg\SendCount (REG_DWORD)
IPMessenger は UDP なので、同一メッセージの再送回数
HKLM\Software\sEventLogMonitor\IPMsg\distList 以下
IPMessenger の送信相手
HKLM\Software\sEventLogMonitor\IPMsg\distList\値 (REG_DWORD)
IPMessenger の送信相手、名前に IPアドレス。値にポート番号



レジストリの説明(既定の通知方法2「SMTP」)
SMTP プロトコルを使って電子メールで通知します。

HKLM\Software\sEventLogMonitor\smtp 以下
SMTP で通知します。その設定。
HKLM\Software\sEventLogMonitor\smtp\mailFrom (REG_SZ)
SMTP の MAIL FROM に与える値
HKLM\Software\sEventLogMonitor\smtp\mailSubject (REG_SZ)
SMTP の題名
HKLM\Software\sEventLogMonitor\smtp\smtpserver (REG_SZ)
SMTP のサーバアドレス
HKLM\Software\sEventLogMonitor\smtp\smtpport (REG_DWORD)
SMTP のサーバのポート番号
HKLM\Software\sEventLogMonitor\smtp\encoding (REG_SZ)
SMTP のメールの文字コード
HKLM\Software\sEventLogMonitor\smtp\smtpSSL (REG_SZ)
SMTP で SSL 使うかどうか
HKLM\Software\sEventLogMonitor\smtp\smtpNoCheckCert (REG_SZ)
SMTPs でサーバ証明書を検証するかどうか
HKLM\Software\sEventLogMonitor\smtp\smtpClientCertFile (REG_SZ)
SMTPs で提示するクライアント証明書
HKLM\Software\sEventLogMonitor\smtp\smtpClientCertPassword (REG_SZ)
SMTPs で提示するクライアント証明書のパスワード
HKLM\Software\sEventLogMonitor\smtp\smtpUsername (REG_SZ)
SMTP 認証のユーザ名
HKLM\Software\sEventLogMonitor\smtp\smtpPassword (REG_SZ)
SMTP 認証のパスワード(平文のまま)
HKLM\Software\sEventLogMonitor\smtp\distList 以下
SMTP の送信相手
HKLM\Software\sEventLogMonitor\smtp\distList\値 (REG_SZ)
SMTP の送信相手、名前は適当。値にメールアドレス


ただし、System.Net.Mail.SmtpClient を用いているため、SMTP認証には制限があります。


プラグイン
通知方法、ログの取捨選択の方法に関しては、プラグインとして拡張させる事が可能です。

sEventLogMonitor.exe を参照設定して、インターフェイスを継承したクラス(DLL)を作成し、レジストリ「HKLM\Software\sEventLogMonitor\plugin」で指示されるディレクトリに配置すれば、プラグインを読み込みます。

.NET Framework のプラグイン読み込みの制約から、DLL の ZoneID がついていると読み込まれないかと思います。

通知方法に関しては、インターフェイス「IAlertMethodImpl」または基底クラス「AlertMethodBase」を継承したクラスを作成すればよいです。

取捨選択の方法に関しては、インターフェイス「IEventFilterImpl」を継承したクラスを作成すればよいです。


プラグイン(通知方法)
インターフェイス「IAlertMethodImpl」を実装する上で必要のメソッドは以下の二つです。




プラグイン(取捨選択の方法)
インターフェイス「IEventFilterImpl」を実装する上で必要のメソッドは以下の二つです。




Plugin.AlertToXML.dll
Plugin.AlertToXML.dll は、サンプルのプラグインです

通知内容を指定の XML ファイルに書き出します。

ファイル内容を「<?xml version='1.0'><alert>....</alert>」としてあげれば立派な XMLです。

レジストリ「HKLM\Software\sEventLogMonitor\AlertType」には「xmlfile」と指定する事で有効化します。

HKLM\Software\sEventLogMonitor\xmlfile 以下
XMLファイルに書き出します。その設定。
HKLM\Software\sEventLogMonitor\xmlfile\xmlFilePath (REG_SZ)
XML ファイルの保存先



免責など
当然ですが、悪用厳禁です。

プログラムの改変については、各自の責任で行う分については、自由に行って結構です。(参考になりましたメールをくれると、うれしい...(*^_^*))

修正BSDライセンスで配布します。


Version1.2.0.0DownLoad(sEventLogMonitor.lzh as 59,265byte) (sEventLogMonitor.lzh.base64)

履歴



mail to active@window.goukaku.com