Cómo corregir errores de tiempo de ejecución de Windows Visual C ++

Cómo corregir errores de tiempo de ejecución de Windows Visual C ++ / Pregunte a los expertos

Las bibliotecas compartidas en Windows hacen que la programación sea mucho más eficiente para el programador que no necesita reinventar la rueda cada vez que necesita realizar una tarea común. También facilitan la inserción de agujeros de seguridad en el código compartido cuando se encuentran, ya que deben parchearse en menos lugares y no requieren que todas las aplicaciones se vuelvan a compilar..

A pesar de estos aspectos positivos, pueden plantear sus propios problemas cuando intentan solucionar la causa raíz de los mensajes de error que pueden generar..

La pregunta de nuestro lector:

Cómo se soluciona un problema de Windows Vista 32 bits C: \ Windows \ explorer.exe en un Dell Inspiron 530?

Después de hacer clic en el botón Aceptar en el cuadro de diálogo que se muestra en la captura de pantalla, la pantalla se oscurecerá y volverá al funcionamiento normal, pero no me permitirá acceder a la C, D y, a veces, a la unidad E al intentar acceder desde mi computadora.

Corriendo sfc / scannow No encuentra ningún error. Descargué actualizaciones de los sitios web de Dell y Microsoft que intentaban solucionar este problema. También he instalado el paquete redistribuible de Microsoft Visual C ++ 2010 (x86). La PC está completamente actualizada según Windows Update.

Respuesta de Bruce:

Nota: las discusiones sobre el Explorador de Windows en Windows 7 y versiones anteriores también se aplican al Explorador de archivos en Windows 8 y versiones posteriores. Si hay una diferencia notable entre ellos, se indicará explícitamente.

El shell de Windows

Explorador de Windows es el shell y se ejecuta como el proceso explorer.exe como se ve en el Administrador de tareas o en el Explorador de procesos de Sysinternals. El Administrador de tareas no es tan bueno para comprender y administrar los procesos que se ejecutan en su computadora. Incluso en Windows 8, donde está muy mejorado, el administrador de tareas no puede acercarse a ... Leer más. Al igual que muchos otros programas de Windows, toda la funcionalidad proporcionada por el shell no está incorporada en ese único archivo ejecutable. Hay docenas de otros archivos EXE y DLL. Cómo corregir errores de archivos DLL que faltan. Cómo solucionar errores de archivos DLL que faltan. Más información utilizada para implementar hojas de propiedades, controladores de propiedades, controladores de vista previa, menús contextuales y muchos otros elementos que usa en el Explorador de Windows. día.

Cáscara extensible

Las extensiones de shell permiten a los programadores agregar fácilmente funcionalidad al Explorador de Windows escribiendo una DLL para realizar la tarea y registrando la DLL con el sistema operativo, por lo que Explorer sabe dónde encontrar el código para realizar la tarea. Por ejemplo, 7-Zip Cómo extraer archivos de ZIP, RAR, 7z y otros archivos comunes Cómo extraer archivos de ZIP, RAR, 7z y otros archivos comunes ¿Alguna vez se enfrentó con un archivo .rar y se preguntó cómo abrirlo? Afortunadamente, administrar archivos ZIP y otros archivos comprimidos es simple con las herramientas adecuadas. Aquí está lo que necesitas saber. Leer más agrega un submenú al menú contextual estándar, que le brinda acceso rápido a las tareas de manejo de archivos. Hard Disk Sentinel Vigile su HDD y SSD Salud con Hard Disk Sentinel Vigile su HDD y SSD Health With Hard Disk Sentinel ¿Alguna vez ha tenido una falla de disco? Lamentablemente, no hay una panacea para prevenir daños en el hardware. Pero monitorear su HDD o SSD, para actuar cuando su muerte es probable, es un primer paso. Leer más agrega superposiciones de iconos a los iconos de unidades estándar, para que pueda ver el estado de funcionamiento de la unidad de un vistazo, y HashTab agrega una nueva hoja de propiedades para calcular y mostrar los hashes del archivo seleccionado.

Muchas de estas extensiones de shell se implementan como servidores de Modelo de objetos componentes (COM) en proceso. Esto significa que cuando un proceso, en este caso el Explorador de Windows, usa la extensión, no aparecerá en el Administrador de tareas o en el Explorador de procesos como un proceso en ejecución separado con su propio identificador de proceso (PID). En su lugar, se está ejecutando dentro del proceso explorer.exe de llamada.

Proceso de instancia única predeterminado

El Explorador de Windows está escrito para ser capaz de ejecutarse como dos procesos separados, pero, en su configuración predeterminada, solo ejecutará una sola instancia. Cuando se ejecuta por primera vez como parte del proceso de inicio, crea el entorno de escritorio de Windows. Al ejecutarlo de nuevo, se crea un nuevo hilo en el proceso existente, que muestra la ventana de administración de archivos familiar, en lugar de iniciar un nuevo proceso..

Este comportamiento permite una huella de memoria reducida, pero también puede traer su propio pequeño giro al solucionar problemas. Un error crítico o una excepción no controlada en el código que se ejecuta en el proceso explorer.exe, incluidos los servidores en proceso proporcionados por las DLL, causarán que todo el entorno de escritorio se caiga con él.

En la mayoría de los casos, el proceso de escritorio se reiniciará automáticamente. Si no se reinicia, aún debería poder usar Ctrl-Shift-Esc para abrir el Administrador de tareas. Desde allí, ve a Archivo> Nueva tarea (Ejecutar…)> tipo explorer.exe> ​​OK para reiniciar el proceso.

Esto se puede evitar con un simple cambio. Abierto Windows Explorer> Organizar> Carpeta y opciones de búsqueda en vista / 7. Para Windows 8 y versiones posteriores, abra Explorador de archivos> Ver> Opciones> Cambiar carpeta y opciones de búsqueda. Selecciona el Pestaña de vista y comprobar Abre las ventanas de la carpeta en un proceso separado.

Cambiar esta configuración aísla el proceso de su escritorio de todas las demás ventanas del Explorador de Windows que tiene abiertas. Si alguna de esas ventanas de Explorer se bloquea, su escritorio permanecerá ileso.

Biblioteca de tiempo de ejecución de Microsoft Visual C ++ (CRT)

Microsoft Visual C ++ Runtime Library proporciona rutinas para programar Windows que automatizan muchas tareas, como entrada / salida, manipulación de archivos, asignación de memoria, llamadas al sistema y muchas otras..

Cada instalación de Windows tendrá al menos dos versiones diferentes de CRT instaladas. Una máquina Vista SP2 recién construida a través de Windows 10 tendrá las versiones 8.0 y 9.0 (VC 2005 y VC 2008, respectivamente) presentes. Cuando se instala un software adicional, también puede incluir versiones más recientes de los tiempos de ejecución, dependiendo de la versión de Visual C ++ que se utilizó para crear el programa o cualquiera de sus componentes..

Errores de tiempo de ejecución

Cuando se encuentra un error o una excepción en un fragmento de código, lo ideal es que se maneje tan pronto como sea posible en el procedimiento que se está ejecutando actualmente, y que se corrija o permita una falla elegante. Si el error no se maneja localmente, se pasa al código que llamó al código que se está ejecutando actualmente, y el proceso continúa hasta que se maneja la excepción. Si completa su ejecución hasta la parte superior de la cadena y aún no se maneja, generará un error de tiempo de ejecución como se ve arriba.

Cuando el usuario haga clic en el botón Aceptar, el proceso finalizará. Si el programa tiene un comportamiento de falla definido, como servicios críticos, o su estado de ejecución es monitoreado por otro proceso, puede reaparecer automáticamente. Esto es lo que está sucediendo en este caso. La pantalla se apaga cuando finaliza el proceso de explorer.exe, luego el escritorio vuelve cuando se reinicia el proceso de explorer.exe.

Aunque el mensaje de error anterior indica claramente que provino del proceso explorer.exe, no es probable que sea un problema con el mismo explorer.exe. Es mucho más probable que el culpable se encuentre en otro lugar, como una extensión de terceros que está siendo utilizada por Explorer.

Otras Consideraciones

Con la descripción de nuestro lector del problema anterior, hay un par de elementos adicionales que debemos tener en cuenta:

  • En el momento del bloqueo, Explorer estaba intentando, pero no pudo, rellenar la vista de lista.
  • La imposibilidad de acceder a las unidades después de que el escritorio haya reaparecido, puede indicar que otro proceso tiene uno o más de esos dispositivos bloqueados, lo que impide el acceso desde el proceso explorer.exe recién creado.
  • Corriendo sfc / scannow y obteniendo una lista de salud limpia, deja los recursos protegidos de Windows al final de la lista para su consideración. Otras causas son mucho más probables.

Los arreglos estan en

En este caso particular, hay tres áreas en las que buscaría una solución. El primero involucra el servicio de búsqueda de Windows, el segundo involucra la investigación de extensiones de shell y el último sería los redistribuibles de VC ++..

Búsqueda de Windows

Debido a que la captura de pantalla original muestra que el bloqueo se produce cuando Explorer intenta rellenar la vista de lista, es posible que el servicio de búsqueda de Windows esté bloqueando el acceso a los recursos necesarios. He visto que esto sucede cuando el servicio falla y no tiene los parámetros de reinicio correctos.

prensa Win + R> tipo services.msc> OK para iniciar la consola de gestión con el módulo de servicios. Desplácese hasta Búsqueda de Windows y haga doble clic en la entrada para abrir el cuadro de diálogo Propiedades. Asegúrese de que la configuración en la pestaña Recuperación coincida con la imagen de abajo.

El problema más común es el “Reinicie el servicio después de:” ajuste. Este error ocurre frecuentemente cuando esta configuración es diferente de cero..

Extensiones de Shell problemáticas

Descargue ShellExView de Nirsoft para la arquitectura de su sistema (x86 o x64), instálelo y ejecútelo. Tomará un poco de tiempo examinar el sistema y llenar la tabla con datos. Desplácese hasta la columna Hora de modificación de CLSID y haga clic en el encabezado para ordenar en este campo. Si desea excluir los módulos provistos por Microsoft, puede ir a Opciones> Ocultar todas las extensiones de Microsoft. Para aquellos que usan una versión de Windows de 64 bits, es posible que también desee mostrar las extensiones de 32 bits en el sistema yendo a Opciones> Mostrar extensiones de shell de 32 bits.

Busque las extensiones que se agregaron justo antes de que comenzaran los síntomas. Seleccione uno o más y presione F7 o ir a Archivo> Desactivar elementos seleccionados, o haga clic en el icono de LED rojo en la barra de herramientas. Idealmente, esto debería hacerse uno a la vez.

Prueba para ver si los síntomas persisten. Si lo hacen, puede volver a habilitar las extensiones deshabilitadas anteriormente usando F8, Archivo> Habilitar elementos seleccionados, o el icono de la barra de herramientas LED verde. Desde aquí, deshabilite una extensión diferente y repita el proceso de prueba hasta que encuentre la que causa el problema.

Reparar / Reinstalar Redistribuibles VC ++

Uso este como último recurso, si solo un programa está eliminando errores. Si tiene varios programas que tienen problemas con los errores de tiempo de ejecución de VC ++, es posible que desee probar esto primero.

Al mirar los programas instalados en mi sistema (Panel de control> Programas y características), muestra todas las versiones de los paquetes redistribuibles (y algunas de sus actualizaciones) que van desde la versión 8 hasta la versión 12 (VC ++ 2005 hasta VC ++ 2013). Los tengo instalados debido a las herramientas de programación de Microsoft que uso. La mayoría de los usuarios no tendrán todos estos.

Puede encontrar las últimas descargas para versiones compatibles de Visual C ++ de Microsoft. Para nuestros propósitos aquí, solo necesita preocuparse por aquellos que están etiquetados como “redistribuible” paquetes Los enlaces que se clasifican como paquetes de servicio son para las herramientas de programación, no simplemente los tiempos de ejecución. Solo necesitará los que están actualmente listados en los programas instalados en su sistema. Instalar otras versiones no ayudará en este caso. Los usuarios de sistemas operativos de 64 bits pueden necesitar las versiones x86 y x64 del CRT.

Windows Update comprueba si su computadora tiene instaladas las actualizaciones más recientes para estos paquetes, pero no verifica que esté correctamente instalada y no se haya roto. Los instaladores pueden verificar que todos los archivos de tiempo de ejecución sean los correctos y que todas las entradas de registro sean correctas.

Una vez que haya descargado los instaladores apropiados, ejecútelos en el sistema. Las versiones de 2005 le pedirán que acepte un acuerdo de licencia antes de volver a instalar el paquete. Todos los demás tienen una GUI que le preguntará si desea reparar o desinstalar la instalación existente. En la mayoría de los casos, una operación de reparación solucionará cualquier problema.

Si desea probar el método más extremo, puede desinstalar los tiempos de ejecución, reiniciar la máquina y luego reinstalarlos. No recomiendo este método con los tiempos de ejecución de 2005 y 2008. Sin ellos, Windows generará muchos errores y una gran funcionalidad no estará disponible cuando reinicies.

Conclusión

Con un poco de observación, un toque de prueba y error, y una cierta comprensión de cómo se generan los errores de los tiempos de ejecución en el sistema, los problemas de software se pueden encontrar y resolver sin recurrir a herramientas y registros de depuración complicados.

¿Te has encontrado con errores de tiempo de ejecución en tu sistema? ¿Qué se requería para resolverlos? Déjame saber abajo en los comentarios.

Explore más acerca de: Explorador de archivos, Solución de problemas, Windows, Explorador de Windows, Búsqueda de Windows.