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

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

在我的代码中,如果出现严重错误,我会在事件日志中写入一些内容(使用 ReportEvent 函数)。对于这些条目,我会在事件日志条目中获得一个用户 ID(ReportEvent 函数的第 5 个参数)。

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

问题是 Windows 还会自行为我的应用程序添加条目,特别是:

  • 如果应用程序显示 MesssageBox(带有 MB_TASKMODAL 标志),事件日志将显示一个带有源“应用程序弹出窗口”的条目。
  • 如果我的应用程序很忙并且没有立即响应。事件日志会显示一个带有“应用程序挂起”来源的条目。

为什么 Windows 不在事件日志条目中显示用户名或用户 SID?为什么大多数时候都是“N/A”?有什么方法可以强制 Windows 在 Windows 生成的事件日志条目中使用用户名或 SID?

谢谢,帕特里克

答案1

据我所知,没有办法告诉 Windows 使用用户名记录事件。看来 Microsoft 正在放弃在大多数事件中记录用户名。

直到 Windows 2003,安全事件日志中的事件通常都与用户名相关联,但 Windows 2008 似乎并非如此。

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

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

我猜你可能想根据用户名过滤事件,这样你就能查看与应用程序有关的所有事件。不幸的是,这是不可能的,所以你必须查看内容以确定它是否与你的 exe 的名称匹配。

相关内容