Eu escrevi um pequeno programa que faz isso. Você precisará ter o .NET 3.5, mas o Windows 7 vem com isso de qualquer maneira.
Abre uma janela quando iniciada com um temporizador e é encerrada com o temporizador concluído. Há uma opção para adiar por um determinado número de minutos e uma opção para abortar.
Se iniciado sem argumentos, ele espera 5 minutos antes do desligamento (se você adiar, ele iniciará esse atraso novamente quando o período adiado estiver ativo). Se for lançado com um número, isso levará como o número de minutos a aguardar quando iniciado ou quando o período adiado estiver concluído.
Padrão 5 minutos:
IdleShutdown.exe
10 minutos:
IdleShutdown.exe 10
Meio minuto:
IdleShutdown.exe 0.5
Você disse que queria um programa que:
at a fixed time, will automatically popup a shutdown timer, that can be cancelled if an user is actively using the computer, but will shutdown automatically in 5 minutes
Also, if cancelled, it should popup again after like 15-30 minutes.
Isso faz tudo isso, exceto a partida em um horário fixo. Você pode usar o Agendador de Tarefas, como muitos outros responderam. Eu não interpreto 'em um horário fixo' como 'quando o computador está ocioso', então tudo é baseado em temporizador.
Ele executa o comando shutdown /s /t 0
para iniciar o desligamento. Uma palavra de aviso - o /t 0
significa que é um encerramento forçado , o que significa que ele não espera para sempre que os programas sejam fechados e irá encerrar processos se demorar muito . Uma opção mais segura pode ser a de hibernar e, se você quiser, é muito fácil mudar - basta deixar um comentário. Ou até mesmo faça você mesmo; todo o código-fonte está no repositório do GitHub.