1 (изменено: netrezv, 2011-09-09 12:35:38)

Тема: VBS: Определить статус обязательного перезапуска Windows

Увы посеял пример, нагуглить не вышло. Подскажите как определить этот статус?
Для примера, после переименования в свойствах системы - имя компьютера внизу появляется предупреждение "Изменения вступят в силу после перезапуска компьютера"
Проводил сравнение слепков реестра до и после изменения статуса, разница только в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceCurrent в дефолтовом параметре DWORD, видимо не в этом месте ставится метка статуса. На других системах этот параметр  всегда разный.

2

Re: VBS: Определить статус обязательного перезапуска Windows

netrezv, предложение перезагрузки следует в том случае, если затрагиваются основные параметры системы, либо требуется замена файлов/библиотек, занятых операционной системой.

Прочтите следующее:
A system restart from previous installation or update is pending Restart your computer and run setup to continue.
PendingFileRenameOperations
Описание новых возможностей установочного пакета обновлений программного обеспечения Windows

Программы PendMoves и MoveFile
Use MoveFile and PendMoves to Move a File That is Always in Use
REG: CurrentControlSet Entries PART 2: SessionManager
Не завершена перезагрузка с момента предыдущей установки

3

Re: VBS: Определить статус обязательного перезапуска Windows

alexii Спасибо, прочел, но едва ли что-то можно из этого использовать. Из прочитанного следует, что в разных случаях система использует различные критерии определения перезапуска. В моем варианте это переименование компьютера.  Найду старый пример, обязательно выложу сюда.

4

Re: VBS: Определить статус обязательного перезапуска Windows

Выяснил что, система мониторит HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters, "NV Hostname", если значение меняется где-то еще устанавливается факт обязательного перезапуска.

5

Re: VBS: Определить статус обязательного перезапуска Windows

netrezv, насколько я понимаю, одного однозначного значения в реестре нет: How to detect if a reboot is needed.

Вот, например, для обновлений (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired):

With WScript.CreateObject("Microsoft.Update.SystemInfo")
    WScript.Echo .RebootRequired
End With

Отслеживание по переименованию компьютера посмотрите здесь: Checking for pending reboots with PowerShell | TechMumboJumblog. Переделать на WSH будет несложно.