Как получить последнюю причину перезагрузки Windows
Я хотел бы знать, что такое функция Windows API (если она существует), которая предоставляет информацию о последнем источнике перезагрузки Windows. Существуют три основные причины:
- Компьютер разбился на синем экране
- Пользователь или программа выключения/перезагрузки компьютера
- Потерянная мощность
Чем больше деталей, тем лучше. Тем не менее, мне нужно знать, по крайней мере, какая причина, из основных.
Мне нужно поддерживать Windows Vista и Windows 7.
Ответ:
Кажется, что нет прямого API для получения этой информации. Вместо этого нам нужно собрать журнал событий Windows. Информация о перезагрузке системы находится в окне просмотра событий /Windows Logs/System. Вот информация, предоставленная идентификаторами событий:
- 6005: запуск Windows
- 6006: выключение Windows (правильно)
- 6008: выключение Windows (неожиданно)
Я еще не понял разницу между потерянной мощностью и сбоем системы, но это хороший старт.
Ответы
Ответ 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.
Ответ 3
Вы можете просмотреть Журнал событий, который может помочь вам устранить неполадки ваша проблема