it-swarm.dev

Executando um script em lote no desligamento do Windows

Existe alguma maneira, em Windows 7 Professional, de executar um script em lote (por exemplo, um arquivo .BAT) quando o usuário clica em "shutdown" (não é um arquivo em lote programado para desligar a máquina, apenas um que é executado apenas se o usuário clicar no "desligamento")?

Idealmente, esse script mostraria a janela Prompt de comando e ofereceria uma opção para cancelar o procedimento de desligamento.

Soluções que não exigem um utilitário de terceiros seriam preferíveis.

25
PNS

Você pode criar uma política de computador local no Windows. Consulte o TechNet em http://technet.Microsoft.com/pt-br/magazine/dd630947

  1. Executar gpedit.msc para abrir o Editor de políticas de grupo,
  2. Navegue até Configuração do Computador | Configurações do Windows | Scripts (inicialização/desligamento).

enter image description here

47
bahrep

Bem, é uma maneira fácil de fazer algumas alterações no registro: Eu tentei isso em 2008 r2 e 2016 servers.

As coisas precisam ser feitas:

  1. Crie um arquivo de texto " regedit.txt "
  2. Cole o seguinte código:
Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Shutdown] 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\Scripts\Shutdown]     

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Shutdown\0]  
"GPO-ID"="LocalGPO"    
"SOM-ID"="Local"    
"FileSysPath"="C:\\Windows\\System32\\GroupPolicy\\Machine"    
"DisplayName"="Local Group Policy"    
"GPOName"="Local Group Policy"    

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Shutdown\0\0]    
"Script"="terminate_script.bat"    
"Parameters"=""    
"ExecTime"=hex(b):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00    

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\Scripts\Shutdown\0]
"GPO-ID"="LocalGPO"    
"SOM-ID"="Local"    
"FileSysPath"="C:\\Windows\\System32\\GroupPolicy\\Machine"    
"DisplayName"="Local Group Policy"    
"GPOName"="Local Group Policy"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\Scripts\Shutdown\0\0]    
"Script"="terminate_script.bat"    
"Parameters"=""
"IsPowershell"=dword:00000000
"ExecTime"=hex(b):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  1. Salve este arquivo como regedit.reg extension

  2. Execute-o em qualquer linha de comando usando o comando abaixo:

    regedit.exe /s regedit.reg
    
4
asif

Eu encontrei este tópico enquanto procurava pelo script de execução para inicialização e desligamento do Windows 10. Essas respostas acima não funcionavam. Para mim, no windows 10, trabalhei quando coloquei scripts no agendador de tarefas. Como fazer isso: pressione a tecla window e escreva Task scheduler, abra-o, então à direita está o botão Add task .... Aqui você pode adicionar scripts. PS: Eu encontrei ação para o usuário de inicialização e logout, não há para o desligamento.

2
paka

Crie seu próprio script de desligamento - chamado Myshutdown.bat - e faça o que você quiser no script e, no final, chame shutdown/a. Em seguida, execute seu arquivo bat em vez do desligamento normal.

(Veja http://www.w7forums.com/threads/run-batch-file-on-shutdown.11860/ para mais informações.)

2
rss2363

Para o código acima funcionar; você precisa ter certeza de que os diretórios a seguir existem (o meu não). Basta adicionar o seguinte a um bastão e executá-lo:

mkdir C:\Windows\System32\GroupPolicy\Machine\Scripts\Startup
mkdir C:\Windows\System32\GroupPolicy\Machine\Scripts\Shutdown
mkdir C:\Windows\System32\GroupPolicy\User\Scripts\Startup
mkdir C:\Windows\System32\GroupPolicy\User\Scripts\Shutdown

É só que o GP precisa desses diretórios para existir:

Group Policy\Local Computer Policy\Windows Settings\Scripts (Startup/Shutdown)

para funcionar corretamente.

0
Dugb