采取以下C#代码:
EventLog[] eventLogs; eventLogs = EventLog.GetEventLogs(computername); foreach (EventLog evt in eventLogs) { statusMessagesListBox.Items.Add("evt.Log.ToString(): " + evt.Log.ToString() + "\t\tevt.LogDisplayName: " + evt.LogDisplayName); }
当我运行,我的输出如下所示:
evt.Log.ToString(): Application evt.LogDisplayName: Application evt.Log.ToString(): HardwareEvents evt.LogDisplayName: Hardware Events evt.Log.ToString(): Security evt.LogDisplayName: Security
等等,就这样。 但为什么没有安装日志? 此外,当我试图运行这个代码:
var eventLog = new EventLog("Setup", computer); eventLog.Clear(); eventLog.Dispose();
我收到一条错误消息,即该计算机上不存在日志“安装程序”,即使它确实如此。 以上代码适用于除安装程序日志以外的所有其他事件日志。
如何访问安装程序事件日志?
作为参考,正在尝试的.NET框架是4.0和4.5,目标计算机是Windows 7和2008 R2。
EventLog
类只处理管理事件日志。 SetUp事件日志是一个Operational日志(你可以在Event Viewer中看到这个日志),所以这个类不能被处理。
要访问SetUp事件日志,您必须使用System.Diagnostics.Eventing.Reader
命名空间中的类。 您可以使用以下方法遍历事件:
EventLogQuery query = new EventLogQuery("SetUp", PathType.LogName); query.ReverseDirection = true; // this tells it to start with newest first EventLogReader reader = new EventLogReader(query); EventRecord eventRecord; while ((eventRecord = reader.ReadEvent()) != null) { // each eventRecord is an item from the event log }
看看这个MDSN文章更详细的例子。