DateTime startDate = new DateTime(2025, 2, 1); // 例如,从2025年2月1日开始
EventLog eventLog = new EventLog();
eventLog.Log = "Security"; // 可以更改为 "System" 或 "Security" 等
eventLog.Source = "Application"; // 根据需要设置,通常为应用程序名称或"Application"
// 获取所有条目
var entries = eventLog.Entries;
// 过滤出指定日期后的条目
var filteredEntries = entries.Cast<EventLogEntry>()
.Where(e => e.TimeGenerated > startDate)
.ToList();
int tmpNum = 0;
foreach (var entry in filteredEntries)
{
//Console.WriteLine($"Time: {entry.TimeGenerated}, Message: {entry.Message}");
if (entry.EventID == 4625)
{
tmpNum++;
Console.WriteLine($"第 {tmpNum} 次登录");
textBox1.Text = textBox1.Text + Environment.NewLine;
textBox1.Text = textBox1.Text + Environment.NewLine;
textBox1.Text = textBox1.Text + Environment.NewLine;
textBox1.Text = textBox1.Text + $"第 {tmpNum} 次登录:" + Environment.NewLine;
textBox1.Text = textBox1.Text + ("时间:" + entry.TimeGenerated) + Environment.NewLine;
//textBox1.Text = textBox1.Text + ("索引:" + entry.Index) + Environment.NewLine;
textBox1.Text = textBox1.Text + ("ID:" + entry.EventID) + Environment.NewLine;
//textBox1.Text = textBox1.Text + ("用户名:" + entry.UserName) + Environment.NewLine;
//textBox1.Text = textBox1.Text + ("设备名称:" + entry.MachineName) + Environment.NewLine;
//textBox1.Text = textBox1.Text + ("站点:" + entry.Site) + Environment.NewLine;
//textBox1.Text = textBox1.Text + ("来源:" + entry.Source) + Environment.NewLine;
string latestLoginUser = string.Empty;
// 解析用户信息,这里简单地从消息中提取用户名
// 不同系统的事件消息格式可能略有不同,需根据实际情况调整解析逻辑
string message = entry.Message;
int startIndex = message.IndexOf("登录失败的帐户:") + "登录失败的帐户:".Length;
string tmpMessage = message.Substring(startIndex, message.Length - startIndex);
startIndex = tmpMessage.IndexOf("帐户名:") + "帐户名:".Length;
int endIndex = tmpMessage.IndexOf(Environment.NewLine, startIndex);
if (startIndex > 0 && endIndex > startIndex)
{
latestLoginUser = tmpMessage.Substring(startIndex, endIndex - startIndex).Trim();
}
textBox1.Text = textBox1.Text + ("登录失败的帐户名:" + latestLoginUser) + Environment.NewLine;
string latestLoginIP = string.Empty;
startIndex = tmpMessage.IndexOf("源网络地址:") + "源网络地址:".Length;
endIndex = tmpMessage.IndexOf(Environment.NewLine, startIndex);
if (startIndex > 0 && endIndex > startIndex)
{
latestLoginIP = tmpMessage.Substring(startIndex, endIndex - startIndex).Trim();
}
textBox1.Text = textBox1.Text + ("登录失败的IP地址:" + latestLoginIP) + Environment.NewLine;
Console.WriteLine($"第 {tmpNum} 次登录,时间:" + entry.TimeGenerated);
Console.WriteLine("登录失败的帐户名:" + latestLoginUser);
Console.WriteLine("登录失败的IP地址:" + latestLoginIP);
//textBox1.Text = textBox1.Text + Environment.NewLine + entry.Message;
}
}