我的应用程序在C#.NET中,它部署在不同的机器上。我的应用程序的用户具有正常的访问权限(没有ADMIN权限)。在一些系统上我得到System.Security.SecurityException。它说" System.Security.SecurityException:找不到源,但无法搜索部分或全部事件日志。无法访问的日志:安全"
我做了一些解决方法: -
- 在一台机器上我用管理员权限启动了我的应用程序,它工作正常 - 没问题。
- 我在HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Eventlog \ Security中添加了用户组。 它运作良好。
醇>
我不想去每台机器并做上面的解决方法。我需要任何可以在所有机器中应用一次的通用解决方法。 有什么帮助吗?
写下几行代码: - 配置文件: -
<add key="E_Source" Value="ABC">
C#代码
Public static readonly string E_Source = ConfigManager.GetString("E_Source");
EventLog.writeEntry(E_Source, logtext, logtype);
提前致谢
答案 0 :(得分:4)
要查找要编写的源,.NET将枚举所有事件日志。如果它不存在,.NET最终将尝试枚举安全日志,对于该日志,您甚至没有普通用户的读取权限。因此,您将获得SecurityException。
因此,您必须确保事件日志存在(在不触发异常的情况下,您不能执行哪种AFAIK)。通常,您可以在安装/安装过程中执行此操作。然后,在写入时,捕获SecurityException并根据需要进行处理(例如,显示一条无法写入日志的错误消息)。
答案 1 :(得分:0)
如果您以编程方式写入EventLog,则需要创建具有提升权限的事件源,如EventLog类的文档中所述:
https://msdn.microsoft.com/en-us/library/system.diagnostics.eventlog%28v=vs.110%29.aspx