Pages

2014/05/27

[C#] イベントログへの書き込み(Windows Vista, 7...以降)。


イベントログへの書き込みについては、以下のようなサンプルをよく見かける。
ソースの存在チェックを行ってから、イベントログへ書き込みを行う処理だ。
var source = "EventLogTest";
var logname = "Application";
var message = "イベントログに書込むテスト。";
var eventId = 9999;
var category = (short)100;
var rowData = System.Text.Encoding.Unicode.GetBytes("ABCDEFGH");

if (!System.Diagnostics.EventLog.SourceExists(source))
{
 var eventSourceData = new EventSourceCreationData(source, logname);
        EventLog.CreateEventSource(eventSourceData);
}
EventLog.WriteEntry(source, message, System.Diagnostics.EventLogEntryType.Error, eventId, category, rowData);
しかし、Windows Vista 以降ではユーザーアカウント制御 (UAC) により、イベントソースへの問い合わせを行った時点で例外が発生する。

型 'System.Security.SecurityException' のハンドルされていない例外が System.dll で発生しました
追加情報:ソースが見つかりませんでしたが、いくつかまたはすべてのログを検索できませんでした。アクセス不可能なログ: Security

Visual Studio を管理者権限で実行するか、他の方法であらかじめソースの登録を行っておくしかない。

Related Posts Plugin for WordPress, Blogger...