Você já tentou a configuração do Registro em HKEY_CURRENT_USER \ Painel de controle \ Desktop AutoEndTasks definido como 1? Se isso funcionar, você não precisará do script.
Temos um programa que, devido a vazamentos de memória em algumas telas, não sai corretamente quando o usuário sai. O problema é que isso bloqueia o procedimento normal de logoff - você seleciona o logout e alguns processos desaparecem, mas o usuário não efetua logoff.
Como não consigo consertar o programa, pensei em usar um script executado no logoff para eliminar o processo. Eu verifiquei o script mata o processo se eu executá-lo clicando duas vezes e adicionei o script para Configurações do Windows - > Scripts - > Faça o logoff da minha máquina em gpedit.
Infelizmente, parece que os scripts de logoff não são executados até que todos os processos tenham morrido, por isso nunca é executado.
Existe uma maneira de executar os scripts de logoff em um ponto anterior do processo? Ou há uma abordagem melhor para o assunto?
Você já tentou a configuração do Registro em HKEY_CURRENT_USER \ Painel de controle \ Desktop AutoEndTasks definido como 1? Se isso funcionar, você não precisará do script.
Você pode usar um programa para fazer logoff, como link , que executa os scripts antes do logoff.
adicione isso ao final do seu script
Set strComputer = "."
Set OpSysSet = GetObject("winmgmts:{(Shutdown)}//" & strComputer & "/root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true")
for each OpSys in OpSysSet
OpSys.Win32Shutdown 0
next
WScript.Quit(0)
faça com que eles usem esse script em vez do logoff normal.
No momento, não tenho certeza de como executá-lo antes que os processos sejam encerrados, mas continuarei a verificar se isso não funciona. também, eu não tive a chance de testar, mas essa deve ser a sintaxe certa para o comando. deixe-me saber se precisa de alguns ajustes.
Talvez tente o serviço UPHClean da Microsoft. Observe que isso só funcionará em 2000/2003 / XP link
É meio engraçado, eu acho, que o problema é que o usuário nunca faz logout quando sai, então você escreve um script que diz "mate esse processo no logout", mas o script não pode executado porque o usuário nunca faz logout. Você deseja que o script inicie quando o usuário clicar em "fazer logoff" e não quando o usuário terminar o logoff.
Não sou muito experiente com o VBScript ou mesmo com a API do Windows por trás do logout, mas sugiro um dos itens a seguir:
Descubra se há um evento / acionador separado que é acionado quando um usuário seleciona "Fazer logoff" e fazer com que seu script seja disparado nesse ponto. Se isso for mais fácil, então peço desculpas, mas parece ser a maneira mais óbvia de obter o que você realmente tinha em mente.
Descobrir se existe um processo que termina definitivamente após o usuário escolher Logoff ( explorer.exe
maybe?). Isso seria uma boa idéia se o processo que você está tentando matar não é crítico para o sistema ou para a sessão, (ou se o processo vincular seu script kill a um sistema IS crítico), como você não quer que o script mate o processo simplesmente porque o usuário fechou algo na bandeja.
Eu acho que a idéia de ter um log off script é muito boa, mas eu sugiro descobrir se você pode realmente substituir o botão "log off" no menu Iniciar com um botão que inicia este script. Eu sei que vi algo semelhante em laboratórios de informática. Mas se você confiar nos usuários para lembrar de clicar no botão "log off" personalizado na área de trabalho, e eles ainda conseguirem fazer o logoff normal, essa memória muscular só vai deixar todos frustrados.