问题标签 [readeventlog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8120 浏览

event-log - 如何在没有 EventMessageFile 的情况下读取 Windows 事件日志?

我有读取 Windows 事件日志的代码。它使用 OpenEventLog、ReadEventLog 并获取事件源和事件 ID。然后它在下面查找源

键,根据其中列出的内容加载适当的 DLL EventMessageFile,最后用于FormatMessage将事件字符串与消息 DLL 内容合并以获得最终的事件消息文本。这是推荐的方法,虽然有点痛苦,但效果很好。

直到...我去查找源并发现它没有一个EventMessageFile,而是一个ProvideGuid条目。这似乎是一种新方式(它们出现在 Vista 和 Windows 2008 上)。Uggh - 没有任何东西可以传递给 FormatMessage 来查找消息文本并合并到数据字符串中

:(

在注册表中搜索 guid 确实会导致对其他文件的引用(在 HTTP 源的情况下为 http.sys),但我永远无法获得完整的消息文本。我必须使用这些EvtOpenSessionAPI 吗?我希望不会,因为我已经EVENTLOGRECORD*调用了 to ReadEventLog,并且该软件需要在EvtOpenSession不受支持的 Windows 2003 上运行(仅在 Vista 和 Windows 2008 上可用)。注意:Vista 上的某些源具有 ProviderGUID,而另一些具有 EventMessageFile,因此旧方法仍然可行。

因此,我所追求的是一种查看 ProviderGuid 并获取需要传递给 FormatMessage 以显示完整事件日志消息文本的 DLL 的方法。

感谢您的任何意见

0 投票
3 回答
648 浏览

ruby-on-rails - 在 Rails 应用程序中记录搜索结果

我们感兴趣的是记录和计算一个项目在搜索或列表页面中出现的次数。每天有 50,000 个独立访客,我们预计每天可以产生 3-4 百万“印象”,这不是一个非常高的数量,但我们希望很好地构建一个。

我们不需要实时读取这些数据,但希望能够生成每日总计和分析趋势等。类似于业务分析工具。

我们计划在页面呈现后使用 Ajax 帖子执行此操作 - 这将允许我们对结果进行计数,即使这些结果已被缓存。我们可以在每页的单个帖子中执行此操作,以发送以逗号分隔的 id 列表及其在页面上的位置。

我希望有一些关于此的设计模式/宝石/博客文章可以帮助我避免可能出现的常见的初学者错误。我也没有太多记录或阅读日志的经验。

我目前的策略 - 制作一些东西来将事件写入日志文件,并在一天结束时统计结果并将结果放回 mysql 中。

0 投票
1 回答
325 浏览

c++ - 为什么我的向量神秘地被清除?

我正在制作一个程序,它从 C++ 中的 Windows EventLog 文件 (.evt) 读取和存储数据。我正在使用调用OpenBackupEventLog(ServerName, FileName)ReadEventLog(...)。也使用这个:PEVENTLOGRECORD

无论如何,在不提供所有代码的情况下,基本思想如下:
1. 我使用 OpenBackupEventLog() 获取 .evt 文件的句柄并传入文件名。
2. 然后我使用 ReadEventLog() 用未知数量的 EventLog 消息填充缓冲区。
3. 我遍历缓冲区并将每条消息添加到向量
4. 我不断填充缓冲区(重复步骤 2 和 3)直到到达文件末尾。

这是我填充向量的代码:

无论如何,每当我运行它时,它都会获取文件中的所有事件日志,并且向量将拥有我想要的一切。但只要这一行:

被调用并返回 true(又名 ReadEventLog() 返回 false),然后我的向量中的每个字段都设置为零。

该向量仍将包含正确数量的元素,只是 PEVENTLOGRECORD 结构中的所有字段现在都为零。

有更好调试经验的人有什么想法吗?

谢谢。

编辑:我已经按照 Michael Burr 的建议更新了代码。上面的代码现在消除了我原来遇到的问题。

编辑 2:解决 Michael Burr 的其他建议:由于 EVENTLOGRECORD 的可变部分,我将制作一个自定义结构,其中包含 EVENTLOGRECORD 以及我感兴趣的一些其他变量:

提取可变部分并非易事,但这里有一个很好的示例可以帮助您入门: Querying for Event Information

0 投票
3 回答
2119 浏览

c# - 在 C# 中唯一标识事件日志条目

作为背景,我试图将来自多台机器的 Windows 安全事件日志条目合并到一个 SQL 表中,以便我可以报告它们。这一切都在 C# 中工作。

但是我需要一种方法来更有效地确定我以前是否看过这个事件,这样我就不必对我的数据库进行复杂的查找来查看我以前是否看过每个条目。

因为可以一次生成多个事件,所以到目前为止我看到的避免重复的唯一方法是检查事件 ID、生成时间、机器名称以及某些情况下的参数。

.Net 框架是否公开了我可以用来简化此过程的任何形式的唯一标识符?

提前致谢

0 投票
0 回答
584 浏览

c# - Windows 7 客户端的事件日志中缺少网络信息(事件 ID 4625)

我有一个应用程序,它将在 c# 中显示Security->的事件日志AuditFailure,我正在使用EventLogEntry类的Message属性读取它,我正在对其进行测试Window server 2008 R2

当从机器生成故障事件日志时,Window Server 2008 R2Windows XP会在网络信息部分下生成 IP 地址和端口号,但为Windows 7机器生成的日志不包含 IP 地址和端口号。windows 7机器生成的日志截图

0 投票
1 回答
960 浏览

c# - 读取本地事件日志?

在这里,我正在尝试使用 c# 使用此代码读取本地系统事件日志-

它运行良好,但问题是,在变量eventLogText中,我反复得到System.Diagnostics.EventLogEntry,这可能是非常常见的错误,但我不知道该怎么做,因为我对 c# 也很陌生编程也是如此。

其次,我想知道如果系统没有使用管理员帐户登录,在这种情况下读取事件日志会导致任何异常或错误,如果它会是什么解决方案?

需要帮助。在此先感谢。

0 投票
0 回答
167 浏览

event-log - 从 EventData 中获取系统意外关闭的日期

Windows 的事件 ID6008Unexpected Shutdown事件(参见系统的事件查看器)。问题是意外系统关闭的时间被写入字节数组(称为EventData)。

我想从中获取这个日期(在我的C#应用程序中),EventData但我不知道时间是如何在字节数组中编码的。

0 投票
1 回答
938 浏览

c++ - 您如何以编程方式检测 Windows 上的 BSOD 在重新启动后刚刚发生?

我不知道这是否可能,但是有没有办法以编程方式检测在 BSOD 之后重新启动时刚刚发生了 BSOD?

BSOD 可能出于任何原因或所有原因,没关系。我知道您可以检查转储文件,但如果用户关闭该设置,则不会进行转储。他们还可以更改他们希望转储文件转到的路径,这使您无法检测到。

任何和/或所有版本的 Windows 都会很好。如果我可以在每个操作系统上以相同的方式进行检查,那就太好了,但如果它必须是特定于操作系统的,我想那也可以。

0 投票
1 回答
3624 浏览

c# - 如何使用 EventLogQuery 查询 Eventdata?

我试图通过查看安全事件日志来确定最常使用的机器用户。我正在查看使用 4624 事件 ID,但我似乎无法弄清楚如何在查询中从 EventData 添加任何内容。我可以从 4624 事件中获取标准数据,但我试图查询的是登录类型也为 7 的事件,然后能够读取目标用户名详细信息。

谢谢!

0 投票
2 回答
1119 浏览

powershell - Wevtutil 仅输出新的事件日志

我运行命令wevtutil qe Application /rd:false /f:text并得到如下所示的输出。一段时间后,可能会生成新的事件日志,我只想阅读这些新的事件日志,即 Event[2]、Event[3]、Event[4] 等。

如何使用wevtutil工具仅生成这些新事件日志?

事件[0]:

  • 日志名称:应用程序
  • 来源:Microsoft-Windows-LoadPerf
  • 日期:2016-04-21T23:15:16.832
  • 事件 ID:1000
  • 任务:不适用
  • 级别:信息
  • 操作码:信息
  • 关键字:不适用
  • 用户:S-1-5-18
  • 用户名:NT AUTHORITY\SYSTEM
  • 电脑:WIN-IONOGQTF9O5
  • 说明:WmiApRpl (WmiApRpl) 服务的性能计数器已成功加载。数据部分中的记录数据包含分配给该服务的新索引值。

事件[1]:

  • 日志名称:应用程序
  • 来源:Microsoft-Windows-LoadPerf
  • 日期:日期:2016-04-21T23:15:13.097
  • 事件编号:3011
  • 任务:不适用
  • 级别:信息
  • 操作码:信息
  • 关键字:不适用
  • 用户:S-1-5-18
  • 用户名:NT AUTHORITY\SYSTEM
  • 电脑:WIN-IONOGQTF9O5
  • 说明:卸载服务 WmiApRpl (WmiApRpl) 的性能计数器字符串失败。数据部分的第一个 DWORD 包含错误代码。