Cuando una aplicación falla en Windows y se instala un depurador como Visual Studio, aparece el siguiente cuadro de diálogo modal:
[Título: Microsoft Windows]
X ha dejado de funcionar
Un problema causó que el programa no funcionara correctamente. Windows cerrará el programa y le notificará si hay una solución disponible.
[Depurar] [Cerrar aplicación]
¿Hay alguna forma de desactivar este cuadro de diálogo? Es decir, ¿el programa simplemente se bloquea y se quema silenciosamente?
Mi escenario es que me gustaría ejecutar varias pruebas automatizadas, algunas de las cuales fallarán debido a errores en la aplicación bajo prueba. No quiero que estos diálogos detengan la ejecución de la automatización.
Buscando, creo que encontré la solución para deshabilitar esto en Windows XP, que está destruyendo esta clave de registro:
HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AeDebug \ Debugger
Sin embargo, eso no funcionó en Windows Vista.
Respuestas:
Para forzar al Informe de errores de Windows (WER) a realizar un volcado por caída y cerrar la aplicación, en lugar de pedirle que depure el programa, puede configurar estas entradas de registro:
Una vez configurado, cuando sus aplicaciones se bloqueen, debería ver los archivos * .hdmp y * .mdmp en:
fuente
Mira aquí:
http://msdn.microsoft.com/en-us/library/bb513638.aspx
regedit
DWORD HKLM o HKCU \ Software \ Microsoft \ Windows \ Windows Error Reporting \ DontShowUI = "1"
hará que WER informe en silencio. Entonces puedes configurar
DWORD HKLM o HKCU \ Software \ Microsoft \ Windows \ Windows Error Reporting \ Disabled = "1"
para evitar que hable con MS.
fuente
No estoy seguro de si esto se refiere exactamente al mismo diálogo, pero aquí hay un enfoque alternativo de Raymond Chen :
fuente
Tuve que deshabilitar esto para el trabajo de automatización de versiones en Windows de 64 bits para Firefox e hice lo siguiente:
Es similar a lo que se logró para los informes de experiencia del cliente en: http://www.blogsdna.com/2137/fix-windows-installer-explorer-update-has-stopped-working-in-windows-7.htm
fuente
En mi contexto, solo quiero suprimir la ventana emergente para mis pruebas unitarias y no para todo el sistema. Descubrí que se necesita una combinación de funciones para suprimir estos errores, como detectar excepciones no controladas, suprimir las comprobaciones de tiempo de ejecución (como la validez del puntero de la pila) y los indicadores de modo de error. Esto es lo que he usado con cierto éxito:
fuente
En la aplicación WPF
fuente
Debe implementar un filtro de excepción no controlado que simplemente cierre su aplicación, luego configure esa función de filtro con SetUnhandledExceptionFilter () .
Si está utilizando el CRT seguro, también debe proporcionar su propio controlador de parámetros no válido y configurarlo con _set_invalid_parameter_handler ().
Esta publicación de blog también tiene información: http://blog.kalmbachnet.de/?postid=75
fuente
Durante la prueba, puede ejecutar con un 'depurador' como ADPlus adjunto, que se puede configurar de muchas formas útiles para recopilar datos (minivolcados) sobre errores y, sin embargo, evitar los problemas de diálogo modal que indicó anteriormente.
Si desea obtener información útil cuando su aplicación falla en producción, puede configurar los informes de errores de Microsoft para obtener algo similar a los datos de ADPlus.
fuente
Esta no es una respuesta directa a la pregunta, ya que es una solución alternativa y la pregunta es sobre cómo deshabilitar esa función, pero en mi caso, soy un usuario en un servidor con permisos limitados y no puedo deshabilitar la función usando uno de las otras respuestas. Entonces, necesitaba una solución. Es probable que esto funcione para al menos algunos otros que terminan con esta pregunta.
Solía autohotkey portátil y ha creado una macro que una vez por minuto comprueba si existe el cuadro emergente, y si lo hace, hace clic en el botón para cerrar el programa. En mi caso, eso es suficiente y deja la función activada para otros usuarios. Requiere que inicie el script cuando ejecuto el programa en riesgo, pero funciona para mis necesidades.
El guión es el siguiente:
editar: Una bandera rápida. Cuando hay otras cosas, esto parece intentar activar los controles en la ventana de primer plano; se supone que debe enviarlo al programa en segundo plano. Si encuentro una solución, editaré esta respuesta para reflejarla, pero por ahora, tenga cuidado al usar esto y tratar de hacer otro trabajo en una máquina al mismo tiempo.
fuente
Después de probar todo lo demás en Internet para deshacerme del depurador justo a tiempo, encontré una forma simple que realmente funcionó y espero que ayude a alguien más.
Vaya al Panel de control Vaya a Herramientas administrativas Vaya a Servicios Busque en la lista Administrador de depuración de máquinas Haga clic con el botón derecho del ratón en él y haga clic en Propiedades. Haga clic en Aplicar y Aceptar.
No he visto el mensaje del depurador desde entonces y mi computadora está funcionando perfectamente.
fuente
En lugar de cambiar los valores en el registro, puede deshabilitar completamente el informe de errores en Windows Server 2008 R2, Windows Server 2012 y Windows 8 con:
serverWerOptin /disable
https://technet.microsoft.com/en-us/library/hh875648(v=ws.11).aspx
fuente