O script para matar o processo no logoff não é executado até que o processo esteja inativo?

6

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?

    
por robertc 18.01.2010 / 12:46

5 respostas

1

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.

    
por 27.01.2010 / 20:46
1

Você pode usar um programa para fazer logoff, como link , que executa os scripts antes do logoff.

    
por 27.01.2010 / 20:56
1

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.

    
por 03.02.2010 / 18:54
0

Talvez tente o serviço UPHClean da Microsoft. Observe que isso só funcionará em 2000/2003 / XP link

    
por 06.02.2010 / 22:54
0

É 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.

por 13.03.2010 / 05:31