如何使用Microsoft.Diagnostics.Tracing.EventSource类来记录服务发出的事件?

时间:2017-02-06 13:07:51

标签: .net permissions windows-services etw-eventsource

我们编写了一个类,负责记录从.NET Framework 4.6的EventSource派生的事件。我们已经在Web应用程序中成功使用了这种机制,但我们正在努力使其与作为服务运行的Windows应用程序一起使用。该服务使用Installer Class安装。安装后,它将显示在services.msc管理单元中,并分配给local system account

要注册我们的EventSource,我们使用带有im Manifestfilename.man参数的wevtutil program。打开eventvwr.msc管理单元会显示我们新注册的EventSource。我们正在使用Debug and Operational频道记录我们的活动。

但是,当我们通过在services管理单元中发出start命令来启动应用程序时,日志记录机制似乎无法正常工作。该应用程序不会在操作通道中生成任何条目。相反,它在调试通道中创建条目,但它在调试通道中创建的条目是应该写入操作通道的条目。将忽略为调试通道指定的条目。

我们已将调试模式模式内置到我们的应用程序中,因此我们可以将其作为桌面应用程序运行,而无需安装服务。在此调试模式下运行应用程序时,事件记录机制可以正常运行。

因此我们怀疑这是一个权限问题,阻止我们的Windows服务写入事件日志。但这看起来很奇怪,因为执行调试模式应用程序的用户不像运行该服务的本地系统帐户那样具有特权。我们还没有找到解决这个问题的方法。如article所述,使用wevtutil sl设置权限并未产生预期效果。

0 个答案:

没有答案