我现在正在编写一个应用程序,其中一部分将从Windows事件日志中抓取一些信息,它主要起作用....
Dim strValue As String
Dim objLogs() As EventLog
Dim Logname As String = "Application"
Dim objEntry As EventLogEntry
Dim objLogEntry As EventLogEntry
Dim objLog As EventLog
objLogs = EventLog.GetEventLogs()
For Each objLog In objLogs
If objLog.LogDisplayName = Logname Then
For Each objLogEntry In objLog.Entries
WriteLine("EventID")
WriteLine("Machinename")
WriteLine("message")
Next
Exit For
End If
Next
这将很乐意写出EventID,机器名称和事件消息。 details tab in event viewer
我无法弄清楚如何输出"详细信息"事件查看器中的选项卡理想为字符串或类似字符串。
MSDN没有帮助,有人能指出我正确的方向吗?
提前致谢,
答案 0 :(得分:0)
看起来EventLogEntry中的详细信息由存储为字节数组的Data属性表示。您可能需要将其转换为可读的内容。但是,Windows操作系统版本的数据格式似乎有所不同。
这是另一种方法。代码从答案复制到以下问题并转换为VB.Net。
Serializing a .NET EventLogEntry instance to XML
Imports System.Diagnostics.Eventing.Reader
Sub Main()
Dim query As New EventLogQuery("System", PathType.LogName)
Dim watcher As New EventLogWatcher(query)
AddHandler watcher.EventRecordWritten, AddressOf watcher_EventRecordWritten
watcher.Enabled = True
Console.ReadLine()
End Sub
Public Sub watcher_EventRecordWritten(sender As Object, e As EventRecordWrittenEventArgs)
Console.WriteLine(e.EventRecord.ToXml())
End Sub
放入简单控制台应用程序的主模块和监视系统事件。将转换为XML的事件数据写出为一个长字符串。
在Windows 7计算机上使用4.5框架。