下面是我在运行下面的代码时遇到的异常:
未找到源,但无法搜索部分或全部事件日志。无法访问的日志:安全性。
代码是
if (!EventLog.SourceExists(this.EventLogSource))
异常的内容对我来说有意义,这就是为什么它没有意义。该行在 Visual Studio 2010、.NET 4 中作为控制台应用程序运行(暂时)。我已经在不同的环境中运行了这个,但我不希望我远程桌面会破坏这个方法。我尝试过改变HKML\CCS\Services\eventlog
权限 - 无济于事,以及C:\Windows\System32\Winevt\Logs\Security.evtx
权限。再次,无济于事。
我的问题如下:
- 为什么没有覆盖来忽略安全日志,
- 我该如何解决这个问题(以编程方式)
- 这是因为我是远程桌面吗?
任何建议都会很棒。
出于您所发现的原因,Microsoft 要求您成为管理员才能执行此方法。
这是他们的解释(来自MSDN 文档 http://msdn.microsoft.com/en-us/library/6s7642se.aspx):
要在 Windows Vista 及更高版本或 Windows Server 2003 中搜索事件源,您必须具有管理权限。
提出此要求的原因是必须搜索所有事件日志(包括安全性)以确定事件源是否唯一。从Windows Vista开始,用户无权访问安全日志;因此,会抛出 SecurityException。
您如何解决这个问题完全取决于您需要做什么。如果您无法以管理员身份登录,最好的建议是尝试在 try/catch 块中执行操作,如果抛出 SecurityException,则执行一些替代操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)