C#EventLog无法访问日志

Dig*_*805 12 c# windows exception event-log

以下是我在运行紧随其后的代码时遇到的异常:

找不到源,但无法搜索部分或全部事件日志.无法访问的日志:安全性.

代码是

if (!EventLog.SourceExists(this.EventLogSource))
Run Code Online (Sandbox Code Playgroud)

异常的内容对我来说很有意义,这就是为什么不这样做.此行在Visual Studio 2010,.NET 4中作为控制台应用程序运行(暂时).我已经在不同的环境中运行了这个,但我不希望我是远程桌面的事实打破这种方法.我试过更改HKML\CCS\Services\eventlog权限 - 无济于事,以及C:\Windows\System32\Winevt\Logs\Security.evtx权限.再一次,无济于事.

我的问题如下:

  1. 为什么没有覆盖来忽略安全日志,
  2. 我该如何解决这个问题(以编程方式)
  3. 这是因为我是远程办公桌.

任何建议都会很棒.

com*_*ech 17

Microsoft要求您是管理员才能执行此方法,原因很简单.

这是他们的解释(来自MSDN文档):

要在Windows Vista及更高版本或Windows Server 2003中搜索事件源,您必须具有管理权限.

此要求的原因是必须搜索所有事件日志(包括安全性)以确定事件源是否唯一.从Windows Vista开始,用户无权访问安全日志; 因此,抛出SecurityException.

你如何解决它将完全取决于你需要做什么.如果您无法以管理员身份登录,那么最好的建议是尝试在try/catch块中执行操作,如果抛出SecurityException,则执行一些备用操作.


Pau*_*der 8

访问某些EventLogs需要提升.请以管理员身份运行该应用.