C# EventViewer 日志解析

我负责解析转发的 EventViewer (evt) 日志(Windows 7?)。为此,我使用 Log Parser 2.2 对日志运行查询,并提取特定的 EventID 并将它们写入 CSV 文件。但是,我正在考虑使用EventViewerReader来代替。


我在这些 evt 上所做的查询包括一个“字符串”列,它输出一堆通常格式为:SID |用户名|用户组|...但它不一致的垃圾。我想要的是一种一致的方式来获取这些事件的用户名并过滤掉无用的数据。问题是我不明白输出的格式。我想知道这些事件是否具有标准格式,或者这是我工作中的自定义格式?我现在使用的方法基本上是查找已知用户组并检查它们左侧的潜在用户名(跳过“LOCALS SERVICE”、“NETWORK SERVICE”、“-”和其他一些关键字)。我对这种方法的问题是我不知道所有的用户组,而且我可能会误报用户名。


以下是我正在查看的一些EventID 代码:https : //www.ultimatewindowssecurity.com/securitylog/quickref/downloads/quickref.zip


4624    An account was successfully logged on

4625    An account failed to log on

4647    User initiated logoff

4648    A logon was attempted using explicit credentials

4800    The workstation was locked

4801    The workstation was unlocked

4802    The screen saver was invoked

4803    The screen saver was dismissed


白猪掌柜的
浏览 265回答 1
1回答

梦里花落0921

我最终仔细查看了 evt 文件,发现它们有一套 XML 模式。“字符串”并不是真正的元素,而是 EventData 子数据元素的串联值。我所做的只是查看每个 EventID 的架构,并找到每个事件类型中用户名的深度。我认为它是 strings[5] (TargetUserName) 用于登录/注销,strings[0] 用于其他几个,strings[1] 用于更多。<EventData>&nbsp; <Data Name="SubjectUserSid">S-1-5-18</Data>&nbsp;&nbsp; <Data Name="SubjectUserName">XXX-PC$</Data>&nbsp;&nbsp; <Data Name="SubjectDomainName">WORKGROUP</Data>&nbsp;&nbsp; <Data Name="SubjectLogonId">0x3e7</Data>&nbsp;&nbsp; <Data Name="TargetUserSid">S-1-5-18</Data>&nbsp;&nbsp; <Data Name="TargetUserName">SYSTEM</Data>&nbsp;&nbsp; <Data Name="TargetDomainName">NT AUTHORITY</Data>&nbsp;&nbsp; <Data Name="TargetLogonId">0x3e7</Data>...</EventData>
打开App,查看更多内容
随时随地看视频慕课网APP