我想在Windows XP和Windows 7中将事件日志保存为CSV文件。
在Windows XP中我可以手动执行:我在命令行上打开“事件查看器”(EVENTVWR
或EVENTVWR.MSC
),然后例如我右键单击“应用程序”日志,然后我选择上下文菜单命令“将日志文件保存为”和“CSV(逗号分隔)(* .csv)”,最后我将日志保存在文件中。
该文件包含所有日志信息:它包含每个事件的完整格式化消息。
如果您只是启动上下文菜单命令“导出列表”,您将只获得一个事件的“元数据”列表,如Type, Date, Time, Source, Category, Event, User, Computer
。
我浏览了Windows XP中的可用API,即Event Logging Functions (Windows),我发现:
BackupEventLog
不允许我选择格式
备份文件,即它将以二进制格式保存,对我来说将是无用的。ReadEventLog
通过结构EVENTLOGRECORD
向我提供了元数据,并通过大量工作获取完整格式化消息的说明:事件标识符以及源名称和语言 标识符标识更详细地描述事件的字符串。 字符串用作替换字符串并合并到 消息字符串,以发出完整的消息。消息字符串是 包含在源条目中指定的消息文件中 注册表中。从消息中获取适当的消息字符串 文件,使用LoadLibrary函数加载消息文件并使用 FormatMessage函数。
现在,它有很多工作:使用source
进入注册表(在哪里?我担心有多个可能的地方......)找到资源文件名,用{加载文件{1}}然后使用LoadLibrary
格式化邮件。
我错过了什么吗?有没有捷径?为什么微软没有给我们一个简单的API来备份CSV格式的日志?毕竟他们已经在FormatMessage
...
现在我有点气馁,我没有浏览自Windows Vista以来可用的eventvwr
API(Windows Event Log Functions (Windows))。