¿Cómo bloquear un proceso en Windows-7 sin obtener el diálogo WER?

¿Es posible bloquear un proceso de modo de usuario normal en Windows-7 sin obtener el cuadro de diálogo Informe de errores de Windows (WER)? (Cuando y si WER está normalmente habilitado y no se aplican indicadores específicos).

Nota: soyno interesado endeshabilitar WER, Me interesan los escenarios de choque dondeWER no se lanza aunque debería y Windows "silenciosamente" termina una aplicación.

En Windows XP, es bastante trivial escribir una aplicación C o C ++ (en modo de usuario) que desordena su propio espacio de direcciones de tal manera que cuando finalmente se genera una Infracción de Acceso (u otra Excepción de Win32 no manejada), Windows XP simplemente termine en silencio el proceso sin informar al usuario en absoluto:

...
void stackbreaker() {
    printf("%s\n", __FUNCTION__);
    // global/static buffer
    static char buf[128] = "In a hole in the ground there lived a hobbit. And it burrowed through your stack. It even built a round door into you function.";
    // Get address on the stack
    char local;
    char* stack = &local;
    // nuke the stack:
    memcpy(stack - 64, buf, sizeof(buf));
    // Kaboom. No user defined unhandled exception filter will be called. Stack nuked.
    // Process will terminate silently on Windows XP.
    // But on Windows-7 you still get the WER dialog.
}
...

Al llamar a la función anterior en un proyecto simple de C ++ (en modo de lanzamiento, tenga cuidado con las optimizaciones del compilador cuando realice la prueba y no se ejecute bajo el depurador):

Termina silenciosamente el proceso, bajo XP.Mostrar el diálogo de bloqueo WER en Windows-7.Aparte: en ningún caso llamará a tu propio filtro de excepciones no manejado, incluso si configuras uno a través deSetUnhandledExceptionFilter

Lo que me pregunto ahora es si, bajo Windows 7, el mecanismo WER se ha implementado de una manera quesiempre obtener un diálogo de error para un bloqueo[una] en mi solicitud, osi existen escenarios de corrupción del proceso incluso en Windows 7, ¿eso evitará que aparezca el diálogo WER?

Voy a añadir un poco de la lectura que hice:

En el libroWindows a través de C / C ++ (5ª ed. Por Richter, Nasarre) describen lo que sucede en un "Proceso de falla" (p. 711):

Filtros de excepción.......el kernel detecta una excepción no manejadabloqueando la llamada de ALPC al servicio WerWER informa que entra en acción....

Ahora, señalan que Win7 hace esto de manera diferente a Windows XP (para citar este libro, pág. 710 :)

... A partir de Windows Vista, elUnhandledExceptionFilter La función ya no envía un informe de error a los servidores de MS. En lugar. El kernel detecta que la hebra en modo de usuario no maneja la excepción (Paso 4) ...

Así que esto implicaría, que hayde ninguna manera para que un proceso se "bloquee", en Vista y en la parte superior, de manera que se evite que el WER se active. Estoy tratando de confirmar o refutar esto.

[a]: Obviamente, un proceso puede ser fácilmente "eliminado" sin ningún rastro llamando a uno de los varios*exit oterminate* funciones La pregunta es, si puede descartar tal razón de terminación, (cómo) es posible "bloquear" un proceso en modo de usuario en Win7 de manera que impida que se muestre el cuadro de diálogo WER.

Respuestas a la pregunta(2)

Su respuesta a la pregunta