Digamos que eu use "shutdown -s -f -t 13600" para iniciar um desligamento programado.
No Windows XP, eu sempre via uma caixa de diálogo alertando sobre o desligamento iminente.
No entanto, no Windows 7, ele mostra um pop-up na bandeja do sistema, que desaparece após alguns segundos.
Como faço para consultar ou habilitar uma caixa de diálogo como o Windows XP para saber quando o desligamento acontecerá?
Responder1
Eu encontrei uma maneira.
Se em vez de usarshutdown -s -f -t 13600
você usashutdown -s -f -t 13600 -c "13600"
A -c
opção adiciona um comentário ao evento de desligamento registrado porVisualizador de eventos do Windows
Seu comentário "13600" ficará visível no Visualizador de Eventos conforme visto no oval vermelho:
Para ver esta visualização você mesmo: digite Event Viewer no menu iniciar e vá para Logs do Windows -> Sistemae você verá uma lista de eventos do sistema.
Qualquer evento comID do eventode1074será um desligamento atrasado.
Então o que queremos é um código que pegue o último 1074
evento, procure o valor no comentário do evento e adicione esse valor (em segundos) ao horário em que o evento foi criado, dando assim o tempo de desligamento.
Criei uma função para Windows PowerShell (vem com o Windows 7) que faz isso:
function nextShutdownTime
{
$events = Get-WinEvent -FilterHashtable @{logname="system"; id=1074}
$event = $events[0]
$eventXML = [xml]$event.ToXml()
return $event.TimeCreated.addSeconds([int]$eventXML.Event.EventData.Data[5])
}
Basta adicioná-lo ao seu perfil do PowerShell e no PowerShell apenas executar o comando nextShutdownTime
para ver o tempo de desligamento esperado.
Responder2
A maneira mais fácil de descobrir se um desligamento está em andamento é simplesmente agendar outro desligamento. Dê um tempo limite de pelo menos 200 segundos, só para ter certeza. Você receberá um erro informando que já há um desligamento em andamento ou iniciará um desligamento cronometrado que pode ser abortado digitando shutdown /a.
Então você digita
shutdown /r /t 600
Agora você ou consegue
C:\Users\Administrator>shutdown /r /t 600
A system shutdown has already been scheduled.(1190)
ou agendará um novo desligamento.
Se você quiser apenas ter certeza de que nenhum desligamento está programado, você pode simplesmente tentar abortar. Ele será abortado ou indicará que nenhum desligamento foi agendado.
C:\Users\Leon>shutdown /a
Cannot abort a system shutdown. There is no shutdown in progress (1116)
Responder3
Passei cerca de uma hora tentando fazer isso funcionar exatamente como você queria de alguma forma. Eu experimentei, procurei e procurei, mas não consegui ficar perfeito, mas consegui encontrar alguma coisa.
Tentei todas as combinações de desligamento (opções -i -c -d), mas nada.
Também experimentei a interface GUI após a opção -i.
Também tentei alterar a exibição do tempo do balão para que ele ficasse mais tempo na bandeja do sistema, mas mesmo assim, até isso desaparece.
O mais próximo que chego com este comando de exemplo:shutdown -i -r -t 300
Acho que o fato é que eles simplesmente mudaram a forma como funciona, e não acho que haja uma maneira de contornar isso 100%, mas agora -i
abre uma caixa de diálogo, enquanto antes trazia a tela que você queria. Quando usei o -i
no Windows 7, tive que preencher a caixa e aqui estava o resultado:
Aí eu bati Entere consegui isso:
Eu testei e parece que o valor máximo que você pode colocar no "Display warning for X Seconds" é de apenas 600, apesar de você poder inserir até 999 (programação muito estranha).
Responder4
Como faço para consultar ou habilitar uma caixa de diálogo como o Windows XP para saber quando o desligamento acontecerá?
O programa de desligamento nativo do Windows 7 não fornece uma caixa de diálogo de contagem regressiva (ou um botão de cancelamento) como faziam as versões anteriores do Windows.
Se precisar agendar um desligamento e fornecer um botão de contagem regressiva e cancelamento, você pode usar um aplicativo HTA, que pode conter texto, imagens, contagem regressiva e botão cancelar.
Aqui está um exemplo: Script HTA - Script de desligamento e mensagem de aviso
A fonte é meu blog pessoal.