以下是我在运行以下代码时遇到的异常:
找不到源,但无法搜索部分或全部事件日志。无法访问的日志:安全性。
代码是
if (!EventLog.SourceExists(this.EventLogSource))
异常的内容对我来说很有意义,这就是为什么不这样做。此行在Visual Studio 2010,.NET 4中作为控制台应用程序运行(暂时)。我已经在不同的环境中运行了这个,但我不希望我是远程桌面的事实打破这种方法。我已尝试更改HKML\CCS\Services\eventlog
权限 - 无效,以及C:\Windows\System32\Winevt\Logs\Security.evtx
权限。再一次,无济于事。
我的问题如下:
任何建议都会很棒。
答案 0 :(得分:17)
Microsoft要求您成为管理员才能执行此方法,原因很简单。
以下是他们的解释(来自the MSDN documentation):
要在Windows Vista及更高版本或Windows Server 2003中搜索事件源,您必须具有管理权限。
此要求的原因是必须搜索所有事件日志(包括安全性)以确定事件源是否唯一。从Windows Vista开始,用户无权访问安全日志;因此,抛出SecurityException。
你如何解决它将完全取决于你需要做什么。如果您无法以管理员身份登录,那么最好的建议是尝试在try / catch块中执行操作,如果抛出SecurityException,请执行一些备用操作。
答案 1 :(得分:8)
访问某些EventLogs需要提升。请以管理员身份运行该应用。
答案 2 :(得分:0)
我建议使用Logging Application Block Enterprise Library来实现正确的日志记录。
从here
开始阅读