0

我想在 Windows XP 和 Windows 7 中将事件日志保存到 CSV 文件。

在 Windows XP 中,我可以手动执行此操作:我打开“事件查看器”(EVENTVWREVENTVWR.MSC在命令行上),然后例如右键单击“应用程序”日志,然后选择上下文菜单命令“将日志文件另存为”和“CSV(逗号分隔)(* .csv)”,我终于将日志保存在文件中。

该文件包含所有日志信息:它包含每个事件的完整格式化消息。

如果您只是启动上下文菜单命令“导出列表”,您将获得一个事件的“元数据”列表,例如Type, Date, Time, Source, Category, Event, User, Computer.

我浏览了 Windows XP 中可用的 API,即Event Logging Functions (Windows),我发现:

  1. BackupEventLog不允许我选择备份文件的格式,即它将以对我来说毫无用处的二进制格式保存。
  2. ReadEventLog通过结构EVENTLOGRECORD和说明为我提供了元数据,以便通过大量工作获取完整格式的消息:

事件标识符与源名称和语言标识符一起标识了一个更详细地描述事件的字符串。这些字符串用作替换字符串,并合并到消息字符串中以形成完整的消息。消息字符串包含在注册表源条目中指定的消息文件中。要从消息文件中获取适当的消息字符串,请使用 LoadLibrary 函数加载消息文件并使用 FormatMessage 函数。

现在,工作量很大:source进入注册表(在哪里?恐怕有多个可能的地方......)找到资源文件名,加载文件,LoadLibrary然后用FormatMessage.

我错过了什么吗?有什么捷径吗?为什么微软不给我们一个简单的 API 来备份 CSV 格式的日志?毕竟他们已经在里面写了代码eventvwr......

现在我有点气馁,我没有浏览自 Windows Vista 以来可用的Evt*API(Windows 事件日志函数 (Windows) )。

4

0 回答 0