web-dev-qa-db-fra.com

Comment puis-je obtenir le dernier motif de redémarrage de Windows

J'aimerais savoir quelle est la fonction API Windows (s'il en existe une) qui fournit des informations sur la dernière source de redémarrage de Windows. Il y a trois causes principales possibles:

  1. L'ordinateur s'est écrasé sur un écran bleu
  2. Un utilisateur ou un programme éteint/redémarre l'ordinateur
  3. Une puissance perdue

Plus je peux obtenir de détails, mieux c'est. Cependant, j'ai besoin de savoir au moins quelle raison en est l'une des principales.

Je dois prendre en charge Windows Vista et Windows 7.

Répondre:

Il semble qu'il n'y ait pas d'API directe pour obtenir cette information. Au lieu de cela, nous devons collecter le journal des événements Windows. Les informations de 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 ne comprends pas encore la différence entre perte de puissance et panne du système, mais c'est un bon début.

53
Frederic

Jetez un coup d'œil à la API du journal des événements . Le cas a) (écran bleu, coupure de l'accord de puissance ou blocage du système) entraîne le maintien d'une note ("le système ne s'est pas éteint correctement") dans le journal des événements "Système" lors du prochain redémarrage du système. Vous devriez pouvoir y accéder par programme en utilisant l'API ci-dessus (honnêtement, je ne l'ai jamais utilisée mais cela devrait fonctionner).

17
Alexander Gessler

Cet article explique en détail comment trouver la raison du dernier démarrage/arrêt. Dans mon cas, cela était dû à Windows SCCM poussant des mises à jour alors que 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 à partir de la site Internet:

  1. Appuie sur le Windows + R clés pour ouvrir la boîte de dialogue Exécuter , tapez eventvwr.msc et appuyez sur Enter.

  2. Si le contrôle de compte d'utilisateur vous y invite, cliquez/tapez sur Oui (Windows 7/8) ou sur Continuer (Vista).

  3. Dans le volet gauche de Observateur d'événements , double-cliquez/tapez sur Journaux Windows pour le développer, cliquez sur Système pour le sélectionner, puis cliquez avec le bouton droit sur Système , et cliquez/tapez sur Filtrer le journal actuel .

  4. Effectuez les étapes 5 ou 6 ci-dessous pour définir les événements d'arrêt souhaités.

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

    A) Dans sources d'événements , cliquez/tapez sur la flèche déroulante et cochez la case USER32 boîte.

    B) Dans le champ Tous les ID d’événement , tapez 1074 _, puis cliquez/tapez sur [~ # ~] ok [~ # ~] .

    C) Ceci vous donnera une liste de mise hors tension (arrêt) et de redémarrage, Type d'arrêt, 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 mise hors tension en tant que type d'arrêt. Vous remarquerez la date et l'heure, ainsi que le nom de l'utilisateur responsable de la mise hors tension de l'ordinateur pour chaque événement d'extinction indiqué.

    E) Allez à l'étape 7.

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

    A) Dans le champ Tous les ID d’événement , tapez 6008 _, puis cliquez/tapez sur [~ # ~] ok [~ # ~] .

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

43
Mahesh Neelakanta