Er der en måde at aflytte en proces 'Kill' -kommando i Windows (.NET)?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en Windows-konsol ansøgning skrevet i .NET 4.0 (c #), og hvis applikationen/processen dræbes unormalt (fx fra Task Manager eller ved nedlukning af operativsystemet), er der mulighed for at opfange dette, så nogle oprydningskoder kunne udføres?


Tak for enhver hjælp.

Bedste reference


Tag et kig på Win32.SystemEvents der er gode eksempler på hvordan man kan registrere disse begivenheder .. [1]

Andre referencer 1


Du kan ikke opdage, at din egen proces bliver dræbt. Når nogen kalder NtTerminateProcess () med din proces, og de har tilladelse til at gøre det, får du ikke besked. Dine tråde stopper alle, og din proces forsvinder fra neden under dig.


Heldigvis behøver de fleste oprydninger ikke gøres manuelt - al den hukommelse, du ikke havde frigivet, vil blive genvundet af operativsystemet, alle de systemhåndtag du ikke lukkede bliver automatisk ryddet og alle de midlertidige filer, du har åbnet som TIDLIGERE (du gør det rigtigt?) bliver automatisk slettet.


Årsagen til dette er simpel. Hvis du har besluttet at dræbe et program via Task Manager - det er fordi brugeren har besluttet, at det er misbrug. Hvis du så fortæller det at holde op med at misbruge, så kan det ignorere dig, for det er godt, at det er misbrug.


Det lader til, at en bedre måde for dig at gøre din processtyring ville være at give en legitim måde for dig at afslutte processen - det være sig via et vindue, der håndterer WM\_CLOSE-begivenheden eller ved at køre det i en konsol, der kan afbrydes via rød-X knap i hjørnet. Task manager skal være et mål for sidste udvej. Hvis brugeren har problemer med at Ctrl + Alt + Del din proces til døden, får du ikke en chance.

Andre referencer 2


Der er generelt ingen måde at håndtere en proces, der bliver dræbt, men du bør kunne klare de hændelser, der opstår ved ansøgningsafslutningen. (Bare tænk: Hvis du kunne klare en proces, der blev dræbt, ville det virkelig være rigtig nemt at skrive nogle forfærdelige spyware type ting). Hvis jeg husker rigtigt, er der en måde at kontrollere, hvorfor appen lukker. Afhængigt af hvad der får den til at lukke, kan du reagere anderledes.