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