Windows のイベントログを見ていると、URL の部分がリンクになっていることがある。あれを仕組みを自作プログラムで使うのは、意外と簡単みたいだ。
具体例をあげると (注: 以下のエラー自体については、6 月 2 日の日記を参照してください)、
FTP パフォーマンスの統計を収集できません。 サービスによって返されたエラー コードは DWORD 0 のデータです。
このメッセージに関する追加情報については、以下のマイクロソフト オンライン サポートのサイトを参照してください: http://www.microsoft.com/contentredirect.asp
とかなってて、この URL をクリックすると、
イベント ビューアは次の情報をインターネットをとおして送信します。よろしいですか?
というメッセージとともに、送信される情報の一覧 (イベント ID、ソース、ファイルバージョンなど) が表示される。
で、そのダイアログで OK を押すと、イベント情報が URL に送信される。
イベントの定義に URL を含める
イベントメッセージ内に、単純に文字列として URL (上の例では http://www.microsoft.com/contentredirect.asp) を含めればいい。イベントビューアで見ると、自動的にリンク扱いされる。これは、.mc ファイルに固定で入れてもいいし、可変部分に入れてもいいようだ。なので、WSH (Windows Scripting Host) の WshShell#LogEvent メソッドを使う場合でも利用できる。
.mc ファイルで定義する場合は、ロケール別に URL を変えることもできるだろう (お勧めはしないけど)。
送信された情報はパラメータとして受信
イベントビューアでリンクをクリックすると、ブラウザが起動され、その URL へのアクセスが行われる。このときのアクセスは GET メソッドで行われ、イベントビューアから送信される情報はクエリとして URL に付加されるので、パラメータを解釈するような Web アプリケーション (CGI とか Servlet とか) を用意しておけば、例えば「送信された情報に応じて、適切なサポート情報ページを表示する」という仕組みも作れる。パラメータ名と、イベントビューア上での用語は、以下のように対応している。
- EvtID
- イベント ID
- EvtSrc
- ソース
- FileVer
- ファイル バージョン
- CoName
- 会社名
- ProdVer
- 製品バージョン
- ProdName
- 製品名
- EvtCat
- 分類