1

これらの値をセキュリティ イベント ログに書き込みたい:

Console.WriteLine("Level: {0}", eventInstance.LevelDisplayName);
Console.WriteLine("Date: {0}", eventInstance.TimeCreated);
Console.WriteLine("Forrás: {0}", eventInstance.ProviderName);
Console.WriteLine("Event id: {0}", eventInstance.Id);
Console.WriteLine("Task: {0}", eventInstance.TaskDisplayName);

string sSource;
string sLog;
string sEvent;

sSource = eventInstance.ProviderName;
sLog = "Security";
sEvent = eventInstance.FormatDescription();

if (!EventLog.SourceExists(sSource))
    EventLog.CreateEventSource(sSource, sLog);

EventLog.WriteEntry(sSource, sEvent);
EventLog.WriteEntry(sSource, sEvent,
EventLogEntryType.Warning, eventInstance.Id);

EventLog.WriteEntry(sSource, sEvent);
EventLog.WriteEntry(sSource, sEvent,
EventLogEntryType.Warning, eventInstance.Id);

私はこの行に例外があります:

if (!EventLog.SourceExists(sSource))

例外:

ソース「セキュリティ」のログを開けません。書き込みアクセス権がない可能性があります。

しかし、Security別のものに変更すると機能しますが、アプリケーションイベントログだけに値が含まれています。

4

1 に答える 1

2

セキュリティログを読み取るには管理者権限が必要であるため、SourceExistsそのコンテキストで実行されない場合、呼び出しは失敗します。

さらに、LSAのみがセキュリティログに書き込むことができ、「警告」などのタイプはサポートせず、イベントのみを監査します。

を見てみましょう; http://msdn.microsoft.com/en-gb/magazine/cc163718.aspx

于 2012-08-03T10:47:30.790 に答える