2015-08-13 4 views
0

В настоящее время я пишу командный файл, который, помимо прочего, выполняет автоматическую установку .net, IIS, MSSQL, MSSQL SP2, flash, устанавливает какое-то проприетарное программное обеспечение и, наконец, производит массу изменений среды на сервере Windows 2008 или платформу 2012 года. Все это делается одним выстрелом.Как отключить перезагрузку Windows, независимо от состояния установки?

Сценарий работает потрясающе, за исключением ситуации: если Windows находится в частично обновленном состоянии, возможно, потребуется перезагрузка, .net или IIS заставит меня перезагрузиться независимо от того, установлен ли переключатель /norestart DISM или нет.

Есть ли способ, в рамках пакетного файла, отключить любую необходимость перезагрузки до такой степени, что установка DISM и/или SQL не спросит или не потребует его? Или, что менее выгодно, средство для определения из командного файла, если требуется перезагрузка? Мне это не нравится, но я могу сделать чек и при необходимости установить shutdown -r.

Благодарим за помощь.

ответ

1

Различные программы обнаруживают необходимость перезапуска ОС по-разному, одним из самых популярных методов является проверка HKLM\SYSTEM\CurrentControlSet\Control\Session Manager ->PendingFileRenameOperations значение.

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager" /v PendingFileRenameOperations >nul 
if errorlevel 1 (
    echo OK 
    ....proceed with stuff 
) else (
    echo Restart is required 
    pause 
    exit 
) 

Хотя вы можете временно удалить это значение после сброса его содержимого в файл Изотерм, а затем повторный импорт, но это весьма вероятно, чтобы сломать систему, если не сочетать старое содержимое с недавно добавил один в исторической последовательности (старые, новые, поддерживающие версии и прочее), для чего потребуется код vbs или powershell или какая-то полезность.

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