c# - 解析事件日志条目的消息字段c#

标签 c# .net event-log

我如何使用 C# 解析事件日志消息或替换字符串的特定字段。即我需要从 ID 为 4624 的安全事件日志中解析“工作站名称”,示例日志在下面给出,在此处输入代码

Subject:
Security ID:        S-1-0-0
Account Name:       -
Account Domain:     -
Logon ID:       0x0

Logon Type:         0

Impersonation Level:        -

New Logon:
    Security ID:        S-1-5-18
    Account Name:       SYSTEM
    Account Domain:     NT AUTHORITY
    Logon ID:       0x3e7
    Logon GUID:     {00000000-0000-0000-0000-000000000000}

Process Information:
    Process ID:     0x4
    Process Name:       

Network Information:
    Workstation Name:   - some data
    Source Network Address: -
    Source Port:        -

Detailed Authentication Information:
    Logon Process:      -
    Authentication Package: -
    Transited Services: -
    Package Name (NTLM only):   -
    Key Length:     0 

我认为对于具有相同事件 ID 的每个事件,替换字符串的顺序和计数都是相同的,但长度不同。那么我如何将这个字符串解析为相应的对象/或提取特定的字段

最佳答案

如果您需要提取工作站名称字段的值,最简单的方法之一就是使用正则表达式

string fieldName = "Workstation Name";
var expression = new Regex(string.Format(@"\s*{0}:\s*-\s*(.+)\r\n", fieldName));
Match match = expression.Match(fileText);

if (match.Success)
{
  string workstationName = match.Groups[1];
  ...
}

关于c# - 解析事件日志条目的消息字段c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30343396/

相关文章:

c# - 订阅 Windows 事件日志?

c# - Windows IoT Raspberry Pi 3 C# 枚举 USB 音频适配器

c# - 如何根据用户输入在 LINQ 中使用 OrderBy 和 ThenBy?

.net - VS 2010 错误生成单元测试

.net - 事件日志消息文件问题

c# - 在没有事件源注册的情况下写入 Windows 应用程序事件日志

c# - 应用程序开始崩溃

c# - System.Data.dll c# 中发生类型为 'System.Data.OleDb.OleDbException' 的未处理异常

c# - F# 指针成员访问器

.net - 在 WebException 之后避免 ProtocolViolationException