为什么大多数事件日志条目的用户名是“N / A”? 如何填写?

在我的代码中,如果事情发生了错误,我会在事件日志中写入一些东西(使用ReportEvent函数)。 对于这些条目,我在事件日志条目(ReportEvent函数的第五个参数)中获得一个用户标识。

对于许多其他条目(来自其他应用程序或来自Windows本身),用户字段显示为“N / A”。

问题是Windows本身也为我的应用程序添加条目,特别是:

  • 如果应用程序显示一个MesssageBox(带有MB_TASKMODAL标志)。 事件日志显示源“应用程序popup”的条目。
  • 如果我的应用程序很忙,没有立即回应。 事件日志显示源“Application Hang”的条目。

为什么Windows不在事件日志条目中显示用户名或用户SID? 为什么大部分时间都是“不适用”? 有没有什么办法可以强制Windows在Windows生成的事件日志条目中使用用户名或SID?

谢谢,帕特里克

据我所知,没有办法告诉Windows使用用户名logging事件。 看起来,微软正在从logging大多数事件的用户名开始。

直到Windows 2003,安全事件日志中的事件通常都有一个与它们相关的用户名,但是对于Windows 2008来说似乎并不是这样。

我不能说这是为什么。 事件日志条目通常由源,标识和类别标识,而用户名对于故障排除通常没有什么价值。 对于大多数事件来说,用户名无论如何都只是LocalSystem

Windows仍会logging某些事件的用户名,特别是来自任务计划程序的事件。 如果您查看Microsoft-Windows-TaskScheduler / Operational事件日志,您将看到所有事件都使用执行任务的用户的用户名logging。

我想要根据用户名筛选事件,以便您可以查看与您的应用程序有关的所有事件。 这是不可能的,所以你不得不看看内容,以确定它是否符合你的EXE的名称。