Los informes de errores se pueden eliminar. Descubriendo secretos de Windows: ¿Cómo funciona el registro de errores? Deshabilitar el informe de errores en XP

💖 ¿Te gusta? Comparte el enlace con tus amigos.
Este artículo se basa en las preguntas de los foros: "¿Cómo puedo devolver una cadena de una DLL?", "¿Cómo transferir y devolver una matriz de registros?", "¿Cómo transferir un formulario a una DLL?"

Para que no pierda la mitad de su vida tratando de resolverlo, en este artículo traeré todo en bandeja de plata.

Los temas de este artículo, en diversos grados, ya se han abordado más de una vez en este blog, pero en este artículo se recopilan en un grupo, se da la justificación. En resumen, se puede lanzar un enlace a este artículo a quienes desarrollan DLL.

Nota IMPORTANTE: el artículo necesita ser leído consecuentemente... Los ejemplos de código se proporcionan solo como ejemplos, en cada paso (párrafo) del artículo, se agrega el código de ejemplos con nuevos detalles. Por ejemplo, al principio del artículo no hay manejo de errores, se indican los métodos "clásicos" (como el uso de GetLastError, convenciones sdtcall, etc.), que se reemplazan por otros más adecuados en el transcurso del artículo. Esto se hace porque las construcciones "nuevas" ("inusuales") no plantean ninguna pregunta. De lo contrario, para cada ejemplo, sería necesario insertar una nota del formulario: "esto se discute en ese párrafo a continuación, pero esto es en este". En cualquier caso, al final del artículo hay un enlace al código listo para usar, escrito teniendo en cuenta todo lo dicho en el artículo. Puedes simplemente tomarlo y usarlo. Y el artículo explica por qué y por qué. Si no está interesado en "por qué y por qué", desplácese hacia abajo hasta la conclusión y el enlace para descargar el ejemplo.

El informe de errores está habilitado de forma predeterminada en XP, Vista y Windows 7. Cuando se produce un error en una aplicación, aparece una descripción detallada del error y se le solicita que envíe esta información a Microsoft. Esta información se recibe de millones de PC en todo el mundo y ayuda a crear parches y paquetes de servicios. En algunos casos, el autoanálisis de la información sobre el error ayuda a resolver el problema. Sin embargo, en algunos casos este comportamiento del sistema no es aceptable y le gustaría deshabilitar esta funcionalidad. En este artículo, veremos métodos para deshabilitar el informe de errores en todos los sistemas.

Windows 7

Abre el menú de inicio y entra en la barra de búsqueda. configuración de informes de problemas, o vaya al Centro de actividades -> Cambiar la configuración del Centro de actividades -> Configuración de informes de problemas. Si utilizó el método de búsqueda, seleccione "Elegir cómo informar problemas":

Luego, puede seleccionar fácilmente la opción que desee de la lista.

Deshabilitar el informe de errores en Windows 7 con directiva de grupo

Nota: este método no está disponible para las versiones domésticas de Windows 7.

Haga clic en Inicio e ingrese gpedit.msc en la barra de búsqueda y presione Entrar.

Se abrirá el Editor de políticas de grupo local. A continuación, debe ir a la sección Configuración de usuario \ Plantillas administrativas \ Componentes de Windows \ Informe de errores de Windows e ir a la política Deshabilitar el informe de errores de Windows.

Cambie el estado de la política de No configurado a Habilitado, luego haga clic en Aplicar y Aceptar y salga del Editor de políticas de grupo.

Deshabilitar el informe de errores en Vista

Para deshabilitar el informe de errores en Vista, haga clic en Inicio y abra el Panel de control.

Cambie el panel de control al modo de visualización clásico y haga clic en Informes de problemas y soluciones.

Como puede ver, se nos ofrecen dos opciones. Si usted elige Pídeme que compruebe si ocurre un problema., se habilitará el informe de errores y se le pedirá que elija si desea enviar información a Microsoft o no. Si usted elige Buscar soluciones automáticamente (recomendado) todos los datos se enviarán a Microsoft automáticamente. Ambas opciones no son adecuadas para nosotros, ya que queremos deshabilitar por completo esta funcionalidad, así que haga clic en el enlace Ajustes avanzados.

En la ventana que aparece en la sección Para mis programas, la notificación de problemas es ... seleccione Desactivado y luego haga clic en Aceptar.

Como puede ver ahora, las opciones anteriores no están disponibles para editar.

Haga clic en Cerrar en el mensaje que nos informa que se ha desactivado el informe de errores.

Deshabilitar el informe de errores en XP

Para deshabilitar el informe de errores en XP, haga clic con el botón derecho en el " Mi computadora"y seleccione Propiedades... En la ventana que se abre, vaya a la pestaña Adicionalmente y presione el botón Error al reportar.

En la ventana que se abre, seleccione la opción Deshabilitar el informe de errores... Desmarque la opción Pero notificarme cuando ocurra un error crítico.

Pensamos dónde comprar ropa buena y barata para el niño. Recomiendo la tienda online de stock para niños con una gran selección y precios económicos.

Deja de funcionar o no funciona correctamente), Ventanas genera un informe de problema que está destinado a enviarse a Microsoft(encontrar una solución al problema).

Empezando por el sistema operativo , para reemplazar la "herramienta de análisis de fallas o fallas" Dr. Watson llegó Informe de errores de Windows (NOSOTROS SOMOS) – Servicio de registro de errores de Windows(otros nombres - , Informes de problemas y soluciones).

Servicio de registro de errores de Windows representado por los siguientes archivos (todos ubicados en el directorio \ Windows \ System32 \):

wer.dll (Biblioteca de mensajes de error de Windows);

wercon.exe (Informes de problemas y soluciones);

wercplsupport.dll ();

werdiagcontroller.dll (Controlador de diagnóstico WER);

WerFault.exe (Informe de errores de Windows);

WerFaultSecure.exe (Informe de errores de Windows);

wermgr.exe (Informe de problemas de Windows);

wersvc.dll (Servicio de registro de errores de Windows);

wertargets.wtl.

Cuando un proceso (programa) falla, el servicio Informe de errores de Windows lanza - en la sesión del proceso erróneo - su propio ( WerFault.exe),

pasando el identificador ( PID) proceso a la línea de comando WerFault:

Esto muestra una ventana Microsoft Windows con un mensaje de error - "El trabajo se ha detenido<Название_программы>... La próxima vez que se conecte a Internet, Windows puede buscar una solución a este error ".:


Pulsando el botón Mostrar detalles del problema puedes ver la firma del problema:


Las firmas de problemas se almacenan en informes de errores, que se almacenan en el directorio \ Users \ Master \ AppData \ Local \ Microsoft \ Windows \ WER \ ReportArchive \, cada informe está en una carpeta separada Reporte ********(por ejemplo, Informe0a003e48), en archivo Report.wer.

Contenido del archivo de muestra Report.wer:

Versión = 1

EventType = APPCRASH

EventTime = 129234418886148269

ReportType = 2

Consentimiento = 1

Response.type = 4

Sig.Name = Nombre de la aplicación

Sig.Value = iexplore.exe

Sig.Name = Versión de la aplicación

Sig.Value = 8.0.6001.18928

Sig.Name = Sello de tiempo de la aplicación

Sig.Value = 4bdfa327

Sig.Name = Nombre del módulo fallido

Sig.Value = mshtml.dll

Sig.Name = Versión del módulo fallida

Sig.Value = 8.0.6001.18928

Sig.Name = Marca de tiempo del módulo con error

Sig.Value = 4bdfb76d

Sig.Name = Código de excepción

Sig.Value = c0000005

Sig.Name = Compensación de excepción

Sig.Value = 000da33f

DynamicSig.Name = Versión del SO

DynamicSig.Value = 6.0.6002.2.2.0.768.3

DynamicSig.Name = Código de idioma

DynamicSig.Value = 1049

DynamicSig.Name = Información adicional 1

DynamicSig.Value = fd00

DynamicSig.Name = Información adicional 2

DynamicSig.Name = Información adicional 3

DynamicSig.Value = fd00

DynamicSig.Name = Información adicional 4

DynamicSig.Value =

UI = C: \ Archivos de programa \ Internet Explorer \ iexplore.exe

UI = Internet Explorer ha dejado de funcionar

UI = Windows puede buscar en Internet una solución para este error.

UI = Busque en línea una solución y cierre el programa

UI = Verifique si hay alguna forma de corregir el error en la web más tarde y cierre el programa

UI = Cerrar programa

FriendlyEventName = Detener la operación

ConsentKey = APPCRASH

AppName = Internet Explorer

AppPath = C: \ Archivos de programa \ Internet Explorer \ iexplore.exe

Cómo iniciar el servicio Informes de problemas y soluciones

Haga clic en Inicio -> Panel de control -> Informes de problemas y soluciones;


- en la ventana Informes de problemas y soluciones en el menú Tareas Las siguientes opciones están disponibles:

· Busque nuevas soluciones(requiere una conexión a Internet abierta);

En el artículo anterior de esta serie sobre reinicio y recuperación de aplicaciones, mencionamos el Informe de errores de Windows (WER). Será discutido en este artículo de este ciclo.

En el artículo anterior de esta serie sobre reinicio y recuperación de aplicaciones, mencionamos el Informe de errores de Windows (WER). Será discutido en este artículo de este ciclo.

Mecanismo de informe de errores de Windows

Con el mecanismo de Informe de errores de Windows (WER), puede recopilar datos sobre los errores que ocurren en las aplicaciones y enviar esta información a un sitio dedicado de Microsoft (http://winqal.microsoft.com) o almacenarla localmente. La recopilación de información detallada sobre errores y bloqueos ayuda a eliminar las deficiencias de las aplicaciones, corregir errores, simplificar el lanzamiento de paquetes de servicio y nuevas versiones de aplicaciones, y garantizar la estabilidad y confiabilidad generales tanto de las aplicaciones como del sistema operativo.

Tenga en cuenta que Microsoft utiliza activamente el mecanismo de informe de errores de Windows tanto durante el desarrollo como después de que los productos se lanzan al mercado. Por lo tanto, el grupo de productos de Microsoft Office corrigió el 50% de los errores en Office Service Pacl 2, el grupo de productos de Visual Studio: el 74% de los errores en Beta 1 de Visual Studio 2005, el 29% de los errores en Windows XP se corrigieron en Windows XP Service Pack 1. Actualmente, más de 2.000 empresas utilizan los servicios de informe de errores de Windows para mejorar la calidad de sus aplicaciones.

El Informe de errores de Windows apareció por primera vez en Windows XP, se expandió significativamente en Windows Vista y se desarrolló aún más en Windows Server 2008, Vista Service Pack 1 y Windows 7 y Windows Server 2008 R2. Entonces, en el nivel de Windows Vista, los desarrolladores tienen la oportunidad no solo de recibir información sobre fallas que se han producido en las aplicaciones, sino también datos de rendimiento. Ahora puede crear, personalizar y enviar informes de problemas de manera más flexible, mejorar las herramientas de análisis de datos en línea y simplificar el mecanismo de comunicación con los usuarios, a través del mecanismo Informes de problemas y soluciones(en Windows Vista - Comienzo -> Panel de control -> Sistema y mantenimiento -> Informes y soluciones de problemas -> Ver historial de problemas) y Centro de Acción(en Windows 7). Luego, en Windows Server 2008 y Vista Service Pack 1, se agregó la capacidad de crear volcados locales, y en Windows 7 y Windows Server 2008 R2, se agregó la capacidad de lanzar excepciones que no serían manejadas por los controladores tradicionales y conducirían a una terminación inmediata de la aplicación y el lanzamiento automático del mecanismo de informe de errores de Windows., así como la capacidad de configurar un proceso externo: un controlador de excepciones, al que se llamará para obtener el nombre del evento, los parámetros del informe de errores y, opcionalmente, iniciar el depurador .

Uso del informe de errores de Windows

Echemos un vistazo rápido a cómo los desarrolladores pueden usar el Informe de errores de Windows para obtener información sobre fallas y otros problemas con sus aplicaciones. A partir de Windows Vista, Windows proporciona un informe predeterminado de fallas de kernel, bloqueo y bloqueo para todas las aplicaciones; no se requieren cambios en el código de la aplicación. Si es necesario, el informe incluye un mini-volcado de memoria y un volcado del "montón" de la aplicación, las aplicaciones necesitan utilizar interfaces de programación en los casos en que sea necesario enviar alguna información adicional específica de la aplicación. Debido a que el kernel de Windows informa automáticamente las excepciones no controladas, las aplicaciones no necesitan manejar excepciones fatales.

En caso de bloqueos, bloqueos o errores de nivel de kernel del sistema operativo, el mecanismo de informe de errores de Windows realiza la siguiente secuencia de acciones:

  1. Problema que surge.
  2. El núcleo del sistema operativo llama a WER.
  3. WER recopila datos, genera un informe y, si es necesario, solicita la confirmación del usuario para enviar el informe.
  4. Una vez recibida la confirmación, WER envía un informe a Microsoft (también conocido como Watson Server).
  5. Si el servidor requiere datos adicionales, WER los recopila y, si es necesario, solicita la confirmación del usuario para enviarlos.
  6. Si la aplicación está registrada para reiniciarse (discutimos esto anteriormente), entonces WER ejecuta la función correspondiente llamada indirectamente de la aplicación.
  7. Si existe una solución al problema que causó el bloqueo, se notifica al usuario mediante las herramientas del sistema operativo adecuadas.

Dependiendo de la situación, el archivo CAB puede contener diferentes tipos de volcados, que se pueden distinguir por la extensión del nombre del archivo (Tabla 1).

La aplicación puede utilizar las siguientes funciones para personalizar el contenido del informe enviado a Microsoft: la función de registro le indica a la Web que incluya los archivos y bloques de memoria especificados en el informe generado.

Para incluir un archivo en el informe, utilice la función WerRegisterFile (), que se pasa como parámetros: el nombre completo del archivo, su tipo (uno de los valores de WER_REGISTER_FILE_TYPE) y dos banderas: WER_DELETE_FILE_WHEN_DONE, lo que indica que el archivo debe eliminarse después de enviar el informe y WER_ANONYMOUS_ DATA, lo que indica que el archivo no contiene datos privados. Los posibles valores del parámetro WER_REGISTER_FILE_ TYPE se muestran en la tabla. 2.

Tenga en cuenta que la tarea de generar un volcado de memoria se deja al desarrollador de la aplicación; para su solución, puede usar, por ejemplo, los mecanismos de depuración descritos en el SDK de Windows (consulte la función MiniDumpWriteDump ()).

Para excluir un archivo del informe, utilice la función WerUnRegisterFile (), especificando el nombre del archivo excluido como parámetro.

En la mayoría de los escenarios, los archivos adicionales se envían solo cuando se recibe una solicitud del servidor. Si se envían archivos adicionales, se debe usar el indicador WER_ADD_ REGISTRADO_DATA cuando se llama a la función WerReportSubmit (); hablaremos más sobre ello.

Para incluir una copia de un área de memoria en el informe, utilice la función WerRegisterMemoryBlock (), cuyos parámetros se pasan la dirección del comienzo del bloque de memoria incluido y el tamaño de este bloque en bytes (el tamaño máximo de la memoria el bloque es WER_MAX_MEM_BLOCK_SIZE). Para cancelar la inclusión de una copia de la región de memoria en el informe, utilice la función WerUnRegisterMemoryBlock (). En el caso de enviar datos desde la memoria, debe usar el indicador WER_ADD_Romantic_DATA al llamar a la función WerReportSubmit ().

Las funciones WerSetFlags () y WerGetFlags () se pueden utilizar, respectivamente, para controlar el estado del proceso al momento de generar un informe de error y obtener información sobre la configuración.

El proceso de generar y enviar un informe consta de varios pasos. El informe se inicializa llamando a la función WerReportCreate (), que especifica el tipo de evento para el que se genera el informe, el tipo de informe ( WerReportNo Crítico- para fallas con recuperabilidad y WerReportCritical - para fallas que provocaron el bloqueo de la aplicación), un enlace a la información incluida en el informe (ver la estructura WER_REPORT_INFORMATION), y una variable que contendrá un enlace al informe generado - ReportHandle.

Una vez que el informe se haya inicializado correctamente, debe agregarle los parámetros del primer y segundo grupo. Los parámetros del primer grupo se establecen utilizando la función WerReport-Set-Parameter (), a la que se le pasa un enlace al informe generado (el resultado de una ejecución exitosa de la función WerReportCreate), un conjunto de banderas, el nombre del parámetro y su valor (una cadena Unicode de 16 bits que termina en cero).

Para incluir parámetros adicionales en el informe, utilice la función WerReportAddSecondaryParameter (), a la que se le pasa un enlace al informe, el nombre del parámetro y su valor.

Además de la capacidad de incluir archivos e instantáneas de áreas de memoria en los informes, es posible transferir volcados de memoria como parte del informe; para esto, puede usar la función WerReportAddDump (), cuyos parámetros son un enlace a el informe, enlaces al proceso y flujo para el cual se creó el volcado, tipo de volcado (uno de los valores WER_DUMP_TYPE), información de excepción (puntero a una estructura WER_EXCEPTION_INFORMATION), opciones adicionales (tipo de datos WER_DUMP_CUSTOM_OPTIONS) y banderas. Tenga en cuenta que el proceso que se va a descargar debe tener los permisos STANDARD_RIGHTS_READ y PROCESS_QUERY_INFORMATION.

Para incluir archivos en el informe, utilizamos la función WerReportAddFile (), a la que pasamos un enlace al informe, el nombre completo del archivo, el tipo de archivo (WER_FILE_ TYPE) y banderas adicionales.

Además, los desarrolladores tienen la oportunidad de personalizar la interfaz de usuario, para seleccionar la información que se muestra en el panel de diálogo del sistema. Para estos fines, se utiliza la función WerReportSetUI Option (), a la que se le pasa un enlace al informe, el tipo de interfaz del informe (WER_REPORT_UI) y el valor de la cadena mostrada. La aplicación puede modificar cualquiera de los campos del elemento de interfaz especificado por el parámetro WER_REPORT_UI; cada llamada a función permite modificar solo un campo. La función WerReportSetUIOption () se puede llamar en cualquier momento en que se esté ejecutando la aplicación, antes de enviar el informe directamente.

Una vez generado y configurado el informe, usamos la función WerReportSubmit () para enviar el informe. Como parámetros de esta función, se pasa un enlace a un informe, un tipo de interfaz de usuario (disponibilidad de derechos de administrador, confirmación de envío, etc.) y un conjunto de banderas. Una vez que se haya enviado el informe, debe cerrar el vínculo con la función WerReportCloseHandle ().

Para desconectar una aplicación del Informe de errores de Windows, utilice la función WerAddExcludedApplication () y, para volver a conectarse, utilice la función WerRemoveExcludedApplication ().

La configuración de Informe de errores de Windows se encuentra en dos ramas del registro:

  • HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Windows Error Reporting;
  • Informe de errores de HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ Windows.

Los ajustes más útiles se muestran en la tabla. 3.

Conclusión

En esta serie de artículos, discutimos varios temas relacionados con la mejora de la estabilidad de las aplicaciones. Examinamos una técnica para evitar pérdidas de memoria, evitar que las aplicaciones se congelen, discutimos el uso del mecanismo de reinicio y recuperación de aplicaciones, que le permite reiniciar aplicaciones que bloquearon algunos recursos o dejaron de responder a los mensajes del sistema, y ​​el mecanismo de informe de errores de Windows. lo que permite recopilar datos sobre los bloqueos que se producen en las aplicaciones.

En los siguientes artículos para desarrolladores del sistema operativo Windows 7, veremos una serie de cambios a nivel de kernel del sistema operativo que pueden ser de interés para los desarrolladores de aplicaciones.

Servicio NOSOTROS SOMOS (Informe de errores de Windows) se utiliza para recopilar y enviar información de depuración sobre el bloqueo del sistema y las aplicaciones de terceros en Windows a los servidores de Microsoft. Tal como la concibió Microsoft, esta información debe analizarse y, si hay una solución disponible, la opción para solucionar el problema debe enviarse al usuario a través de la Respuesta de informe de errores de Windows. Pero, de hecho, pocas personas utilizan esta funcionalidad, aunque Microsoft deja de forma persistente el servicio de recopilación de errores WER habilitado de forma predeterminada en todas las versiones recientes de Windows. En la mayoría de los casos, el servicio WER se recuerda cuando un directorio comienza a ocupar bastante espacio en el disco del sistema (hasta varias decenas de GB), aunque este directorio está habilitado de forma predeterminada.

Servicio de informe de errores de Windows

El servicio Informe de errores de Windows es un servicio de Windows independiente que se puede desactivar fácilmente con el comando:

Dentro del directorio WER \ ReportQueue \ hay muchos directorios, nombrados en el siguiente formato:

  • Critical_6.3.9600.18384_ (ID) _00000000_cab_3222bf78
  • Critical_powershell.exe_ (ID) _cab_271e13c0
  • Critical_sqlservr.exe __ (ID) _cab_b3a19651
  • NonCritical_7.9.9600.18235 __ (ID) _0bfcb07a
  • AppCrash_cmd.exe_ (ID) _bda769bf_37d3b403

Como puede ver, el nombre del directorio contiene la gravedad del evento y el nombre del archivo exe específico que falló. Todos los directorios deben tener un archivo Report.wer que contiene descripciones de errores y varios archivos con información adicional.

Borrar la carpeta WER \ ReportQueue en Windows

Como regla general, el tamaño de cada carpeta es insignificante, pero en algunos casos se genera un volcado de memoria para el proceso problemático, que ocupa bastante espacio. La captura de pantalla siguiente muestra que el tamaño del archivo de volcado memory.hdmp es de aproximadamente 610 MB. Un par de volcados de este tipo, y varios gigabytes libres desaparecieron en el disco.

Para borrar todos estos errores y registros usando herramientas estándar, abra el panel de control y vaya a ControlPanel -> Sistema y seguridad -> Centro de actividades -> Mantenimiento -> Ver historial de confiabilidad -> Ver todos los informes de problemas y haga clic en el botón Borrar todos los informes de problemas.

Para liberar rápidamente espacio en disco de los archivos de depuración generados por el servicio WER, el contenido de los siguientes directorios se puede eliminar manualmente de forma segura.

  • C: \ ProgramData \ Microsoft \ Windows \ WER \ ReportArchive \

Deshabilitar el informe de errores de ventana en Windows Server 2012 R2 / 2008 R2

Puede deshabilitar el registro de información sobre el Informe de errores de Windows en las ediciones de servidor de Windows de la siguiente manera:


Deshabilitar recopilar y enviar informes en Windows 10

En Windows 10, no hay ninguna opción para deshabilitar el Informe de errores a través de la GUI. Puede comprobar el estado del componente en el panel de control sistema y seguridad ->Centro de seguridad y servicio-> sección Servicio... Como puede ver, la opción está habilitada de forma predeterminada (Panel de control -> Sistema y seguridad -> Seguridad y mantenimiento -> Mantenimiento -> Buscar soluciones a los informes de problemas).

Puede deshabilitar el Informe de errores de Windows en Windows 10 a través del registro. Para hacer esto, en la rama necesita crear un nuevo parámetro de tipo DWORD (32 bits) con el nombre Discapacitado y el valor 1 .

Ahora revisemos el estado del parámetro nuevamente. Encontrar una solución a los problemas notificados en el panel de control. Su estado debería cambiar a Desactivado.

Deshabilitar el informe de errores de Windows a través de la política de grupo

También puede desactivar el registro de Informe de errores de Windows a través de la Política de grupo. Esta en la seccion Configuración del equipo / Plantillas administrativas / Componentes de Windows / Informe de errores de Windows(Componentes de Windows -> Informe de errores de Windows). Para deshabilitar la recopilación y el envío de datos, habilite la política Deshabilitar el informe de errores de Windows(Desactivar el informe de errores de Windows).

Como resultado, los mensajes de error de la aplicación en Windows ya no se generarán y se enviarán automáticamente a Microsoft.

decirles a los amigos