安全问题使用My.Application.Log.WriteException写入事件日志

时间:2009-08-04 21:55:47

标签: vb.net logging

我在WinForms应用程序中处理Application.UnhandledException事件,需要记录那里捕获的异常。我的app.config设置为记录FileLog和EventLog的异常。

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

我理解为什么 - 用户没有创建EventLog源的权限,但问题是如何创建此源?在我看来,我可以:

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

2)从我的应用程序中创建,以某种方式提升权限?但这会让UAC在Vista上出现提示。

在客户端计算机上创建Windows应用程序EventLog源的最佳做法是什么?

感谢

1 个答案:

答案 0 :(得分:2)

最常见的方法是选择1。

如何操作取决于您的安装程序包,但您需要:

  1. 确保您的安装程序以提升的权限运行。
  2. 将单个条目写入该事件日志源,或者
  3. 直接为您的事件源创建注册表项
  4. 当您的安装程序写入事件日志时,将创建源并将为非管理员提供。

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