尝试在.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
。