Как я могу получить причину последней перезагрузки Windows

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

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

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

I необходимо поддерживать Windows Vista и Windows 7.

ответ:

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

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

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

2 ответов


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


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

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

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

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

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

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

    A) нажмите / нажмите на стрелку раскрывающегося списка справа от источников событий, установите флажок USER32 и нажмите/коснитесь в поле.

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

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

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

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

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

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

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

  7. когда закончите, вы можете закрыть просмотр событий.