O script para encerrar o processo no logoff não é executado até que o processo esteja morto?

O script para encerrar o processo no logoff não é executado até que o processo esteja morto?

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 encerrar o processo. Verifiquei que o script mata o processo se eu executá-lo clicando duas vezes e adicionei o script às Configurações do Windows -> Scripts -> Logoff na minha máquina no gpedit.

Infelizmente, parece que os scripts de logoff não são executados até que todos os processos morram, portanto, nunca são executados.

Existe uma maneira de executar os scripts de logoff em um ponto anterior do processo? Ou existe uma abordagem melhor para o problema?

Responder1

Você tentou a configuração do registro em HKEY_CURRENT_USER\Control Panel\Desktop AutoEndTasks definida como 1? Se isso funcionar, você não precisará do script.

Responder2

Você pode usar um programa para fazer logoff, comohttp://www.karenware.com/powertools/ptstopper.aspque executa scripts antes do logoff.

Responder3

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 executar um script antes que os processos sejam encerrados, mas posso continuar verificando se isso não funciona. além disso, não tive oportunidade de testar, mas essa deve ser a sintaxe correta para o comando. deixe-me saber se precisar de alguns ajustes.

Responder4

É meio engraçado, eu acho, que o problema que você tem é que o usuário nunca efetua logout completo quando sai, então você escreve um script que diz "matar este processo ao sair", mas o script não pode ser executado porque o o usuário nunca sai. Você deseja que o script seja iniciado quando o usuário clicar em "fazer logoff", e não quando o usuário terminar de fazer logoff.

Não sou muito experiente com VBScript ou mesmo com a API do Windows por trás do logout, mas sugiro um dos seguintes:

  • Descubra se há um evento/gatilho separado que é lançado quando um usuário seleciona "Log Off" e faz com que seu script seja acionado nesse ponto. Se for mais fácil falar do que fazer, peço desculpas, mas parece a maneira mais óbvia de conseguir o que você realmente tinha em mente.

  • Descubra se existe um processo que termina definitivamente depois que o usuário escolhe Fazer logoff ( explorer.exetalvez?). Isso só seria uma boa ideia se o processo que você está tentando eliminar não for crítico para o sistema ou para a sessão (ou se o processo que você vincular seu script de eliminação ao sistema IS for crítico), já que você não gostaria que o script matasse o processo simplesmente porque o usuário fechou algo na bandeja.

  • Acho que a ideia de ter um script de logoff é muito boa, mas sugiro descobrir se você pode realmente substituir o botão "logoff" no menu Iniciar por um botão que inicia esse script. Eu sei que vi algo semelhante em laboratórios de informática. Mas se você confiar que os usuários se lembrarão de clicar no botão personalizado “logoff” na área de trabalho, e eles ainda conseguirem fazer o logoff normal, essa memória muscular só deixará todos frustrados.

informação relacionada