在我的C#应用程序中,我使用EventLog类来记录消息。它在我的机器上运行得很好,但在客户机上却不能真正工作。
客户端计算机配置与我的计算机不同。我的机器使用的是Vista操作系统,而客户端使用的是Windows 2003操作系统。
我在我的机器上有管理员权限,而在客户机上,我的应用程序在非管理员用户权限下运行。
在客户机上,我以Faulting application , version ,faulting module kernel32.dll身份收到错误
当我注释掉EventLog.WriteEntry()方法调用并开始将日志写入简单的文本文件时,我的应用程序在客户机上停止崩溃。
所以我想知道事件日志记录是否需要管理员权限或其他什么?
环境详细信息: C#、Oracle 2.0框架、Windows Vista、Windows2003服务器、.net
发布于 2010-10-14 14:13:40
System.Diagnostics.EventLog class in .NET Framework 3.5 @ MSDN
如果写入事件日志,则必须指定或创建事件源。您必须对计算机具有管理权限才能创建新的事件源。
..。
如果与EventLog实例关联的事件日志的事件源不存在,则会创建一个新的事件源。若要在Windows Vista及更高版本或Windows Server2003中创建事件源,您必须具有管理凭据。
这是因为必须搜索包括安全日志在内的所有事件日志,以确定事件源是否唯一。从Windows Vista开始,用户没有访问安全日志的权限;因此会抛出SecurityException。
发布于 2011-09-28 16:45:34
一种解决方案是在应用程序安装程序中创建所需的事件源,该安装程序以管理员权限运行。请参阅http://support.microsoft.com/default.aspx?scid=kb;EN-US;329291
https://stackoverflow.com/questions/3930529
复制相似问题