如何以编程方式(C ++)将事件日志文件另存为CSV?

时间:2012-11-30 09:44:23

标签: visual-c++ windows-7 windows-xp event-log

我想在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向我提供了元数据,并通过大量工作获取完整格式化消息的说明:
  3.   

    事件标识符以及源名称和语言   标识符标识更详细地描述事件的字符串。   字符串用作替换字符串并合并到   消息字符串,以发出完整的消息。消息字符串是   包含在源条目中指定的消息文件中   注册表中。从消息中获取适当的消息字符串   文件,使用LoadLibrary函数加载消息文件并使用   FormatMessage函数。

    现在,它有很多工作:使用source进入注册表(在哪里?我担心有多个可能的地方......)找到资源文件名,用{加载文件{1}}然后使用LoadLibrary格式化邮件。

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

    中编写了代码

    现在我有点气馁,我没有浏览自Windows Vista以来可用的eventvwr API(Windows Event Log Functions (Windows))。

0 个答案:

没有答案