2016-07-22 92 views
2

我想從事件查看器(Windows 10)中打印喚醒源。如何打印電腦喚醒源?

有沒有一種方法,我可以訪問事件查看器而>系統日誌,請搜索:

Source: Microsoft-Windows-Power-Troubleshooter最新的事件,解析事件消息並打印喚醒源?

這裏是事件日誌的一個示例:

Index    : 2841 
EntryType   : Information 
InstanceId   : 1 
Message   : The system has resumed from sleep. 

        Sleep Time: 2010-10-01T19:19:37.239789600Z 
        Wake Time: 2010-10-01T21:28:48.921200800Z 

        Wake Source: 4HID Keyboard Device 
Category   : (0) 
CategoryNumber  : 0 
Source    : Microsoft-Windows-Power-Troubleshooter 
+0

@ Christian.K我認爲重複是不正確的,因爲問題指出,建議如何分析喚醒源,我的問題集中在解析事件查看器的系統日誌和找到喚醒源。儘管答案是一樣的 - 人們可能會更快地使用我的問題。 – DeJaVo

+0

但是我認爲_itself_這個問題是相同的(儘管你的答案/解決方案)更詳細。也許這將是一個適當的解決方案來編輯​​[接受的答案](http://stackoverflow.com/a/28148903/21567)用您的代碼實際解析消息。 –

回答

0

有關的解決方案的人的關注 - 我已經成功執行以下操作:

 /// <summary> 
     /// Get Last Wake Event Entry 
     /// </summary> 
     /// <param name="wakeMessage"></param> 
     /// <returns></returns> 
     private static EventLogEntry GetLastWakeEventEntry(out string[] wakeMessage) 
     { 
      wakeMessage = null; 
      EventLogEntry wakeEntry = null; 
      //Open system event log of current user 
      var eventLog = new EventLog("System", "."); 
      //Get all event log entries 
      var entries = eventLog.Entries; 
      //Start from the latest event message until finding the wake event log 
      for (int i = entries.Count - 1; i >= 0; i--) 
      { 
       if (entries[i].Source == "Microsoft-Windows-Power-Troubleshooter" && entries[i].InstanceId == 1) 
       { 
        wakeEntry = entries[i]; 
        wakeMessage = Regex.Split(entries[i].Message, @"([\r\n])"); 
        break; 
       } 
      } 
      return wakeEntry; 
     } 

鑑於過去之後進入和喚醒消息,我們可以解析消息來源(通常是最後一條消息行)並顯示給定喚醒條目的相關信息。

希望它有幫助。