.net 需要EventLogQuery时间格式吗?
我正在尝试使用EventLogQuery类来查询eventlog。我遵循了上所示的示例 我已经在谷歌搜索了一吨,但找不到任何带有@SystemTime的查询 有人知道我需要使用的日期时间格式吗?到目前为止,我所尝试的一切都返回了无效的查询异常 这里有一个XML示例,其中包含预期日期格式的字符串版本.net 需要EventLogQuery时间格式吗?,.net,.net,我正在尝试使用EventLogQuery类来查询eventlog。我遵循了上所示的示例 我已经在谷歌搜索了一吨,但找不到任何带有@SystemTime的查询 有人知道我需要使用的日期时间格式吗?到目前为止,我所尝试的一切都返回了无效的查询异常 这里有一个XML示例,其中包含预期日期格式的字符串版本 <TimeCreated SystemTime="2006-02-28T21:51:44.754Z" /> EventLogQuery使用XML格式查询事件日志。 您可以找到查询XML的
<TimeCreated SystemTime="2006-02-28T21:51:44.754Z" />
EventLogQuery使用XML格式查询事件日志。 您可以找到查询XML的模式 的文本是根据事件的XML序列化计算的XPath表达式 您可以找到事件XML的模式 具有类型为的属性SystemTime,因此查询XML中的该属性的格式是XPath处理器可以解析为有效日期时间的格式。有关详细信息,请参阅 例如,您可以尝试以下查询:
<QueryList>
<Query Id="0" Path="Application">
<Select Path="Application">*[System[TimeCreated[@SystemTime = '2011-12-20T00:42:53.000000000Z']]]</Select>
</Query>
</QueryList>
如果恰好在给定的日期和时间创建了一个事件,它将解析并返回一个值
也是Filter XPath协议的一个扩展函数,它接受一个或两个类型的参数并返回一个数字,因此只需在表达式中使用一个数字,就像在您的示例中一样
另外,您可以使用Windows事件查看器%windir%\system32\eventvwr.msc来输入事件查询XML,并仅通过Windows Vista、7和2008快速评估事件查询XML:
下面是一个初始化EventLogQuery对象的C示例,该对象将只加载最后一天的事件条目
var yesterday = DateTime.UtcNow.AddDays(-1);
var yesterdayDtFormatStr = yesterday.ToString(
"yyyy-MM-ddTHH:mm:ss.fffffff00K",
CultureInfo.InvariantCulture
);
var query = string.Format(
"*[System/TimeCreated/@SystemTime >='{0}']",
yesterdayDtFormatStr
);
var elq = new EventLogQuery("Application", PathType.LogName, query);
下面是另一个用于初始化EventLogQuery对象的C,该对象将加载特定日期范围的事件实体
var startTime = DateTime.Now.AddDays(-1);
var endTime = DateTime.Now;
var query = string.Format("*[System[TimeCreated[@SystemTime >= '{0}']]] and *[System[TimeCreated[@SystemTime <= '{1}']]]",
startTime.ToUniversalTime().ToString("o"),
endTime.ToUniversalTime().ToString("o"));
var elq = new EventLogQuery("Applicaton", PathType.LogName, query);
在过去2小时内登录IP列表失败。EventID=4625,CreatedDate>=最后2小时
我感谢你的帮助。但是,你能给我一个例子,说明这个字符串的格式是什么吗?@user1106686我已经编辑了我的答案,将示例中带有字符串datetime的行包括在内。希望这有帮助。谢谢你的好帖子。我想在这里补充一点,这里接受的日期时间格式是dtObj.ToStringO。dtObj是您的起始日期时间对象。
var AfterTime = DateTime.Now.AddMinutes(-120);
string queryString =
"<QueryList>" +
" <Query Id='0' Path='Security'>" +
$" <Select Path='Security'>*[System[(EventID=4625) and TimeCreated[@SystemTime>='{AfterTime.ToString("o")}']]]</Select>" +
" </Query>" +
"</QueryList>";
var reader = new EventLogReader(new EventLogQuery("Security", PathType.LogName, queryString));
for (EventRecord eventDetail = reader.ReadEvent(); eventDetail != null; eventDetail = reader.ReadEvent())
{
if (eventDetail.Id == 4625 && eventDetail.TimeCreated >= AfterTime)// Extra security, check again
{
IPlist.Add(eventDetail.Properties[eventDetail.Properties.Count - 2].Value.ToString()); // Get IP Adress, Last Second Element Has IP Adress
}
}
var AttackerIP = IPlist.GroupBy(x => x).Select(x => x.Key).ToList();