2009-08-04 69 views
0

我正在处理WinForms应用程序中的Application.UnhandledException事件,并且需要记录在那里捕获的异常。我的app.config被设置为将异常记录到FileLog和EventLog。使用My.Application.Log.WriteException写入事件日志的安全问题

问题是,作为非管理员用户运行时,EventLog因SecurityException而无法写入 - 我收到消息“未找到源,但无法搜索部分或全部事件日志。 “

我明白为什么 - 用户没有创建EventLog源的权限,但问题是如何创建此源?正如我所看到的,我可以:

1)使用我的安装程序创建EventLog源,因为它以admin身份运行。这个怎么做?

2)从我的应用程序内创建,通过某种方式提升权限?但是这会给Vista上的UAC提示。

在客户机上创建Windows应用程序事件日志源的最佳做法是什么?

感谢

回答

2

最常见的方式做,这是你的选项1.

你怎么做就看你的安装包,但你需要:

  1. 确保您的安装程序运行提高权限。
  2. 写一个条目到事件日志源或
  3. 直接

当你安装程序写入事件日志,源将被创建您的事件源创建注册表项,将可对于非管理员。

使用WiX(Windows Installer Xml),您可以引用this post以直接创建事件源注册表项。

+0

谢谢,这应该很好。已在此处找到更多信息: http://msdn.microsoft.com/en-us/library/xz73e171%28VS.80%29.aspx – 2009-08-04 23:55:14