Com corregir els errors en temps d'execució de Windows Visual C ++

Com corregir els errors en temps d'execució de Windows Visual C ++

Les biblioteques compartides de Windows fan que la programació sigui molt més eficient per al programador que no necessita reinventar la roda cada vegada que necessita realitzar una tasca comuna. També faciliten la connexió de forats de seguretat al codi compartit quan es troben, ja que s’ha de corregir en menys llocs i no requereix que es recompilin totes les aplicacions.





Tot i aquests aspectes positius, poden plantejar-se els seus propis problemes en intentar solucionar la causa arrel dels missatges d'error que poden generar.





Pregunta del nostre lector:

Com puc solucionar un problema de Windows Vista C: Windows explorer.exe de 32 bits en un Dell Inspiron 530?





Després de fer clic al botó D'acord al quadre de diàleg que es mostra a la captura de pantalla, la pantalla s'enfosqueix i tornarà a funcionar normalment, però no em permetrà accedir a la unitat C, D i, de vegades, a la unitat E quan intenti accedir-hi de El meu ordinador.

Córrer sfc / scannow no troba cap error. He descarregat actualitzacions tant dels llocs web de Dell com de Microsoft intentant solucionar aquest problema. També he instal·lat el paquet redistribuïble de Microsoft Visual C ++ 2010 (x86). El PC està completament actualitzat segons Windows Update.



Resposta de Bruce:

Nota: Els debats sobre l'Explorador de Windows al Windows 7 i versions anteriors també s'apliquen a l'Explorador de fitxers al Windows 8 i versions posteriors. Si hi ha una diferència notable entre ells, s’indicarà explícitament.

El Windows Shell

Explorador de Windows és l'intèrpret d'ordres i s'executa com el procés explorer.exe tal com es veu al Gestor de tasques o a l'Explorador de processos de Sysinternals. Com molts altres programes de Windows, totes les funcionalitats proporcionades per l'intèrpret d'ordres no s'incorporen a aquest únic fitxer executable. Hi ha dotzenes d'altres fitxers EXE i DLL que s'utilitzen per implementar fulls de propietats, controladors de propietats, controladors de previsualització, menús contextuals i molts altres elements que utilitzeu a l'Explorador de Windows cada dia.





Shell extensible

Les extensions de l'intèrpret d'ordres permeten als programadors afegir fàcilment funcionalitats a l'Explorador de Windows escrivint una DLL per realitzar la tasca i registrant la DLL al sistema operatiu, de manera que l'Explorer sap on trobar el codi per realitzar la tasca. Per exemple, 7-Cremallera afegeix un submenú al menú contextual estàndard, que proporciona accés ràpid a les tasques de manipulació d’arxius, Hard Disk Sentinel afegeix superposicions d’icones a les icones estàndard de la unitat, de manera que pugueu veure l’estat de salut de la unitat d’ull i HashTab afegeix un nou full de propietats per calcular i mostrar els hash del fitxer seleccionat.

Moltes d’aquestes extensions d’intèrpret d’ordres s’implementen com a servidors COM (Component Object Model). Això vol dir que quan un procés, en aquest cas l'Explorador de Windows, utilitza l'extensió, no apareixerà al Gestor de tasques ni a l'Explorador de processos com un procés en execució independent amb el seu propi identificador de procés (PID). En el seu lloc, s’està executant dins del procés de crida explorer.exe.





Procés per instància única per defecte

L'explorador de Windows està escrit per poder executar-se com a dos processos diferents, però, en la seva configuració predeterminada, només executarà una única instància. Quan s’executa per primera vegada com a part del procés d’inici, crea l’entorn d’escriptori del Windows. Executar-lo de nou es crea un nou fil en el procés existent, que mostra la finestra de gestió de fitxers coneguda, en lloc d'iniciar un procés nou.

Aquest comportament permet reduir la petjada de memòria, però també pot produir un petit gir quan es resolen problemes. Un error crític o una excepció no gestionada en el codi que s’executa en el procés explorer.exe, inclosos els servidors en procés proporcionats per les DLL, provocarà que tot l’entorn de l’escriptori en surti.

En la majoria dels casos, el procés de l’escriptori es reiniciarà automàticament. Si no es reinicia, hauríeu de poder utilitzar Ctrl-Maj-Esc per obrir el Gestor de tasques. Des d'allà, aneu a Fitxer> Nova tasca (Executa ...)> tipus explorer.exe> ​​D'acord per reiniciar el procés.

Això es pot evitar amb un simple canvi. Obert Windows Explorer> Organitza> Carpeta i opcions de cerca a Vista / 7. Obriu el Windows 8 i versions posteriors Explorador de fitxers> Visualitza> Opcions> Canvia la carpeta i les opcions de cerca . Seleccioneu el fitxer Visualitza la pestanya i comprovar Inicieu les finestres de carpetes en un procés independent .

convertir la tauleta de Windows 10 a Android

El canvi d’aquest paràmetre aïlla el procés de l’escriptori de totes les altres finestres de l’Explorador de Windows que teniu obertes. Si alguna d'aquestes finestres de l'Explorador es bloqueja, l'escriptori quedarà il·lès.

Biblioteca de temps d'execució (CRT) de Microsoft Visual C ++

La biblioteca d’execució de Microsoft Visual C ++ proporciona rutines per programar Windows que automatitzen moltes tasques, com ara entrada / sortida, manipulació de fitxers, assignació de memòria, trucades al sistema i moltes altres.

Cada instal·lació de Windows tindrà instal·lades almenys dues versions diferents del CRT. Una màquina Vista SP2 acabada de construir mitjançant Windows 10 tindrà present tant la versió 8.0 com la 9.0 (VC 2005 i VC 2008, respectivament). Quan s’instal·la programari addicional, també pot incloure versions més recents dels temps d’execució, en funció de la versió de Visual C ++ que s’hagi utilitzat per crear el programa o qualsevol dels seus components.

Errors en temps d'execució

Quan es produeix un error o una excepció en un fragment de codi, l'ideal seria que es tracti el més aviat possible en el procediment d'execució actual i que es corregeixi o permeti un error elegant. Si l'error no es gestiona localment, es transmet al codi que ha cridat el codi en execució actual i el procés continua fins que es gestiona l'excepció. Si completa la seva carrera fins a la part superior de la cadena i encara no es gestiona, generarà un error en temps d'execució, tal com s'ha vist més amunt.

Quan l'usuari faci clic al botó D'acord, el procés finalitzarà. Si el programa té un comportament d'error definit, com ara serveis crítics, o el seu estat d'execució és supervisat per un altre procés, es pot tornar a generar automàticament. Això és el que està passant en aquest cas. La pantalla s’apaga quan es finalitza el procés explorer.exe i, després, es reinicia l’escriptori quan es reinicia el procés explorer.exe.

Tot i que el missatge d’error anterior indica clarament que prové del procés explorer.exe, és probable que no sigui un problema amb explorer.exe mateix. És molt més probable que el culpable es trobi en un altre lloc, com ara una extensió de tercers que Explorer utilitza.

Altres consideracions

Amb la descripció que el nostre lector fa del número anterior, hi ha un parell d’elements addicionals que hem de tenir en compte:

  • En el moment de l'accident, Explorer intentava, però no va poder, omplir la vista de llista.
  • La impossibilitat d’accedir a les unitats després que l’escriptori hagi tornat a aparèixer pot indicar que un altre procés té un o més d’aquests dispositius bloquejats, cosa que impedeix l’accés des del procés explorer.exe de nova creació.
  • Córrer sfc / scannow i obtenir un bon estat de salut, deixa els recursos protegits per Windows al final de la llista per tenir-los en compte. Altres causes són molt més probables.

Les correccions estan dins

En aquest cas concret, hi hauria tres àmbits en què buscaria una solució. El primer consisteix en el servei de cerca de Windows, el segon consisteix en investigar les extensions de l'intèrpret d'ordres i l'últim serien els propis redistribuïbles de VC ++.

Com que la captura de pantalla original mostra el bloqueig que es produeix quan Explorer intenta omplir la llista de visualitzacions, és possible que el servei de cerca de Windows bloquegi l'accés als recursos necessaris. He vist això succeir quan el servei falla i no té els paràmetres de reinici correctes.

Premeu Guanya + R> tipus services.msc> D'acord per iniciar la consola d'administració amb el mòdul de serveis. Desplaceu-vos cap avall fins a la cerca de Windows i feu doble clic a l'entrada per obrir el quadre de diàleg Propietats. Assegureu-vos que la configuració de la pestanya Recuperació coincideixi amb la imatge següent.

El problema més comú és el paràmetre 'Reinicia el servei després de:'. Aquest error es produeix sovint quan aquesta configuració és diferent de zero.

Extensions de Shell problemàtiques

descarregar ShellExView de Nirsoft per a l'arquitectura del sistema (x86 o x64), instal·leu-lo i executeu-lo. Passarà una mica de temps examinar el sistema i omplir la taula de dades. Desplaceu-vos fins a la columna CLSID Modified Time i feu clic a la capçalera per ordenar en aquest camp. Si voleu excloure els mòduls proporcionats per Microsoft, podeu anar a Opcions> Amaga totes les extensions de Microsoft . Per a aquells que utilitzen una versió de Windows de 64 bits, és possible que també vulgueu mostrar les extensions de 32 bits del sistema anant a Opcions> Mostra les extensions de Shell de 32 bits .

Cerqueu extensions que es van afegir just abans de començar els símptomes. Seleccioneu-ne un o més i premeu F7 o anar a Fitxer> Desactiva els elements seleccionats o bé feu clic a la icona del LED vermell de la barra d'eines. L’ideal seria fer-ho d’un en un.

Feu una prova per veure si els símptomes persisteixen. Si ho fan, podeu tornar a habilitar les extensions desactivades prèviament utilitzant F8 , Fitxer> Activa els elements seleccionats o la icona de la barra d'eines LED verda. A partir d’aquí, desactiveu una extensió diferent i repetiu el procés de prova fins que trobeu la que causa el problema.

Repareu / torneu a instal·lar els redistribuïbles de VC ++

L’utilitzo com a últim recurs, si només hi ha un programa que elimina els errors. Si teniu diversos programes que tenen problemes amb errors d'execució de VC ++, potser voldreu provar-ho primer.

Quan mireu els programes instal·lats al meu sistema ( Tauler de control> Programes i funcions ), mostra totes les versions dels paquets redistribuïbles (i algunes de les seves actualitzacions) que van des de la versió 8 fins a la versió 12 (VC ++ 2005 a VC ++ 2013). Els tinc instal·lats a causa de les eines de programació de Microsoft que faig servir. La majoria dels usuaris no en tindran tots.

Podeu trobar el descàrregues més recents per a versions compatibles de Visual C ++ de Microsoft. Per als nostres propòsits aquí, només cal que us preocupeu per aquells que estan etiquetats com a paquets 'redistribuïbles'. Els enllaços que es classifiquen com a paquets de serveis són per a les eines de programació, no només per a l'execució. Només necessitareu els que figuren actualment als programes instal·lats al vostre sistema. La instal·lació d'altres versions no ajudarà en aquest cas. Els usuaris de sistemes operatius de 64 bits poden necessitar les versions x86 i x64 del CRT.

Windows Update comprova si l’ordinador té instal·lades les darreres actualitzacions d’aquests paquets, però no comprova que s’instal·li correctament i que no s’hagi trencat. Els instal·ladors poden comprovar que tots els fitxers d'execució són els correctes i que totes les entrades del registre són correctes.

Un cop hàgiu descarregat els instal·ladors adequats, executeu-los al sistema. Les versions de 2005 us demanaran que accepteu un acord de llicència abans de tornar a instal·lar el paquet. Tots els altres tenen una GUI que us preguntarà si voleu reparar o desinstal·lar la instal·lació existent. En la majoria dels casos, una operació de reparació solucionarà qualsevol problema.

Si voleu provar el mètode més extrem, podeu desinstal·lar els temps d'execució, reiniciar la màquina i tornar-los a instal·lar. No recomano aquest mètode amb els temps d'execució de 2005 i 2008. Sense ells, el Windows generarà molts errors i una gran quantitat de funcionalitats no estaran disponibles per al vostre reinici.

Conclusió

Amb una mica d’observació, un toc d’assaig i error i una certa comprensió de com es generen els errors des dels temps d’execució del sistema, es poden trobar i resoldre problemes de programari sense recórrer a eines i registres de depuració complicats.

Us heu trobat amb errors en temps d'execució al vostre sistema? Què calia per solucionar-los? Feu-m'ho saber en els comentaris següents.

Compartir Compartir Tweet Correu electrònic A continuació s’explica per què l’FBI va emetre un advertiment per al ransomware Hive

L'FBI va emetre una advertència sobre una varietat de ransomware especialment desagradable. A continuació s’explica el motiu pel qual cal tenir especial compte amb el ransomware de Hive.

Llegiu a continuació
Temes relacionats
  • Windows
  • Tecnologia explicada
  • Pregunteu als experts
  • Explorador de Windows
  • Windows
  • Explorador de fitxers
  • Cerca de Windows
  • Resolució de problemes
Sobre l'autor Bruce Epper(13 articles publicats)

Bruce juga amb l’electrònica des dels anys 70, amb els ordinadors des de principis dels 80 i respon amb precisió a preguntes sobre tecnologia que no ha utilitzat ni ha vist durant tot el temps. També es molesta intentant tocar la guitarra.

Més de Bruce Epper

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us