2016-07-22 13 views
2

Ich möchte Wake-Quelle aus der Ereignisanzeige (Windows 10) drucken.Wie Computer Wake Source drucken?

Gibt es eine Weise, die ich das Ereignis viewer-> Systemprotokoll zugreifen können, suchen Sie nach:

Source: Microsoft-Windows-Power-Troubleshooter letzte Ereignis, analysieren die Ereignismeldung und drucken Sie die wake Quelle?

Hier ist ein Beispiel für Ereignisprotokoll:

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 Ich denke, das Duplikat ist falsch, da die Frage wies darauf hin, wie die Wake-Quelle zu analysieren, wo meine Frage auf Parsing der Ereignisanzeige für Systemprotokoll und finden die Wake-Quelle konzentrieren. obwohl die Antwort die gleiche ist - die Leute könnten es viel schneller finden, wenn sie meine Frage verwenden. – DeJaVo

+0

Allerdings denke ich, die Frage _self_ ist die gleiche (wenn auch Ihre Antwort/Lösung) ist detaillierter. Vielleicht wäre es eine angemessene Lösung, die [akzeptierte Antwort] (http://stackoverflow.com/a/28148903/21567) zu bearbeiten, indem Sie sie mit Ihrem Code erweitern, um die Nachricht tatsächlich zu analysieren. –

Antwort

0

Für alle Sorge um eine Lösung - ich habe folgende gelungen tun:

 /// <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; 
     } 

In Anbetracht der letzte wake Eintrag und Wake-Nachricht, Man kann die Nachricht für die Wake-Quelle parsen (normalerweise die letzte Nachrichtenzeile) und die zugehörigen Informationen anzeigen, wenn der Wake-Eintrag eingegeben wird.

Ich hoffe, es hilft.