2012-03-10 2 views
7

Несколько приложений на моем компьютере выполняли обнаружение, перезагрузка была выполнена Windows Update или нет. Это можно наблюдать из-за перезапуска после автоматической перезагрузки Windows Update.Определите, была ли перезагрузка Windows из-за обновлений Windows.

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

  • Google Chrome
  • Microsoft Visual Studio
  • Microsoft Paint

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

(Мой компьютер на самом деле проснулся от состояния ожидания автоматически, и перезагрузил себя в то время как УСТАНОВКА ОБЪЕКТИВА обновления Слишком плохо это не пошел обратно в режим ожидания после выполнения этого.).

Мой вопрос: Как я могу программно обнаружить это вроде перезагрузки? Кажется, он надежно обнаруживается перед перезагрузкой.

Вопрос How can I get the Windows last reboot reason может показаться дубликат, но ни один ответ ничего не сказал об обновлениях.

Я код на C#, поэтому ответ на C# был бы полезным, хотя я мог бы, например, прочитать C и C++.

+0

Вы также можете попросить у ServerFault. Я видел несколько вопросов о перезагрузке Windows. Попробуйте http://serverfault.com/search?q=windows+reboot – DOK

+0

Я хочу программно (используя язык программирования) обнаружить перезагрузку ... Просить у ServerFault, вероятно, не так, то – sinni800

+0

Я думаю, что они могли бы предоставить некоторую информацию что вы можете использовать для написания кода.Как вы говорите, вам «просто нужно знать, где искать и для какого состояния». Если вы действительно ищете ответ, я бы не стал так быстро отклонять потенциально полезный ответ. – DOK

ответ

4

См Application Restart:

Приложение может использовать Восстановление приложений и Restart (ARR), чтобы сохранить данные и информацию о состоянии до выхода из приложения за необработанное исключение или когда приложение перестает отвечать на запросы

и:

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

Приложения не обнаруживают причину перезапуска после того, как факт - они были заархивированы для использования этого API. Для этого нет (насколько мне известно) управляемого API.


В нескольких кликах находится Saving data and application state when application is being closed due to a software update. Опять же, никакого управляемого API.

0

Обычно, когда Windows перезагружается, он выполняет перезапуск с использованием shutdown.exe и флага/g, который сохраняет состояние всех зарегистрированных запущенных программ перед перезагрузкой. Вы хотите зарегистрировать свое приложение для перезагрузки. Существует good sample с документацией для этого по MSDN. Он доступен на C# и C++.

Смежные вопросы