Como agendar uma tarefa para executar ao fechar o Windows

86

Como você agenda uma tarefa no Windows XP para ser executada ao encerrar o Windows. De forma que desejo executar um programa de linha de comando simples que escrevi em c # toda vez que encerro o Windows. Não parece haver uma opção nas tarefas agendadas para realizar esta tarefa quando meu computador é desligado.

Crippeoblade
fonte

Respostas:

92

Execute gpedit.msc (políticas locais)

Configuração do computador -> Configurações do Windows -> Scripts -> Desligamento -> Propriedades -> Adicionar

Dan Williams
fonte
28
Se você quiser que um script em lote seja executado no logoff, descobri que fazer referência ao arquivo .bat diretamente não funcionava. No entanto, se eu usei C:\Windows\System32\cmd.execomo Nome do script e /C C:\path\to\batch\script.batcomo Parâmetros do script , funcionou.
Dan Stevens
6
AVISO: Os scipts de inicialização e desligamento da política de grupo não são executados, ao usar o fastboot (habilitado por padrão no Windows 8 e superior). Nesse caso, apenas a reinicialização ou o desligamento forçado (no prompt de comando) desligam realmente o computador. Em todos os outros casos (desligamento do menu iniciar), o kernel do computador hibernou e foi revivido na inicialização e os scipts de inicialização e desligamento do GPO são ignorados.
voji
@voji: Isso também se aplica ao Windows Server?
sampathsris
que tal reiniciar?
dangalg
estes parecem não funcionar no Server Core 1909
gordy
40

Além da resposta de Dan Williams, se você deseja adicionar um script de inicialização / desligamento , você precisa procurar as configurações do Windows em Configuração do computador . Se você deseja adicionar um script de logon / logoff , você precisa procurar as configurações do Windows em Configuração do usuário .

Então, para reiterar o que Dan disse com essas informações incluídas,

Para inicialização / desligamento:

  1. Execute gpedit.msc (políticas locais)
  2. Configuração do computador -> Configurações do Windows -> Scripts -> Inicialização ou desligamento -> Propriedades -> Adicionar

Para logon / logoff:

  1. Execute gpedit.msc (políticas locais)
  2. Configuração do usuário -> Configurações do Windows -> Scripts -> Logon ou Logoff -> Propriedades -> Adicionar

Fonte: http://technet.microsoft.com/en-us/library/cc739591(WS.10).aspx

Brett Pennings
fonte
2
Esta é a melhor resposta. Quando você abre o GPEditor, ele mostra dois nós conforme você descreve. Como ambos os nós têm uma opção de Configurações do Windows, a resposta aceita é menos clara do que a sua. Obrigado pela dica. Muito útil.
Seth Spearman
34

Para aqueles que preferem usar o Agendador de Tarefas, é possível agendar uma tarefa para ser executada após um reinício / desligamento ter sido iniciado, configurando a tarefa para ser executada após o evento 1074 no log do Sistema no Visualizador de Eventos ter sido registrado. No entanto, ele só é bom para tarefas muito curtas, que serão executadas enquanto o sistema estiver reiniciando / desligando, o que normalmente dura apenas alguns segundos.

  • No Agendador de Tarefas:

    Comece a tarefa: Em um evento
    Log de :
    Fonte do sistema : USER32
    EventID: 1074

  • No prompt de comando:

    schtasks / create / tn "taskname" / tr "task file" / sc onevent / ec system / mo * [system / eventid = 1074]

Comentário: a opção / ec está disponível no Windows Vista e superior. (obrigado @ t2d)

Observe que o status da tarefa pode ser:

A operação solicitada não foi realizada porque o usuário não se conectou à rede. O serviço especificado não existe. (0x800704DD)

No entanto, isso não significa que não foi executado.

Oz Edri
fonte
Obrigado pela dica! @Oz, isso funcionará na reinicialização e também no desligamento? O caso que estou tentando cobrir é que o Windows Update força uma reinicialização ...
Erik Eidt
Sim, pois este evento é registrado no reinício / desligamento.
Oz Edri
Observe que o argumento /ec systemnão existe, mas é chamado /ru system. consulte support.microsoft.com/en-us/kb/814596#bookmark-4
t2d
@ t2d, enquanto / ec existe em versões mais recentes, / ru se refere a uma coisa completamente diferente. EC permite que você especifique um canal de evento, enquanto ru permite que você execute como outro usuário. No entanto, obrigado por seu comentário. Vou editar minha postagem de acordo.
Oz Edri
1
Há um erro de digitação no modificador em seu exemplo. Deveria ser ... /mo *[system/eventid=1074], não.../mo *[system/evendid=1074]
testworks
4

Uma solução alternativa pode ser gravar um arquivo em lote simples para executar o programa e, em seguida, desligar o computador.

Você pode desligar a partir da linha de comando - então seu script pode ser bastante simples:

c:\directory\myProgram.exe
C:\WINDOWS\system32\shutdown.exe -s -f -t 0
Neil Neyman
fonte
4

Se você executar GPEdit.MSC, poderá ir para Configuração do computador -> Configurações do Windows -> Scripts e adicionar scripts de inicialização / desligamento. Podem ser arquivos em lote simples ou mesmo EXEs completos. Além disso, você pode ajustar as configurações do usuário para scripts de logon e logoff nesta mesma ferramenta. Esta ferramenta não está disponível no WIndows XP Home.

Kibee
fonte
1

O que eu sugiro fazer é criar um atalho para o arquivo .bat (por exemplo na sua área de trabalho) e quando você quiser desligar o computador (e executar o arquivo .bat), clique no atalho que você criou. Depois de fazer isso, edite o arquivo .bat e adicione esta linha de código ao final ou onde necessário:

c:\windows\system32\shutdown -s -f -t 00

O que isso faz é

  1. Executa o processo de desligamento
  2. Exibe um alerta
  3. Força todos os processos em execução a pararem
  4. Executa imediatamente
Matthew Smith
fonte
1

No Windows 10 Pro, o arquivo em lote pode ser registrado; a solução alternativa de registrar cmd.exe e especificar o arquivo bat como um parâmetro não é necessária. Acabei de fazer isso, registrando um script de desligamento e um script de inicialização (boot), e funcionou.

Wo'O Ideafarm
fonte
0

Tive também de habilitar "Especificar o tempo máximo de espera para scripts de política de grupo" e "Exibir instruções em scripts de desligamento à medida que são executados" para que funcione para mim, conforme explico aqui .

Roald
fonte