Hoe u Windows Visual C++ runtime-fouten kunt herstellen

Hoe u Windows Visual C++ runtime-fouten kunt herstellen

Gedeelde bibliotheken in Windows maken het programmeren veel efficiënter voor de programmeur die niet elke keer het wiel opnieuw hoeft uit te vinden als hij een veelvoorkomende taak moet uitvoeren. Ze maken het ook gemakkelijker om beveiligingslekken in gedeelde code te dichten wanneer ze worden gevonden, omdat het op minder plaatsen moet worden gepatcht en niet vereist dat elke toepassing opnieuw wordt gecompileerd.





Ondanks deze positieve aspecten kunnen ze hun eigen problemen veroorzaken bij het oplossen van de hoofdoorzaak van foutmeldingen die ze kunnen genereren.





De vraag van onze lezer:

Hoe los ik een Windows Vista 32-bit C:Windowsexplorer.exe-probleem op een Dell Inspiron 530 op?





Nadat ik op de knop OK heb geklikt in het dialoogvenster dat wordt weergegeven in de schermafbeelding, wordt het scherm zwart en keert het terug naar normaal, maar ik krijg geen toegang tot de C-, D- en soms de E-schijf wanneer ik probeer ze te openen van Mijn Computer.

Rennen sfc /scannow vindt geen fouten. Ik heb updates gedownload van zowel de Dell- als de Microsoft-website om dit probleem op te lossen. Ik heb ook het Microsoft Visual C++ 2010 Redistributable Package (x86) geïnstalleerd. De pc is volledig up-to-date volgens Windows Update.



Reactie van Bruce:

Opmerking: Discussies over Windows Verkenner in Windows 7 en eerdere versies zijn ook van toepassing op Verkenner in Windows 8 en latere versies. Als er een opmerkelijk verschil tussen beide is, wordt dit expliciet vermeld.

De Windows-shell

Windows Explorer is de shell en wordt uitgevoerd als het proces explorer.exe zoals te zien is in Taakbeheer of de Process Explorer van Sysinternals. Net als veel andere Windows-programma's is niet alle functionaliteit van de shell opgenomen in dat ene uitvoerbare bestand. Er zijn tientallen andere EXE- en DLL-bestanden die worden gebruikt om eigenschappenbladen, eigenschappenhandlers, preview-handlers, contextmenu's en vele andere elementen die u elke dag in Windows Verkenner gebruikt, te implementeren.





Uitbreidbare schaal

Shell-extensies stellen programmeurs in staat om eenvoudig functionaliteit aan Windows Verkenner toe te voegen door een DLL te schrijven om de taak uit te voeren en de DLL te registreren bij het besturingssysteem, zodat Explorer weet waar de code te vinden is om de taak uit te voeren. Bijvoorbeeld, 7-Zip voegt een submenu toe aan het standaard contextmenu, dat snelle toegang geeft tot archiefverwerkingstaken, Hard Disk Sentinel voegt pictogramoverlays toe aan de standaard schijfpictogrammen, zodat u de gezondheidsstatus van de schijf in één oogopslag kunt zien, en HashTabblad voegt een nieuw eigenschappenblad toe om hashes van het geselecteerde bestand te berekenen en weer te geven.

Veel van deze shell-uitbreidingen zijn geïmplementeerd als in-process Component Object Model (COM)-servers. Dit betekent dat wanneer een proces, in dit geval Windows Verkenner, de extensie gebruikt, het niet in Taakbeheer of Procesverkenner zal verschijnen als een afzonderlijk lopend proces met een eigen proces-ID (PID). In plaats daarvan wordt het uitgevoerd in het aanroepende proces explorer.exe.





Standaard proces met één instantie

Windows Verkenner is zo geschreven dat het als twee afzonderlijke processen kan worden uitgevoerd, maar in de standaardconfiguratie zal het slechts één exemplaar uitvoeren. Wanneer het voor het eerst wordt uitgevoerd als onderdeel van het opstartproces, wordt de Windows-bureaubladomgeving gemaakt. Door het opnieuw uit te voeren, wordt een nieuwe thread in het bestaande proces gemaakt, die het vertrouwde bestandsbeheervenster weergeeft, in plaats van een nieuw proces te starten.

Dit gedrag zorgt voor een kleinere geheugenvoetafdruk, maar kan ook zijn eigen kleine draai geven bij het oplossen van problemen. Een kritieke fout of onverwerkte uitzondering in code die wordt uitgevoerd in het proces explorer.exe, inclusief in-process-servers die door DLL's worden geleverd, zal ervoor zorgen dat de hele desktopomgeving ermee uitvalt.

In de meeste gevallen wordt het bureaubladproces automatisch opnieuw gestart. Als het niet opnieuw opstart, zou u nog steeds Ctrl-Shift-Esc moeten kunnen gebruiken om Taakbeheer te openen. Ga vanaf daar naar Bestand > Nieuwe taak (Uitvoeren...) > type explorer.exe > OK om het proces opnieuw te starten.

Met een simpele wijziging is dit te voorkomen. Open Windows Verkenner > Organiseren > Map- en zoekopties in Vista/7. Voor Windows 8 en hoger: open Verkenner > Beeld > Opties > Map wijzigen en zoekopties . Selecteer de Tabblad bekijken en check Start mapvensters in een apart proces .

hoe het wachtwoord van iemand te achterhalen

Als u deze instelling wijzigt, wordt uw bureaubladproces geïsoleerd van alle andere Windows Verkenner-vensters die u hebt geopend. Als een van die Explorer-vensters crasht, blijft uw bureaublad ongedeerd.

Microsoft Visual C++ Runtime-bibliotheek (CRT)

De Microsoft Visual C++ Runtime Library biedt routines voor het programmeren van Windows die veel taken automatiseren, zoals invoer/uitvoer, bestandsmanipulatie, geheugentoewijzing, systeemaanroepen en vele andere.

Op elke Windows-installatie zijn ten minste twee verschillende versies van de CRT geïnstalleerd. Een pas gebouwde Vista SP2 tot en met Windows 10 machine zal zowel versie 8.0 als 9.0 (respectievelijk VC 2005 en VC 2008) hebben. Wanneer aanvullende software is geïnstalleerd, kan deze ook recentere versies van de runtimes bevatten, afhankelijk van de versie van Visual C++ die is gebruikt om het programma of een van de onderdelen ervan te maken.

Runtime-fouten

Wanneer er een fout of uitzondering wordt aangetroffen in een stuk code, wordt deze idealiter zo snel mogelijk afgehandeld in de procedure die momenteel wordt uitgevoerd, en ofwel gecorrigeerd of een foutieve fout toestaan. Als de fout niet lokaal wordt afgehandeld, wordt deze doorgegeven aan de code die de code heeft aangeroepen die momenteel wordt uitgevoerd, en het proces gaat door totdat de uitzondering is afgehandeld. Als het zijn run naar de top van de keten voltooit en het nog steeds niet wordt afgehandeld, genereert het een runtime-fout zoals hierboven te zien is.

Wanneer de gebruiker op de knop OK klikt, wordt het proces beëindigd. Als het programma een bepaald foutgedrag heeft, zoals kritieke services, of als de uitvoeringsstatus wordt gecontroleerd door een ander proces, kan het automatisch opnieuw worden geactiveerd. Dit is wat er in dit geval gebeurt. Het scherm wordt zwart wanneer het proces explorer.exe wordt beëindigd en het bureaublad komt terug wanneer het proces explorer.exe opnieuw wordt gestart.

Hoewel de bovenstaande foutmelding duidelijk aangeeft dat het afkomstig is van het proces explorer.exe, is het waarschijnlijk geen probleem met explorer.exe zelf. Het is veel waarschijnlijker dat de boosdoener ergens anders ligt, zoals een extensie van derden die door Explorer wordt gebruikt.

Andere Overwegingen

Met de beschrijving van het bovenstaande probleem door onze lezer, zijn er een aantal extra punten waarmee we rekening moeten houden:

  • Op het moment van de crash probeerde Explorer de lijstweergave te vullen, maar dit lukte niet.
  • Het onvermogen om toegang te krijgen tot schijven nadat het bureaublad opnieuw is uitgezet, kan erop wijzen dat een of meer van die apparaten in een ander proces zijn vergrendeld, waardoor toegang van het nieuw gemaakte proces explorer.exe wordt voorkomen.
  • Rennen sfc /scannow en het krijgen van een schone gezondheidsverklaring, plaatst Windows-beveiligde bronnen ter overweging onderaan de lijst. Andere oorzaken zijn veel waarschijnlijker.

De oplossingen zijn binnen

In dit specifieke geval zijn er drie gebieden waar ik naar een oplossing zou zoeken. De eerste betreft de Windows Search-service, de tweede betreft het onderzoeken van shell-extensies en de laatste zijn de herdistribueerbare VC++-bestanden zelf.

Omdat de originele schermafbeelding de crash laat zien wanneer Explorer probeert de lijstweergave te vullen, is het mogelijk dat de Windows Search-service de toegang tot de vereiste bronnen blokkeert. Ik heb dit zien gebeuren wanneer de service crasht en niet de juiste herstartparameters heeft.

druk op Win+R > type services.msc > OK om de beheerconsole te starten met de services-module. Scrol omlaag naar Windows Search en dubbelklik op het item om het dialoogvenster Eigenschappen te openen. Zorg ervoor dat de instellingen op het tabblad Herstel overeenkomen met de onderstaande afbeelding.

Het meest voorkomende probleem is de instelling 'Service herstarten na:'. Deze fout treedt vaak op wanneer deze instelling niet nul is.

Problematische Shell-extensies

Downloaden ShellExView van Nirsoft voor uw systeemarchitectuur (x86 of x64), installeer en voer het uit. Het zal enige tijd duren om het systeem te onderzoeken en de tabel met gegevens te vullen. Blader naar de kolom CLSID Modified Time en klik op de kop om op dit veld te sorteren. Als u de door Microsoft geleverde modules wilt uitsluiten, gaat u naar: Opties > Alle Microsoft-extensies verbergen . Voor degenen die een 64-bits versie van Windows gebruiken, wilt u misschien ook de 32-bits extensies op het systeem weergeven door naar Opties > 32-bits Shell-extensies weergeven .

Zoek naar extensies die zijn toegevoegd net voordat de symptomen begonnen. Selecteer een of meer en druk op F7 of ga naar Bestand > Geselecteerde items uitschakelen , of klik op het rode LED-pictogram in de werkbalk. Idealiter zou dit één voor één moeten gebeuren.

Test om te zien of de symptomen aanhouden. Als dit het geval is, kunt u de eerder uitgeschakelde extensie(s) opnieuw inschakelen met F8 , Bestand > Geselecteerde items inschakelen , of het groene LED-werkbalkpictogram. Schakel vanaf hier een andere extensie uit en herhaal het testproces totdat u degene vindt die het probleem veroorzaakt.

VC++ Redistributables repareren/opnieuw installeren

Ik gebruik deze als laatste redmiddel, als er maar één programma fouten weggooit. Als je meerdere programma's hebt die problemen hebben met VC++ runtime-fouten, wil je dit misschien eerst proberen.

Als ik kijk naar de geïnstalleerde programma's op mijn systeem ( Configuratiescherm > Programma's en onderdelen ), toont het elke versie van de herdistribueerbare pakketten (en sommige van hun updates), variërend van versie 8 tot versie 12 (VC++ 2005 tot en met VC++ 2013). Ik heb ze geïnstalleerd vanwege de Microsoft-programmeertools die ik gebruik. De meeste gebruikers zullen deze niet allemaal hebben.

Je vindt de nieuwste downloads voor ondersteunde versies van Visual C++ van Microsoft. Voor onze doeleinden hier hoeft u zich alleen zorgen te maken over die pakketten die zijn gelabeld als 'herdistribueerbare' pakketten. Links die zijn geclassificeerd als servicepacks zijn voor de programmeertools, niet alleen voor de runtimes. U hebt alleen de programma's nodig die momenteel worden vermeld in de geïnstalleerde programma's op uw systeem. Het installeren van andere versies zal in dit geval niet helpen. Gebruikers van 64-bits besturingssystemen hebben mogelijk zowel de x86- als de x64-versie van de CRT nodig.

Windows Update controleert of op uw computer de nieuwste updates voor deze pakketten zijn geïnstalleerd, maar controleert niet of deze correct is geïnstalleerd en niet defect is. De installatieprogramma's kunnen controleren of alle runtime-bestanden de juiste zijn en dat alle registervermeldingen correct zijn.

Nadat u de juiste installatieprogramma's hebt gedownload, voert u deze op het systeem uit. De 2005-versies zullen u vragen om een ​​licentieovereenkomst te accepteren voordat u het pakket opnieuw installeert. Alle anderen hebben een GUI die u zal vragen of u de bestaande installatie wilt repareren of verwijderen. In de meeste gevallen zal een reparatie alle problemen oplossen.

Als u de meest extreme methode wilt proberen, kunt u de runtimes verwijderen, de machine opnieuw opstarten en vervolgens opnieuw installeren. Ik raad deze methode niet aan met de runtimes van 2005 en 2008. Zonder deze zal Windows veel fouten genereren en zal veel functionaliteit er niet voor u zijn wanneer u opnieuw opstart.

Conclusie

Met een beetje observatie, een beetje vallen en opstaan ​​en enig begrip van hoe fouten worden gegenereerd door runtimes op het systeem, kunnen softwareproblemen worden gevonden en opgelost zonder toevlucht te nemen tot ingewikkelde foutopsporingstools en logboeken.

Bent u runtime-fouten op uw systeem tegengekomen? Wat was er nodig om ze op te lossen? Laat het me weten in de reacties hieronder.

Deel Deel Tweeten E-mail Dit is waarom de FBI een waarschuwing heeft afgegeven voor Hive Ransomware

De FBI waarschuwde voor een bijzonder vervelende vorm van ransomware. Dit is waarom je extra op je hoede moet zijn voor Hive-ransomware.

Lees volgende
Gerelateerde onderwerpen
  • ramen
  • Technologie uitgelegd
  • Vraag het aan de experts
  • Windows Explorer
  • ramen
  • Verkenner
  • Windows Zoeken
  • Probleemoplossen
Over de auteur Bruce Epper(13 artikelen gepubliceerd)

Bruce speelt al met elektronica sinds de jaren '70, computers sinds het begin van de jaren '80, en beantwoordt nauwkeurig vragen over technologie die hij de hele tijd niet heeft gebruikt of gezien. Hij ergert zich ook door te proberen gitaar te spelen.

Meer van Bruce Epper

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren