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 回答