2010-01-06 5 views
4

Есть ли какой-либо «идентификатор сеанса загрузки» или (надежный) «отметка времени загрузки»? Для установки мне нужно обнаружить, что запланированная перезагрузка действительно состоялась.Идентифицировать перезагрузку

Я думаю, я мог бы сделать манекен MoveFileEx() с MOVEFILE_DELAY_UNTIL_REBOOT, но я действительно надеялся на что-то проще.

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

(Windows XP, Vista, 7)

ответ

3

Очевидно, что Windows имеет эквивалент «времени безотказной работы». Дополнительная информация: http://support.microsoft.com/kb/555737

Как я понимаю, это должно сказать вам, как давно система загружалась. Будет ли эта информация решает вашу проблему?

+0

Это хорошее начало - я нашел обновленный образец (еще не пробовал) здесь: http://www.codeproject.com/Messages/2109755/Re-Not-working-on-Vista-Any-ideas- modified.aspx – peterchen

4

Для таких вещей, как WMI (Windows Management Instrumentation), часто является хорошим отправным местом. Я знаю, что вы можете получить текущее время безотказной работы прямо через него, что может позволить вам определить, перезагрузили ли компьютер.

Вот блог с некоторыми примерами кода, а также: http://blogs.technet.com/heyscriptingguy/archive/2004/09/07/how-can-i-tell-if-a-server-has-rebooted.aspx

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

1

Вы можете выполнить поиск в журнале событий системы для события 6009 из источника EventLog - это первое событие, записанное после каждой перезагрузки.

1

Я думаю, что лучший ответ уже был дан здесь: Find out if computer rebooted since the last time my program ran?

Это, кажется, самый простой способ. Используйте GlobalFindAtom(), чтобы узнать, существует ли он и создать его, с GlobalAddAtom(), если это не так. Это будет продолжаться после выполнения вашей программы. Если ваше приложение снова запускается и видит, что атом существует, тогда это не первый запуск с момента перезагрузки.

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

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