取EventLog表的数据,通常的方法是用WMI去取。
Xp和Vista在EventLog表有很大的差别:
1。用WMI取出来的数据,Xp的记录是按时间最近至最远,而Vista却反过来。
可能大家会遇到这样的需求,就是客户要求取一些数据,是要按一定需求排序的
.net的话实现就不说了,很简单。List类都能解决问题。
c/c++的话就需要先将数据取出来放到链表内,按照一定格式再排序。
因为WMI采用的是WQL语句,该语句是SQL语句的子集,不提供更新,排序,分组等操作。
2。Xp内每一条EventLog中用WMI取出来的数据的时间是触发该Event时的系统时间(UTC时间+时差),存入Event内就不会发生变化。而Vista有改进,Event里的时间为UTC时间,一旦用户改变系统的时差后,则通过管理工具内Event表中看到的时间会随着时区变化而变化,但实际存放的EventLog表内却只存UTC时间。
Vista的这样改变,更贴切一些,但是对于我们开发来说,取出来的时间还要进行加工下,不然直接显示UTC时间,用户也不能接受。