
Quando um usuário desliga normalmente por meio do menu Iniciar em um computador associado a um domínio, o que acontece primeiro: a) tentativa de fechar aplicativos em execução em segundo plano ou b) desconectar do servidor?
A razão pela qual pergunto é que executamos um pequeno aplicativo portátil em um compartilhamento de servidor quando o usuário faz login.
No desligamento, o comportamento normal de todos, exceto um pequeno número de usuários, é que o aplicativo seja encerrado silenciosamente (ele intercepta o sinal de desligamento do Windows e termina) e o desligamento do PC continua normalmente.
Para alguns, é óbvio para mim que a conexão de rede foi encerrada e o Windows lança uma caixa de mensagem com 0xc00000c4, STATUS_UNEXPECTED_NETWORK_ERROR, porque o aplicativo não pode desligar-se porque "não existe", como o vê.
Então, há uma sequência definida de eventos, ou é, hum, quem sabe o quê e quando e em que ordem?
Responder1
Durante o desligamento, o Windows apenas envia uma mensagem de fechamento para tudo que está em execução. Os processos e serviços que não terminam dentro de um determinado tempo limite podem ser encerrados à força ou o usuário pode ser solicitado a tomar uma decisão.
Como o encerramento é feito em paralelo, não há uma sequência ordenada de eventos. A ordem depende do tempo que cada processo leva para terminar e pode ser ainda mais influenciada pelo desempenho do hardware.
Para garantir que seu programa termine antes que isso aconteça, você pode criar um script de desligamento que o fechará de maneira ordenada. Use o Editor de Política de Grupo ( gpedit.msc
) e vá para
Configuração do computador > Configurações do Windows > Scripts (inicialização/desligamento).