Existem basicamente três abordagens diferentes para o problema de não permitir que um usuário finalize um programa. Todos têm desvantagens e não há boa solução para o seu problema.
Essencialmente, se o usuário tiver direitos de administrador na máquina, eles poderão encerrar um processo (eles podem não saber como)
-
Abordagem 1 : crie o programa que estiver executando como um serviço e marque-o como imparável. (desvantagens, se você estiver usando o Windows Vista e para cima ele será bloqueado na sessão 0 e não pode interagir com a área de trabalho do usuário, no entanto, você ainda pode obter notificações sobre logons e logoffs e reagir apropriadamente.)
-
Abordagem 2 : crie um aplicativo auxiliar que também execute e reinicie o aplicativo original quando for finalizado. Pontos de bônus se você criar seu aplicativo para reiniciar o aplicativo auxiliar se estiver fechado. (desvantagens, muitos para listar, você está seguindo o caminho do malware neste momento.)
-
Abordagem 3 : cria um serviço secundário que monitora a solicitação de kill do processo e a nega. Eu não vou explicar mais sobre como realmente fazer isso como a palavra rootkit vem à mente. As empresas de antivírus fazem bom uso desse truque para proteger seus produtos.