Uma opção rápida e suja seria usar PSSHUTDOWN no pacote PSTOOLS de Sysinternals da Microsofts .
Um dos switches disponíveis é -c
. Permite ao usuário parar a reinicialização pressionando o botão Cancelar .
-c Allows the shutdown to be aborted by the interactive user.
Você pode definir isso para fazer um loop a cada X minutos até que o usuário esteja pronto para ter sua máquina reinicializada.
Uma maneira de fazer isso seria escrever seu próprio VBscript. Isso poderia fornecer uma caixa de diálogo elegante oferecendo, por exemplo, Sim e Não . Se clicassem em Não, ele duraria por X minutos antes de perguntar novamente. Isso seria muito fácil de escrever.Edit: Bem, eu estava entediado, então eu fiz o roteiro para você. Aproveite.
option explicit
on error resume next
Dim strComputer, intRebootChoice
Dim objWMIService, objOperatingSystem
Dim colOperatingSystems
strComputer = "."
do while 1>0
intRebootChoice = msgbox("OI, you, need to reboot. Choose No to be asked again 1 hour",308,"Reboot incoming")
select case intRebootChoice
case 6
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate,(Shutdown)}!\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
ObjOperatingSystem.Reboot(1)
Next
case 7
wscript.sleep(3600000)
case else
'shenanigans'
end select
loop