[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 を管理者権限で実行するか、他の方法であらかじめソースの登録を行っておくしかない。

このブログの人気の投稿

コピーした行の挿入が表示されない時はフィルタされていないかチェック

Excel で一部の図形だけ固定する