How to write log to SECURITY event Log in C#?

2019-08-10 11:50发布

问题:

I want to write these values in the security event log:

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);

I have an exception this line:

if (!EventLog.SourceExists(sSource))

Exception:

Cannot open log for source „Security”. You may not have write access.

But when I change the Security to another it works, but the just the application event log contains the values.

回答1:

Administrative privileges are required to read the Security Log so the SourceExists call will fail if not run under that context.

Additionally only LSA can write to the security log & it does not support types such as "Warning", only audit events.

Take a look at; http://msdn.microsoft.com/en-gb/magazine/cc163718.aspx