Как я могу получить причину последней перезагрузки Windows - PullRequest
51 голосов
/ 26 января 2010

Я хотел бы знать, что такое функция Windows API (если она существует), которая предоставляет информацию о последнем источнике перезагрузки Windows. Есть три основных возможных причины:

  1. Компьютер разбился на синем экране
  2. Пользователь или программа выключили / перезагрузили компьютер
  3. Потеря мощности

Чем больше деталей я получу, тем лучше. Однако мне нужно знать, по крайней мере, по какой причине это из основных.

Мне нужно поддерживать Windows Vista и Windows 7.

Ответ:

Кажется, что нет прямого API для получения этой информации. Вместо этого мы должны собрать журнал событий Windows. Информация о перезагрузке системы находится в Просмотр событий / Журналы Windows / Система. Вот различная информация, предоставленная идентификаторами события:

  • 6005: запуск Windows
  • 6006: завершение работы Windows (правильно)
  • 6008: завершение работы Windows (неожиданно)

У меня пока нет разницы между отключением питания и сбоем системы, но это хорошее начало.

Ответы [ 2 ]

42 голосов
/ 13 июня 2014

В этой статье подробно объясняется, как найти причину последнего запуска / завершения работы. В моем случае это было связано с тем, что Windows SCCM отправляла обновления, хотя я отключил их локально. Посетите статью для более подробной информации с фотографиями. Для справки вот шаги, скопированные / вставленные с сайта:

  1. Нажмите клавиши Windows + R , чтобы открыть диалоговое окно Выполнить , введите eventvwr.msc и нажмите Enter .

  2. Если запрос от UAC, нажмите / нажмите Да (Windows 7/8) или Продолжить (Vista).

  3. На левой панели Event Viewer дважды щелкните / нажмите Журналы Windows , чтобы развернуть его, нажмите Система , чтобы выбрать его, затем щелкните правой кнопкой мыши на Система и нажмите / нажмите на Фильтр текущего журнала .

  4. Выполните шаги 5 или 6 ниже, чтобы узнать, какие события отключения вы хотели бы видеть.

  5. Просмотр даты и времени всех пользовательских отключений компьютера

    A) В Источники событий , нажмите / нажмите на стрелку вниз и установите флажок USER32.

    B) В поле Все события введите 1074, затем нажмите / нажмите OK .

    C) Это даст вам список выключения (выключения) и перезапуска Завершение работы Тип событий в верхней части средней панели в средстве просмотра событий.

    D) Вы можете прокрутить эти перечисленные события, чтобы найти события с отключением питания в качестве типа выключения. Вы заметите дату и время и какой пользователь отвечал за выключение компьютера в Событие отключения питания указано.

    E) Перейти к шагу 7.

  6. Чтобы увидеть даты и время всех неожиданных выключений компьютера

    A) В поле Все события введите 6008, затем нажмите / нажмите OK .

    B) Это даст вам список неожиданных событий отключения на верхняя часть средней панели в Event Viewer . Вы можете пролистать эти список событий, чтобы увидеть дату и время каждого из них.

17 голосов
/ 26 января 2010

Взгляните на API журнала событий . Случай a) (синий экран, пользователь отключил аккорд питания или зависание системы) приводит к тому, что примечание («система не была корректно выключена» или что-то в этом роде) остается в журнале событий системы при следующей перезагрузке системы. Вы должны иметь возможность получить к нему программный доступ с помощью вышеуказанного API (честно говоря, я никогда не использовал его, но он должен работать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...