Ich möchte wissen, welche Windows-API-Funktion (falls vorhanden) Informationen zur letzten Windows-Neustartquelle enthält. Es gibt drei mögliche Hauptursachen:
- Der Computer stürzte auf einem blauen Bildschirm ab
- Ein Benutzer oder ein Programm hat den Computer heruntergefahren / neu gestartet
- Eine verlorene Kraft
Je mehr Details ich bekommen kann, desto besser. Ich muss jedoch zumindest wissen, welcher Grund von den Hauptgründen stammt.
Ich muss Windows Vista und Windows 7 unterstützen.
Antworten:
Es scheint, dass es keine direkte API gibt, um diese Informationen zu erhalten. Stattdessen müssen wir das Windows-Ereignisprotokoll abrufen. Informationen zum Neustart des Systems finden Sie in der Ereignisanzeige / Windows-Protokolle / System. Hier sind die verschiedenen Informationen, die von den Ereignis-IDs bereitgestellt werden:
- 6005: Windows-Start
- 6006: Windows herunterfahren (richtig)
- 6008: Windows herunterfahren (unerwartet)
Ich verstehe den Unterschied zwischen Stromausfall und Systemabsturz noch nicht, aber es ist ein guter Anfang.
Antworten:
In diesem Artikel wird ausführlich erläutert, wie Sie den Grund für das letzte Starten / Herunterfahren ermitteln. In meinem Fall lag dies daran, dass Windows SCCM Updates übertrug, obwohl ich es lokal deaktiviert hatte. Besuchen Sie den Artikel für alle Details mit Bildern. Als Referenz sind hier die Schritte aufgeführt, die von der Website kopiert / eingefügt wurden:
quelle
Schauen Sie sich die Ereignisprotokoll-API an . Fall a) (Bluescreen, Benutzer hat das Netzkabel durchtrennt oder das System hängt) bewirkt, dass beim nächsten Neustart des Systems ein Hinweis ("System wurde nicht ordnungsgemäß heruntergefahren" oder ähnliches) im Ereignisprotokoll "System" belassen wird. Sie sollten in der Lage sein, programmgesteuert mit der oben genannten API darauf zuzugreifen (ehrlich gesagt habe ich es nie verwendet, aber es sollte funktionieren).
quelle