Come dice Kornel, ci sono la protezione a livello di sistema operativo dei processi isolati dagli utenti. Ma in generale, non c'è modo di impedire che il processo venga terminato da un utente con il permesso di farlo. E un utente ha il permesso di terminare i processi in esecuzione come tale utente.
Anche se si desidera eseguirlo come SYSTEM, non è possibile utilizzare questo processo per interagire con l'utente connesso. Avresti bisogno di eseguirlo come un servizio e non avrebbe GUI. Potresti provare altri approcci, come ottenere una DLL caricata in un processo come Explorer.exe che gli utenti non terminano perché non vogliono, ma è solo un abuso.
Sarebbe una situazione molto brutta per gli utenti finali se gli sviluppatori potessero semplicemente scrivere applicazioni che non potevano essere interrotte. Se si tratta di un'applicazione interna, è possibile controllare Server Fault per verificare se esiste un modo per ottenerlo con Criteri di gruppo.
Quale motivo legittimo hai per farlo? –
Suggerisco un'alternativa: avere un flag di stato che mostri lo spegnimento corretto, e se si è avviato senza che il flag di spegnimento sia impostato, registrarne uno (o più grande). E poi avere un servizio che monitora il tuo processo e garantisce che sia in esecuzione. Se l'utente lo uccide, riavvialo. Questo è ciò che facciamo con un processo "deve essere in esecuzione" che l'utente può fare. – mj2008
Ho un suggerimento: per favore non farlo. –