1

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.

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
user1520209
  • 11
  • 2
  • 6

1 Answers1

2

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

Alex K.
  • 171,639
  • 30
  • 264
  • 288