尝试在.NET中使用EventLog.SourceExists方法时出现问题

我正在尝试使用C#在我的应用程序中使用事件日志,所以我添加了以下代码

if (!EventLog.SourceExists("SomeName")) EventLog.CreateEventSource("SomeName", "Application"); 

EventLog.SourceExists导致SecurityException说
“找不到源,但无法搜索部分或全部事件日志。无法访问日志:安全性。”

我在Windows 7中以管理员身份运行。

任何帮助都会得到满足。

这是权限问题 – 您应该授予正在运行的用户读取以下注册表项的权限:

 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog 

或者,您可以绕过CreateEventSource ,无需访问此注册表项。

以下主题中将详细介绍这两种解决方案 – 如何在Vista下创建事件日志源? 。

简短提示:

在服务安装期间注册了一个事件源(如果应用程序是Windows服务),并且可以在没有安全例外的情况下使用低级流程所有者(不是管理员)

我以典型的方式从SO / MSDN执行C#代码的服务安装/运行

重要的是System.ServiceProcess.ServiceBase类中的属性ServiceName