写入应用程序日志而不创建源

时间:2013-03-07 21:29:30

标签: .net event-log

我想写入默认的应用程序事件日志,而不自动或通过EventLog.CreateEventSource创建事件日志源。该程序可以作为非管理员运行,无法创建事件日志源。此应用程序没有安装程序。在这种情况下,我可以为源代码指定一些“始终有效”吗?

作为参考,错误信息是:

System.Security.SecurityException: The source was not found, but some or all event logs could not be searched.  To create the source, you need permission to read all event logs to make sure that the new source name is unique.  Inaccessible logs: Security.

1 个答案:

答案 0 :(得分:4)

如果没有注册事件源,您就无法编写,并且您需要管理权限来创建事件源。如果您具有管理权限并且在没有首先创建源的情况下编写日志,则Windows会自动创建事件源。

来自MSDN:

  

使用WriteEvent和WriteEntry将事件写入事件日志。您必须指定事件源来编写事件;在使用源写入第一个条目之前,必须创建和配置事件源。

     

在安装应用程序期间创建新的事件源。这允许操作系统有时间刷新其已注册事件源列表及其配置。如果操作系统尚未刷新其事件源列表,并且您尝试使用新源写入事件,则写入操作将失败。您可以使用EventLogInstaller或使用CreateEventSource方法配置新源。您必须拥有计算机的管理权限才能创建新的事件源。

EventLog.Source Property