Windows Visual C ++ Runtime-fouten repareren

Visual C ++ fouten zijn een veel voorkomend probleem voor Windows-gebruikers. Maar weet je hoe je ze kunt repareren?

Visual C ++ fouten zijn een veel voorkomend probleem voor Windows-gebruikers.  Maar weet je hoe je ze kunt repareren?
Advertentie

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

Ondanks deze positieve aspecten, kunnen ze hun eigen problemen stellen bij het oplossen van de oorzaak van foutmeldingen die ze kunnen genereren.

De vraag van onze lezer:

Hoe repareer ik een Windows Vista 32-bit C: \ Windows \ explorer.exe probleem op een Dell Inspiron 530?

Nadat u op de knop OK in het dialoogvenster in de schermafbeelding hebt geklikt, wordt het scherm zwart en keert het terug naar normaal, maar het zal mij niet toestaan ​​om toegang te krijgen tot de C-, D- en soms E-schijf van mijn computer.

Het uitvoeren van sfc / scannow vindt geen fouten. Ik heb updates gedownload van zowel de Dell- als Microsoft-websites die dit probleem probeerden op te lossen. Ik heb ook het herdistribueerbare pakket Microsoft Visual C ++ 2010 (x86) geïnstalleerd. De pc is volledig up-to-date volgens Windows Update.

runtime-error

Bruce's Antwoord:

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

De Windows-shell

Windows Verkenner is de shell en wordt uitgevoerd als het proces explorer.exe zoals te zien is in Taakbeheer of de Procesverkenner Process Explorer van Sysinternals - De meest krachtige taakverzamelaar vervangen [Windows] Verwerkingsverkenner - De meest krachtige taakverrekening vervangen [Windows] Laten we eerlijk zijn, Windows Taakbeheer is niet zo geweldig voor het begrijpen en beheren van de processen die op uw computer worden uitgevoerd. Zelfs op Windows 8, waar het sterk verbeterd is, kan de task manager niet in de buurt komen van de ... Lees meer. Net als veel andere Windows-programma's is alle functionaliteit van de shell niet opgenomen in dat ene uitvoerbare bestand. Er zijn tientallen andere EXE- en DLL-bestanden Hoe kan het probleem met ontbrekende DLL-bestandsfouten worden opgelost Hoe kan het probleem met ontbrekende DLL-bestandsfouten worden opgelost? Lees meer bij het implementeren van eigenschappenbladen, eigenschapshandlers, preview-handlers, contextmenu's en vele andere elementen die u in Windows Verkenner gebruikt. dag.

Extensible Shell

Shell-uitbreidingen stellen programmeurs in staat om eenvoudig functionaliteit aan Windows Explorer toe te voegen door een DLL te schrijven om de taak uit te voeren en het DLL-bestand met het besturingssysteem te registreren, zodat Explorer weet waar de code moet worden gevonden om de taak uit te voeren. Bijvoorbeeld 7-Zip Hoe bestanden uit ZIP, RAR, 7z en andere gemeenschappelijke archieven uit te pakken Hoe bestanden uit ZIP, RAR, 7z en andere gemeenschappelijke archieven uit te pakken Heeft u ooit een .rar bestand gezien en vroeg u zich af hoe u het moet openen? Gelukkig is het beheer van ZIP-bestanden en andere gecomprimeerde archieven eenvoudig met de juiste tools. Dit is wat je moet weten. Lees meer voegt een submenu toe aan het standaard contextmenu, geeft snel toegang tot taken voor archieptaken, Harde schijf Sentinel Houd een oogje op uw harde schijf & SSD Gezondheid met harde schijf Sentinel Houd uw HDD & SSD in de gaten met de harde schijf Sentinel Heeft u ooit een schijffout gehad? Helaas is er geen wondermiddel voor het voorkomen van hardwareschade. Maar het bewaken van je HDD of SSD, om te handelen wanneer hun dood waarschijnlijk wordt, is een eerste stap. Met Meer informatie voegt u pictogramoverlays toe aan de standaard stationspictogrammen, zodat u de status van de schijf in één oogopslag kunt zien en HashTab voegt een nieuw eigenschappenblad toe om de hashes van het geselecteerde bestand te berekenen en weer te geven.

context-menu

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

Standaard Single-Instance-proces

Windows Explorer is zodanig geschreven dat het als twee afzonderlijke processen kan worden uitgevoerd, maar - in de standaardconfiguratie - slechts één exemplaar uitvoert. Wanneer het voor het eerst wordt uitgevoerd als onderdeel van het opstartproces, wordt de Windows-bureaubladomgeving gemaakt. Als u het opnieuw uitvoert, wordt een nieuwe thread in het bestaande proces gemaakt, waarin het vertrouwde venster voor bestandsbeheer wordt weergegeven in plaats van een nieuw proces te starten.

Dit gedrag staat een verminderde geheugenvoetafdruk toe, maar kan ook een eigen draai geven bij het oplossen van problemen. Een kritieke fout of een niet-afgehandelde uitzondering in de code die wordt uitgevoerd in het proces explorer.exe, inclusief in-process-servers die door DLL's worden geleverd, zorgt ervoor dat de volledige desktopomgeving ermee vervalt.

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 Task Manager te openen. Ga vanaf daar naar Bestand> Nieuwe taak (Uitvoeren ...)> typ explorer.exe> ​​OK om het proces opnieuw te starten.

Dit kan worden voorkomen met een eenvoudige wijziging. Open Windows Verkenner> Organiseren> Map- en zoekopties in Vista / 7. Voor Windows 8 en hoger opent u File Explorer> Beeld> Opties> Map wijzigen en zoekopties . Selecteer het tabblad Weergave en vink Venster startvensters starten in een apart proces aan .

folder opties

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

Microsoft Visual C ++ Runtime Library (CRT)

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

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

Runtime-fouten

Wanneer er een fout of uitzondering in een stuk code wordt aangetroffen, wordt dit idealiter zo snel mogelijk afgehandeld in de momenteel uitgevoerde procedure en wordt deze gecorrigeerd of zorgt u voor een sierlijke fout. Als de fout niet lokaal wordt afgehandeld, wordt deze doorgegeven aan de code die de momenteel uitgevoerde code heeft genoemd, en gaat het proces door totdat de uitzondering is afgehandeld. Als de run naar de bovenkant van de keten is voltooid en deze nog steeds niet wordt afgehandeld, genereert deze een runtime-fout zoals hierboven is weergegeven.

Wanneer de gebruiker op de knop OK klikt, wordt het proces beëindigd. Als het programma een gedefinieerd foutgedrag heeft, zoals kritieke services, of als de run-status wordt gecontroleerd door een ander proces, kan dit automatisch worden respawnen. Dit is wat er gebeurt in dit geval. Het scherm wordt zwart wanneer het proces explorer.exe wordt beëindigd, waarna het bureaublad wordt weergegeven wanneer het proces explorer.exe opnieuw wordt gestart.

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

Andere Overwegingen

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

  • Op het moment van de crash probeerde Explorer, maar niet in staat om de lijstweergave te vullen.
  • Het onvermogen om toegang te krijgen tot stations nadat het bureaublad opnieuw is ingesteld, kan betekenen dat een ander proces een of meer van die apparaten heeft vergrendeld, waardoor toegang wordt voorkomen vanaf het nieuw gemaakte proces explorer.exe.
  • Het uitvoeren van sfc / scannow en het verkrijgen van een schone gezondheidsverklaring, zet Windows beschermde bronnen onder de lijst voor overweging. Andere oorzaken zijn veel waarschijnlijker.

De oplossingen zijn in

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

Windows Zoeken

Omdat de originele schermafbeelding de crash toont die optreedt 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 over de juiste herstartparameters beschikt.

Druk op Win + R> type services.msc> OK om de beheerconsole te starten met de servicesmodule. Blader naar Windows Search en dubbelklik op het item om het dialoogvenster Eigenschappen te openen. Zorg ervoor dat de instellingen op het tabblad Herstellen overeenkomen met de afbeelding hieronder.

windows-search-eigenschappen

Het meest voorkomende probleem is de instelling "Herstarten na:". Deze fout treedt vaak op als deze instelling niet nul is.

Problematische Shell-uitbreidingen

Download ShellExView van Nirsoft voor uw systeemarchitectuur (x86 of x64), installeer en voer het uit. Het kost wat tijd om het systeem te onderzoeken en de tabel met gegevens te vullen. Blader naar de kolom CLSID Gewijzigde tijd en klik op de koptekst om in dit veld te sorteren. Als u de modules van Microsoft 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-uitbreidingen weergeven te gaan .

Zoek naar extensies die zijn toegevoegd vlak 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 moet dit een voor een worden gedaan.

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 pictogram met de groene LED-werkbalk. Schakel vanaf hier een andere extensie uit en herhaal het testproces tot u degene vindt die het probleem veroorzaakt.

Repareer / herinstalleer VC ++ Redistributables

Ik gebruik deze als laatste redmiddel, als maar één programma fouten uitschakelt. Als u meerdere programma's hebt die problemen hebben met VC ++ runtime-fouten, wilt u 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 enkele van hun updates), variërend van versie 8 tot versie 12 (VC ++ 2005 tot VC ++ 2013). Ik heb ze geïnstalleerd vanwege de Microsoft-programmeertools die ik gebruik. De meeste gebruikers zullen dit niet allemaal hebben.

geïnstalleerde vCPP-redist

U kunt de nieuwste downloads vinden voor ondersteunde versies van Visual C ++ van Microsoft. Voor onze doeleinden hier hoeft u zich alleen bezig te houden met die die worden aangeduid als 'herdistribueerbare' pakketten. Links die worden geclassificeerd als servicepacks zijn bedoeld voor de programmeertools en niet alleen voor de runtimes. U hebt alleen diegene 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 er wordt niet gecontroleerd of deze correct is geïnstalleerd en niet is verbroken. De installatieprogramma's kunnen controleren of alle runtime-bestanden de juiste zijn en alle registervermeldingen correct zijn.

Nadat u de juiste installatieprogramma's hebt gedownload, voert u ze uit op het systeem. In de 2005-versies wordt u gevraagd 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 de-installeren. In de meeste gevallen zal een reparatie het probleem oplossen.

Als u de meest extreme methode wilt uitproberen, kunt u de runtimes verwijderen, de machine opnieuw opstarten en ze vervolgens opnieuw installeren. Ik raad deze methode niet aan met de runtimes 2005 en 2008. Zonder hen zal Windows veel fouten genereren en een groot deel van de functionaliteit zal er niet voor u zijn als 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 gebruik te maken van gecompliceerde tools en logbestanden voor foutopsporing.

Heb je runtime-fouten tegengekomen op je systeem? Wat was nodig om ze op te lossen? Laat het me weten in de reacties hieronder.

In this article