如何在事件日志中获取用户数据?

3

我需要搜索事件日志,以下是我拥有的代码:

    IEnumerable<EventLogEntry> q = (
    from entry in el.Entries.Cast<EventLogEntry>()
    where entry.Source == sourceName

    orderby entry.TimeGenerated descending
    select entry
)

在事件日志中,有UserData,其中包括我需要的一些数据:

enter image description here

在EventLogEntry中,我可以获取部分数据,例如Message,但不能获取全部数据,例如Subject、HealthSet等。
所以问题是:如何获取事件日志条目的XML?假设我可以从中访问UserData。
谢谢
1个回答

3
您可以尝试以下方法:
        EventLogQuery query = new EventLogQuery("Setup", PathType.LogName);
        EventLogReader reader = new EventLogReader(query);
        EventRecord record;

        while ((record = reader.ReadEvent()) != null)
            Debug.WriteLine(record.ToXml());

包含<UserData>的示例输出字符串:

<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'><System><Provider Name='Microsoft-Windows-Servicing' Guid='{BD12F3B8-FC40-4A61-A307-B7A013A069C1}'/><EventID>4</EventID><Version>0</Version><Level>0</Level><Task>1</Task><Opcode>0</Opcode><Keywords>0x8000000000000000</Keywords><TimeCreated SystemTime='2015-10-15T14:01:06.098062300Z'/><EventRecordID>109</EventRecordID><Correlation/><Execution ProcessID='10060' ThreadID='4452'/><Channel>Setup</Channel><Computer>WINWIZ</Computer><Security UserID='S-1-5-18'/></System><UserData><CbsPackageChangeState xmlns='http://manifests.microsoft.com/win/2004/08/windows/setup_provider'><PackageIdentifier>KB3097617</PackageIdentifier><IntendedPackageState>Installed</IntendedPackageState><ErrorCode>0x0</ErrorCode><Client>WindowsUpdateAgent</Client></CbsPackageChangeState></UserData></Event>

enter image description here


有没有办法使用EventLogEntry获取它?现在我的代码中许多地方都使用了EventLogEntry。否则,将不得不更改为在每个地方使用EventRecord。谢谢。 - urlreader

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接