C# 控制臺(tái) 查詢Win日志統(tǒng)計(jì)開關(guān)機(jī)時(shí)間
最近辦公室天天跳閘…
我的電腦設(shè)置了來電自啟
通過查詢Win日志的開關(guān)機(jī)時(shí)間,來判斷下跳閘和來電時(shí)間…
正常來說
Win 開機(jī)會(huì)觸發(fā) 6005 事件
關(guān)機(jī)會(huì)觸發(fā) 6006
如果異常斷電,會(huì)觸發(fā) 6008
直接上代碼:
static void Main(string[] args) { EventLog log = new EventLog("System"); DateTime since = DateTime.Now.AddDays(-14); // 最近兩周 var events = log.Entries .Cast<EventLogEntry>() .Where(e => (e.EventID == 6005 || // 開機(jī) e.EventID == 6006 || // 正常關(guān)機(jī) e.EventID == 6008 || // 異常關(guān)機(jī) e.EventID == 1074) // 用戶觸發(fā)關(guān)機(jī) && e.TimeGenerated >= since ) .OrderBy(e => e.TimeGenerated) // 按時(shí)間順序 .ToList(); Console.WriteLine("===== 最近兩周的開關(guān)機(jī)記錄 ====="); // 統(tǒng)計(jì)變量 int bootCount = 0, normalShutdown = 0, abnormalShutdown = 0, userShutdown = 0; foreach (var ev in events) { string type; switch (ev.EventID) { case 6005: type = "開機(jī) (系統(tǒng)啟動(dòng) - EventID 6005)"; bootCount++; break; case 6006: type = "關(guān)機(jī) (正常關(guān)機(jī) - EventID 6006)"; normalShutdown++; break; case 6008: type = "異常關(guān)機(jī) (異常關(guān)機(jī) - EventID 6008)"; abnormalShutdown++; break; case 1074: type = "關(guān)機(jī) (用戶/程序觸發(fā) - EventID 1074)"; userShutdown++; break; default: type = "其他事件"; break; } Console.WriteLine($"{ev.TimeGenerated:yyyy-MM-dd HH:mm:ss} {type}"); } Console.WriteLine("================================="); Console.WriteLine("===== 匯總統(tǒng)計(jì)(最近兩周) ====="); Console.WriteLine($"開機(jī)次數(shù):{bootCount}"); Console.WriteLine($"正常關(guān)機(jī)次數(shù):{normalShutdown}"); Console.WriteLine($"異常關(guān)機(jī)次數(shù):{abnormalShutdown}"); Console.WriteLine($"用戶觸發(fā)關(guān)機(jī)次數(shù):{userShutdown}"); // 平均每天開機(jī)次數(shù) double avgBootPerDay = bootCount / 14.0; Console.WriteLine($"平均每天開機(jī)次數(shù):{avgBootPerDay:F2}"); Console.WriteLine("================================="); Console.WriteLine("按任意鍵退出..."); Console.ReadKey(); }
作者:sun8134
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。

浙公網(wǎng)安備 33010602011771號(hào)