我正在为我的webapp写一个dll。 我正在监视一个服务,我有一个网页,显示服务正在运行,停止或其他。 所以我想获得这个服务logging的EventLog的最后10个条目。 但是,当我在做我调用ToArray()时得到一个exception。 我该怎么办?
public static IEnumerable<EventLogEntry> GetEventLogs(string servicename) { if (!EventLog.sourceExists(servicename)) throw new ArgumentException("Service not found","servicename"); var myLog = new EventLog { Source = "MySource" }; var entrIEs = myLog.EntrIEs; return (from EventLogEntry entry in entrIEs where entry.source == servicename select entry).ToArray(); }
所以EventLog.sourceExists(servicename)返回true ,但失败后。
它通过Security文件夹迭代失败,但我只需要Application
解决了
C#用Process.Start()打开不可用的networkingpath
如何在windows上编码C#但在linux上运行?
以编程方式调用SendTo
在windows启动时启动wpf应用程序
创build一个windows钩子来检测菜单点击
但是,我可以从指定的文件夹读取,这很有趣。 这取决于EventLog类的Log属性。 所以我应该简单地用这个replace一行
var myLog = new EventLog {Source = "MySource",Log = "Application"};
另一个笑话是它有时候起作用。 有时不。 例如,此代码适用于我的服务,但与netprofm服务失败。 tnx帮助大家
如何将HTML和文本都复制到剪贴板?
file.copy()从networking共享到另一个共享在同一台机器上通过networking复制文件?
注册免费的COM DLL要求。NET框架3.5安装时,它在注册时工作正常
如何使用C#代码获取IIS虚拟目录和Web应用程序的物理path?
windows – 用C#命名pipe道性能build议
您需要具有管理员权限才能从事件日志中读取。 你是否以管理员身份运行?
您还可以在注册表中修改对此的权限:
HKEY_LOCAL_MACHInesYstemCurrentControlSetServicesEventlogSecurity
右键单击该条目,选择权限,并确保您有权访问。
您不能跳过安全性文件夹并仅查看应用程序。 从文档 :
要在windows Vista及更高版本或windows server 2003中搜索事件源,您必须具有管理权限。 这个要求的原因是,必须搜索所有的事件日志,包括安全性,以确定事件源是否唯一。 从windows Vista开始,用户无权访问安全日志; 因此,抛出SecurityException。
进一步阅读和另一相关报价:
仅从日志中读取时,不需要指定源。 您只能指定 EventLog实例的日志名称和计算机名称(服务器计算机名称)属性。
总结以上是内存溢出为你收集整理的由于SecurityException而无法读取事件日志全部内容,希望文章能够帮你解决由于SecurityException而无法读取事件日志所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)