Win: イベントログに URL を含める方法

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
分類