Quando um usuário desliga normalmente por meio do menu Iniciar em um computador ingressado no domínio, o que acontece primeiro: a) tentar fechar os aplicativos executados em segundo plano ou b) desconectar-se 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 é 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 se desligar porque "não existe", como ele o vê.
Então, existe uma sequência definida de eventos, ou é, hum, quem sabe o quê e quando em qual ordem?
Durante o desligamento, o Windows apenas envia uma mensagem de fechamento para tudo o 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 desligamento é 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 seja encerrado antes que isso aconteça, você pode criar um script de desligamento que o fechará de maneira ordenada. Use o Editor de Diretiva de Grupo (
gpedit.msc
) e vá para Configuração do Computador > Configurações do Windows > Scripts (Inicialização/Desligamento) .