Cómo reparar errores en tiempo de ejecución de Visual C ++ de Windows

Cómo reparar errores en tiempo de ejecución de Visual C ++ de Windows

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 hacen que sea más fácil tapar los agujeros de seguridad en el código compartido cuando se encuentran, ya que es necesario parchearlo en menos lugares y no es necesario volver a compilar todas las aplicaciones.





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





Pregunta de nuestro lector:

¿Cómo puedo solucionar un problema C: Windows explorer.exe de Windows Vista de 32 bits en una 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 unidad C, D y, en ocasiones, a la unidad E cuando intente acceder a ellos. desde Mi PC.

Corriendo sfc / scannow no encuentra ningún error. Descargué actualizaciones de los sitios web de Dell y Microsoft para intentar solucionar este problema. También instalé 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 existe 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 el Explorador de procesos de Sysinternals. Como 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 que se utilizan para implementar hojas de propiedades, controladores de propiedades, controladores de vista previa, menús contextuales y muchos otros elementos que utiliza en el Explorador de Windows todos los días.





Carcasa 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, para que Explorer sepa dónde encontrar el código para realizar la tarea. Por ejemplo, 7 cremalleras agrega un submenú al menú contextual estándar, lo que brinda acceso rápido a las tareas de manejo de archivos, Hard Disk Sentinel agrega íconos superpuestos a los íconos de la unidad estándar, para que pueda ver el estado de la unidad de un vistazo, y HashTab agrega una nueva hoja de propiedades para calcular y mostrar los valores hash 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 el Explorador de procesos como un proceso en ejecución independiente con su propio identificador de proceso (PID). En su lugar, se está ejecutando dentro del proceso de llamada explorer.exe.





Proceso de instancia única predeterminado

El Explorador de Windows está escrito para que pueda ejecutarse como dos procesos separados, pero, en su configuración predeterminada, solo ejecutará una única instancia. Cuando se ejecuta por primera vez como parte del proceso de inicio, crea el entorno de escritorio de Windows. Ejecutarlo nuevamente crea un nuevo hilo en el proceso existente, que muestra la ventana familiar de administración de archivos, 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, provocará que todo el entorno de escritorio se caiga.

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. A partir de ahí, ve a Archivo> Nueva tarea (Ejecutar…)> escribe explorer.exe> ​​Aceptar para reiniciar el proceso.

Esto se puede evitar con un simple cambio. Abierto Explorador de Windows> Organizar> Opciones de carpeta y búsqueda en Vista / 7. Para Windows 8 y posterior, abra Explorador de archivos> Ver> Opciones> Cambiar carpeta y opciones de búsqueda . Selecciona el Ver pestaña y comprobar Lanzar ventanas de carpetas en un proceso separado .

¿Qué significa este emoji?

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 del Explorador se bloquea, su escritorio permanecerá ileso.

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

La biblioteca en tiempo de ejecución de Microsoft Visual C ++ 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 del CRT instaladas. Una máquina Vista SP2 a Windows 10 recién construida tendrá tanto la versión 8.0 como la 9.0 (VC 2005 y VC 2008, respectivamente) presentes. Cuando se instala software adicional, también puede incluir versiones más recientes de los tiempos de ejecución, según la versión de Visual C ++ que se utilizó para crear el programa o cualquiera de sus componentes.

Errores en 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 se corregirá o permitirá una falla ordenada. 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 hace clic en el botón Aceptar, el proceso terminará. 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 oscurece cuando finaliza el proceso explorer.exe, luego el escritorio vuelve cuando se reinicia el proceso explorer.exe.

Aunque el mensaje de error anterior indica claramente que proviene del proceso explorer.exe, no es probable que sea un problema con explorer.exe en sí. Es mucho más probable que el culpable esté en otra parte, 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 intentaba, pero no podía, completar 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 obtener un certificado de buena salud, deja los recursos protegidos de Windows al final de la lista para su consideración. Otras causas son mucho más probables.

Las correcciones están 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ían los propios redistribuibles de VC ++.

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

prensa Win + R> escribe services.msc> Aceptar para iniciar la consola de gestión con el módulo de servicios. Desplácese hacia abajo 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 a continuación.

El problema más común es la configuración 'Reiniciar el servicio después de:'. Este error ocurre con frecuencia cuando esta configuración no es cero.

Extensiones de carcasa problemáticas

Descargar 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 CLSID Modified Time y haga clic en el encabezado para ordenar en este campo. Si desea excluir los módulos proporcionados 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 extensiones que se agregaron justo antes de que comenzaran los síntomas. Seleccione uno o más y presione F7 o ir a Archivo> Deshabilitar elementos seleccionados , o haga clic en el icono de LED rojo en la barra de herramientas. Idealmente, esto debería hacerse de uno en uno.

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

Reparar / reinstalar los redistribuibles de VC ++

Utilizo 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) desde la versión 8 hasta la versión 12 (VC ++ 2005 a VC ++ 2013). Los tengo instalados debido a las herramientas de programación de Microsoft que utilizo. La mayoría de los usuarios no tendrán todos estos.

Puedes encontrar el descargas más recientes para las versiones compatibles de Visual C ++ de Microsoft. Para nuestros propósitos aquí, solo debe preocuparse por aquellos que están etiquetados como paquetes 'redistribuibles'. Los enlaces que se clasifican como paquetes de servicios son para las herramientas de programación, no simplemente para los tiempos de ejecución. Solo necesitará los que se enumeran actualmente en los programas instalados en su sistema. La instalación de 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 verifica si su computadora tiene instaladas las últimas actualizaciones para estos paquetes, pero no verifica para asegurarse de que esté correctamente instalado y no se haya dañado. Los instaladores pueden verificar que todos los archivos en tiempo de ejecución sean los correctos y que todas las entradas del registro sean correctas.

Una vez que haya descargado los instaladores adecuados, ejecútelos en el sistema. Las versiones de 2005 le pedirán que acepte un acuerdo de licencia antes de reinstalar 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 cantidad de funciones no estarán disponibles cuando reinicie.

Conclusión

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

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

Cuota Cuota Pío Correo electrónico He aquí por qué el FBI emitió una advertencia sobre el ransomware Hive

El FBI emitió una advertencia sobre una variedad de ransomware particularmente desagradable. He aquí por qué debe tener especial cuidado con el ransomware Hive.

Leer siguiente
Temas relacionados
  • Ventanas
  • Tecnología explicada
  • Pregunte a los expertos
  • Explorador de Windows
  • Ventanas
  • Explorador de archivos
  • Búsqueda de Windows
  • Solución de problemas
Sobre el Autor Bruce Epper(13 Artículos publicados)

Bruce ha estado jugando con la electrónica desde los años 70, las computadoras desde principios de los 80 y respondiendo con precisión preguntas sobre tecnología que no ha usado ni visto en todo el tiempo. También se molesta al intentar tocar la guitarra.

Más de Bruce Epper

Suscríbete a nuestro boletín

¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!

Haga clic aquí para suscribirse