using System;
using System.Diagnostics;
class Program
{
static void Main()
{
string logName = "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational";
EventLog eventLog = new EventLog(logName);
try
{
// 打開事件日志
eventLog.OpenExisting();
// 獲取事件條目
EventLogEntryCollection entries = eventLog.Entries;
foreach (EventLogEntry entry in entries)
{
if (entry.InstanceId == 1076) // ID 1076 表示用戶登錄事件
{
Console.WriteLine("Event ID: " + entry.InstanceId);
Console.WriteLine("Time Generated: " + entry.TimeGenerated);
Console.WriteLine("User: " + GetUserFromMessage(entry.Message));
Console.WriteLine("Computer: " + GetComputerFromMessage(entry.Message));
Console.WriteLine();
}
}
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
finally
{
if (eventLog != null) eventLog.Close();
}
}
static string GetUserFromMessage(string message)
{
string pattern = "User Name: (\\S+)"; // 正則表達式匹配用戶名
var match = System.Text.RegularExpressions.Regex.Match(message, pattern);
return match.Success ? match.Groups[1].Value : "Unknown";
}
static string GetComputerFromMessage(string message)
{
string pattern = "Client Address: (\\S+)"; // 正則表達式匹配計算機名或IP地址
var match = System.Text.RegularExpressions.Regex.Match(message, pattern);
return match.Success ? match.Groups[1].Value : "Unknown";
}
}