Existen sysinternals forum threads sobre la protección contra intentos de procesos finales enganchando NT Internals, pero lo que realmente quieres es un proceso de vigilancia o de pares (enfoque razonable) o algún método para interceptar eventos catastróficos (bastante arriesgado).
Editar: Hay razones por las que hacen esto difícil, pero es posible interceptar o bloquear los intentos de matar a su proceso.Sé que estás tratando de limpiar antes de salir, pero tan pronto como alguien lanza un proceso que no puede ser eliminado de inmediato, alguien le pedirá un método para matarlo inmediatamente, y así sucesivamente. De todos modos, para ir por este camino, consulte el hilo enlazado anterior y busque algunas palabras clave que encuentre allí para obtener más información. gancho O filtro NtTerminateProcess etc. Estamos hablando de código kernel, controladores de dispositivo, antivirus, seguridad, malware, material de rootkit aquí. Algunos libros para ayudar en esta área son Windows NT/2000 Native API, Undocumented Windows 2000 Secrets: A Programmer's Cookbook, Rootkits: Subverting the Windows Kernel y, por supuesto, Windows® Internals: Fifth Edition. Estas cosas no son demasiado difíciles de codificar, pero son muy delicadas para hacer las cosas bien, y es posible que estés presentando efectos secundarios inesperados.
¿Quizás Application Recovery and Restart Functions podría ser útil? Compatible con Vista y Server 2008 y posteriores.
ApplicationRecoveryCallback de devolución de llamada Función función de devolución de llamada definido por la aplicación se utiliza para guardar los datos y la información de estado de aplicación en el caso de que la aplicación encuentra una excepción no controlada o no responde.
Sobre el uso de SetUnhandledExceptionFilter, MSDN Social discussion aconseja que para hacer este trabajo de forma fiable, remendar ese método en memoria es la única manera de estar seguro el filtro se llama. Aconseja envolver con __try/__ excepto. De todos modos, hay algunos ejemplos de código y discusión de filtrado de llamadas a SetUnhandledExceptionFilter en el artículo "SetUnhandledExceptionFilter" and VC8.
También, vea Windows SEH Revisited en The Awesome Factor para obtener un código de ejemplo de AddVectoredExceptionHandler.
utilizar un manejador SIGSEGV. ;-) –