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

时间:2011-08-23 06:00:01

标签: c# event-log readeventlog

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

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

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

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

提前致谢

3 个答案:

答案 0 :(得分:1)

我不确定您使用的是哪种C#方法,但是您可以获得可以使用的记录号(例如计算机+日志+记录号)。我知道你可以通过ManagementObjectSearcher(又名WMI)获取C#中的记录号,不确定其他API。

您还可以通过win32 API获取记录号:

旧API:EVENTLOGRECORD Structure

新API:EventRecordID (SystemPropertiesType) Element

答案 1 :(得分:1)

好的,在你的帮助下解决了它。获取时间戳,事件ID和机器名称,然后创建一个MD5哈希值。简单易用的索引。表现也很长。

答案 2 :(得分:0)

不幸的是,您唯一能做的就是使用计算机,事件源,事件ID和时间戳的组合键进行唯一匹配。事件框架AFAIK中没有全局唯一ID。

相关问题