如何使用 EventLogQuery 查询 Eventdata?
How can I query the Eventdata using a EventLogQuery?
我正在尝试通过查看安全事件日志来确定最常使用的计算机。我正在考虑使用 4624 事件 ID,但我似乎无法弄清楚如何从查询中的 EventData 添加任何内容。我可以从 4624 事件中获取标准数据,但我要查询的是登录类型也为 7 的事件,然后能够读取目标用户名详细信息。
谢谢!
string query = @"*[System/EventID=4624]";
EventLogQuery eventsQuery = new EventLogQuery("Security", PathType.LogName, query);
try
{
EventLogReader logReader = new EventLogReader(eventsQuery);
for (EventRecord eventdetail = logReader.ReadEvent(); eventdetail != null; eventdetail = logReader.ReadEvent())
{
Console.WriteLine(eventdetail.ProcessId);
}
}
catch (EventLogNotFoundException)
{
Console.WriteLine("Error while reading the event logs");
return;
}
试试这个:
string query = @
"*[EventData[Data[@Name='LogonType']='7'] and System[(EventID='4624')]]";
EventLogQuery eventsQuery = new EventLogQuery("Security", PathType.LogName, query);
try {
EventLogReader logReader = new EventLogReader(eventsQuery);
for (EventRecord eventdetail = logReader.ReadEvent(); eventdetail != null; eventdetail = logReader.ReadEvent()) {
string description = eventdetail.FormatDescription();
string usernametemp = description.Substring(description.IndexOf("Account Name:") + ("Account Name:").Length + 2);
string username = usernametemp.Substring(0, usernametemp.IndexOf("\r"));
}
} catch (EventLogNotFoundException) {
Console.WriteLine("Error while reading the event logs");
return;
}
整理了您的查询,并使用说明找到了 "Account Name" 字段。希望这能回答您的问题。您可以应用 split/substring 方法真正找到该描述变量中的任何内容。它只是一个巨大的字符串 - 当您 select 一个日志时,您在事件日志 window 中看到的文本。
我正在尝试通过查看安全事件日志来确定最常使用的计算机。我正在考虑使用 4624 事件 ID,但我似乎无法弄清楚如何从查询中的 EventData 添加任何内容。我可以从 4624 事件中获取标准数据,但我要查询的是登录类型也为 7 的事件,然后能够读取目标用户名详细信息。
谢谢!
string query = @"*[System/EventID=4624]";
EventLogQuery eventsQuery = new EventLogQuery("Security", PathType.LogName, query);
try
{
EventLogReader logReader = new EventLogReader(eventsQuery);
for (EventRecord eventdetail = logReader.ReadEvent(); eventdetail != null; eventdetail = logReader.ReadEvent())
{
Console.WriteLine(eventdetail.ProcessId);
}
}
catch (EventLogNotFoundException)
{
Console.WriteLine("Error while reading the event logs");
return;
}
试试这个:
string query = @
"*[EventData[Data[@Name='LogonType']='7'] and System[(EventID='4624')]]";
EventLogQuery eventsQuery = new EventLogQuery("Security", PathType.LogName, query);
try {
EventLogReader logReader = new EventLogReader(eventsQuery);
for (EventRecord eventdetail = logReader.ReadEvent(); eventdetail != null; eventdetail = logReader.ReadEvent()) {
string description = eventdetail.FormatDescription();
string usernametemp = description.Substring(description.IndexOf("Account Name:") + ("Account Name:").Length + 2);
string username = usernametemp.Substring(0, usernametemp.IndexOf("\r"));
}
} catch (EventLogNotFoundException) {
Console.WriteLine("Error while reading the event logs");
return;
}
整理了您的查询,并使用说明找到了 "Account Name" 字段。希望这能回答您的问题。您可以应用 split/substring 方法真正找到该描述变量中的任何内容。它只是一个巨大的字符串 - 当您 select 一个日志时,您在事件日志 window 中看到的文本。