Подтвердить что ты не робот

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

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

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

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

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

Ответ:

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

  • В левой панели Event Viewer дважды щелкните/коснитесь Windows Logs, чтобы развернуть его, нажмите "Система", чтобы выбрать его, затем щелкните правой кнопкой мыши System и нажмите/коснитесь текущего журнала фильтра.

  • Сделайте какие-либо шаги 5 или 6 ниже для событий остановки, которые вы хотели бы видеть.

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

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

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

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

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

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

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

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

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

  • По завершении вы можете закрыть Event Viewer.