105 votes

Comment puis-je obtenir la dernière raison du redémarrage de Windows

Je voudrais savoir quelle est la fonction de l'API Windows (si elle existe) qui fournit des informations sur la dernière source de redémarrage de Windows. Il existe trois causes principales possibles :

  1. L'ordinateur a planté sur un écran bleu
  2. Un utilisateur ou un programme a arrêté/redémarré l'ordinateur
  3. Une perte de courant

Plus je peux obtenir de détails, mieux c'est. Cependant, j'ai besoin de savoir au moins pour quelle raison c'est parmi les principales.

Je dois prendre en charge Windows Vista et Windows 7.

Réponse :

Il semble qu'il n'existe pas d'API directe pour obtenir ces informations. Au lieu de cela, nous devons consulter le Journal des événements Windows. Les informations sur le redémarrage du système se trouvent dans Observateur d'événements/Journaux Windows/Système. Voici les différentes informations fournies par les identifiants d'événement :

  • 6005 : Démarrage de Windows
  • 6006 : Arrêt de Windows (correctement)
  • 6008 : Arrêt de Windows (de manière inattendue)

Je n'ai pas encore compris la différence entre la perte de courant et le crash système, mais c'est un bon début.

127voto

Mahesh Neelakanta Points 31

Cet article explique en détail comment trouver la raison du dernier démarrage/arrêt. Dans mon cas, il s'agissait de mises à jour de Windows SCCM même si je l'avais désactivé localement. Visitez l'article pour plus de détails avec des images. Pour référence, voici les étapes copiées/collées du site web :

  1. Appuyez sur les touches Windows + R pour ouvrir la boîte de dialogue Exécuter, tapez eventvwr.msc, et appuyez sur Entrée.

  2. Si vous êtes invité par le contrôle de compte d'utilisateur, cliquez/touchez sur Oui (Windows 7/8) ou Continuer (Vista).

  3. Dans le volet de gauche de l'Observateur d'événements, double-cliquez/touchez sur Journaux Windows pour l'élargir, cliquez sur Système pour le sélectionner, puis faites un clic droit sur Système et cliquez/touchez sur Filtrer le journal actuel.

  4. Faites l'étape 5 ou 6 ci-dessous pour les événements d'arrêt que vous aimeriez voir.

  5. Pour voir les dates et heures de tous les arrêts d'utilisateur de l'ordinateur

    A) Dans Sources de l'événement, cliquez/touchez sur la flèche déroulante et cochez la case USER32.

    B) Dans le champ Tous les identifiants d'événements, tapez 1074, puis cliquez/touchez sur OK.

    C) Cela vous donnera une liste des événements de mise hors tension (arrêt) et de redémarrage en haut du volet central dans l'Observateur d'événements.

    D) Vous pouvez faire défiler ces événements répertoriés pour trouver les événements avec une mise hors tension en tant que type d'arrêt. Vous remarquerez la date et l'heure, ainsi que l'utilisateur responsable de la mise hors tension de l'ordinateur par événement de mise hors tension.

    E) Passez à l'étape 7.

  6. Pour voir les dates et heures de tous les arrêts inattendus de l'ordinateur

    A. Dans le champ Tous les identifiants d'événements, tapez 6008, puis cliquez/touchez sur OK.

    B. Cela vous donnera une liste des événements d'arrêt inattendus en haut du volet central dans l'Observateur d'événements. Vous pouvez faire défiler ces événements répertoriés pour voir la date et l'heure de chacun.

  7. Lorsque vous avez terminé, vous pouvez fermer l'Observateur d'événements.


Autres identifiants d'événement utiles (source)

ID

Description

41

Le système a redémarré sans s'arrêter correctement au préalable.

1074

Le système a été arrêté correctement par un utilisateur ou un processus.

1076

Se produit après l'identifiant d'événement 6008 et signifie que le premier utilisateur avec des privilèges d'arrêt s'est connecté au serveur après un redémarrage ou un arrêt inattendu et a spécifié la cause.

6005

Le service Journal d'événements a été démarré. Indique le démarrage du système.

6006

Le service Journal d'événements a été arrêté. Indique l'arrêt correct du système.

6008

L'arrêt précédent du système était inattendu.

6009

La version du système d'exploitation détectée au démarrage du système.

6013

Le temps de fonctionnement du système en secondes.

19voto

Alexander Gessler Points 26717

Jetez un œil à Event Log API. Le cas a) (écran bleu, utilisateur a débranché le cordon d'alimentation ou système bloqué) entraîne une note ('le système n'a pas été arrêté correctement' ou quelque chose comme ça) laissée dans le journal d'événements 'Système' la prochaine fois que le système redémarre correctement. Vous devriez pouvoir y accéder de manière programmable en utilisant l'API ci-dessus (honnêtement, je ne l'ai jamais utilisé mais cela devrait fonctionner).

18voto

Thierry Brémard Points 103

Vous pouvez automatiser votre investigation des 5 derniers jours avec ce script powershell :

$aujourd'hui = Get-Date
$jourDebut = $aujourd'hui.AddDays(-5)
$eventIds=(6005,6006,6008,6009,1074,1076,12,13,43,109)
$systEvents=Get-WinEvent -LogName System 
$rebootEvents=$systEvents| Where-Object {$_.TimeCreated -gt $jourDebut} | Where-Object {$_.Id -in $eventIds}  
format-table TimeCreated,Id,Message -AutoSize -wrap -InputObject $rebootEvents

enter image description here

2voto

Mou Points 81

Il existe un moyen simple en utilisant powershell.

powershell "Get-WinEvent -FilterHashtable @{logname = 'System'; id = 1074, 6005, 6006, 6008} -MaxEvents 6 | Format-Table -wrap"

vous pouvez également définir le nombre maximal d'événements à afficher.

-1voto

twodayslate Points 1228

Vous pouvez consulter le journal des événements qui pourrait vous aider à dépanner votre problème

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X