Hur du åtgärdar Windows Visual C ++ körfel

Hur du åtgärdar Windows Visual C ++ körfel

Delade bibliotek i Windows gör programmeringen mycket effektivare för programmeraren som inte behöver uppfinna hjulet varje gång han behöver utföra en gemensam uppgift. De gör det också lättare att plugga in säkerhetshål i delad kod när de hittas eftersom det måste korrigeras på färre platser och inte kräver att varje applikation kompileras om.



Trots dessa positiva aspekter kan de ställa sina egna problem när de försöker felsöka grundorsaken till felmeddelanden de kan generera.



Vår läsares fråga:

Hur åtgärdar jag ett Windows Vista 32-bitars C: Windows explorer.exe-problem på en Dell Inspiron 530?





Efter att ha klickat på OK -knappen i dialogrutan som visas på skärmdumpen kommer skärmen att svarta ut och återgå till normal körning, men det tillåter mig inte att komma åt C, D och, ibland, E -enheten när jag försöker komma åt dem från Min dator.

Löpning sfc /scannow hittar inga fel. Jag laddade ner uppdateringar från både Dell och Microsofts webbplatser som försökte åtgärda detta problem. Jag har också installerat Microsoft Visual C ++ 2010 Redistributable Package (x86). Datorn är helt uppdaterad enligt Windows Update.



Bruce svar:

Obs! Diskussioner om Utforskaren i Windows 7 och tidigare versioner gäller också för Utforskaren i Windows 8 och senare versioner. Om det finns en märkbar skillnad mellan dem kommer det att uttryckligen anges.

Windows -skalet

Windows utforskaren är skalet och körs som explorer.exe -processen som visas i Aktivitetshanteraren eller Sysinternals Process Explorer. Liksom många andra Windows -program är all funktionalitet som skalet tillhandahåller inte inkorporerad i den enda körbara filen. Det finns dussintals andra EXE- och DLL -filer som används för att implementera egendomsark, fastighetshanterare, förhandsgranskningshanterare, snabbmenyer och många andra element som du använder i Utforskaren varje dag.

Utdragbart skal

Shell -tillägg gör det möjligt för programmerare att enkelt lägga till funktionalitet i Windows Explorer genom att skriva en DLL för att utföra uppgiften och registrera DLL: en med operativsystemet, så att Explorer vet var de ska hitta koden för att utföra uppgiften. Till exempel, 7-dragkedja lägger till en undermeny till standardkontextmenyn, vilket ger snabb åtkomst till arkivhanteringsuppgifter, Hard Disk Sentinel lägger till ikonöverlagringar till standarddrevsikonerna, så att du snabbt kan se enhetens hälsostatus och HashTab lägger till ett nytt fastighetsblad för att beräkna och visa hascher för den valda filen.

Många av dessa skalförlängningar implementeras som COM-servrar (in-process Component Object Model). Det betyder att när en process, i det här fallet Windows Explorer, använder tillägget, kommer det inte att visas i Aktivitetshanteraren eller Processutforskaren som en separat körprocess med en egen processidentifierare (PID). Istället körs det inuti processen explorer.exe.

Standardprocess för en instans

Utforskaren i Windows är skriven för att kunna köras som två separata processer, men - i standardkonfigurationen - kommer den bara att köra en enda instans. När det först körs som en del av startprocessen skapar det skrivbordsmiljön i Windows. Genom att köra det igen skapas en ny tråd i den befintliga processen, som visar det välbekanta filhanteringsfönstret istället för att starta en ny process.

Detta beteende tillåter ett minskat minnesavtryck, men kan också ge sin egen lilla twist vid felsökning av problem. Ett kritiskt fel eller obehandlat undantag i kod som körs i explorer.exe-processen, inklusive servrar i processen som tillhandahålls av DLL-filer, kommer att få hela skrivbordsmiljön att gå ner med den.

I de flesta fall startas skrivbordsprocessen automatiskt om. Om den inte startar om ska du fortfarande kunna använda Ctrl-Shift-Esc för att öppna Aktivitetshanteraren. Därifrån, gå till Arkiv> Ny uppgift (Kör ...)> typ explorer.exe> ​​OK för att starta om processen.

Detta kan undvikas med en enkel förändring. Öppen Utforskaren i Windows> Organisera> Mapp och sökalternativ i Vista/7. För Windows 8 och senare, öppna Utforskare> Visa> Alternativ> Ändra mapp och sökalternativ . Välj Fliken Visa och kontrollera Starta mappfönster i en separat process .

hur man tar bort Windows 10 bloatware

Om du ändrar den här inställningen isoleras skrivbordsprocessen från alla andra Windows Explorer -fönster som du har öppet. Om något av dessa Explorer -fönster kraschar förblir skrivbordet oskadat.

Microsoft Visual C ++ Runtime Library (CRT)

Runtime -biblioteket i Microsoft Visual C ++ tillhandahåller rutiner för programmering av Windows som automatiserar många uppgifter, till exempel inmatning/utmatning, filmanipulation, minnesallokering, systemsamtal och många andra.

Varje Windows -installation kommer att ha minst två olika versioner av CRT installerat. En nybyggd Vista SP2 via Windows 10 -maskin kommer att ha både version 8.0 och 9.0 (VC 2005 respektive VC 2008). När ytterligare programvara är installerad kan den också innehålla nyare versioner av körtiden, beroende på vilken version av Visual C ++ som användes för att skapa programmet eller någon av dess komponenter.

Körtidsfel

När ett fel eller undantag uppstår i en kodbit, kommer det helst att hanteras så snart som möjligt i det för närvarande utförda förfarandet, och antingen korrigeras eller möjliggöra ett graciöst misslyckande. Om felet inte hanteras lokalt skickas det vidare till koden som kallade den exekverande koden, och processen fortsätter tills undantaget hanteras. Om den slutför sin körning till toppen av kedjan och den fortfarande inte hanteras, kommer det att generera ett körtidsfel enligt ovan.

När användaren klickar på OK -knappen avslutas processen. Om programmet har ett definierat felbeteende, till exempel kritiska tjänster, eller om dess körningsläge övervakas av en annan process, kan det återupptas automatiskt. Detta är vad som händer i det här fallet. Skärmen blir svart när explorer.exe -processen avslutas, sedan kommer skrivbordet tillbaka när explorer.exe -processen startas om.

Även om felmeddelandet ovan tydligt indikerar att det kom från explorer.exe -processen är det troligtvis inte ett problem med explorer.exe själv. Det är mycket mer troligt att den skyldige ligger någon annanstans, till exempel en tredjepartstillägg som används av Explorer.

Andra överväganden

Med vår läsares beskrivning av problemet ovan finns det ett par ytterligare saker som vi måste ta hänsyn till:

  • Vid kraschen försökte Explorer men lyckades inte fylla i listvyn.
  • Om du inte kan komma åt enheter efter att skrivbordet har återuppstått kan det tyda på att en eller flera av dessa enheter är låsta i en annan process, och därmed förhindras åtkomst från den nyskapade explorer.exe -processen.
  • Löpning sfc /scannow och får en ren hälsotillägg, tappar Windows -skyddade resurser till botten av listan för övervägande. Andra orsaker är mycket mer sannolika.

Fixerna är inne

I det här fallet finns det tre områden där jag skulle leta efter en lösning. Den första handlar om Windows Search -tjänsten, den andra handlar om att undersöka skalförlängningar, och den sista skulle vara själva VC ++ -fördelningsbara.

Eftersom den ursprungliga skärmdumpen visar kraschen som händer när Utforskaren försöker fylla i listvyn är det möjligt att Windows Search -tjänsten blockerar åtkomst till de nödvändiga resurserna. Jag har sett detta hända när tjänsten kraschar och inte har rätt omstartsparametrar.

Tryck Vinn+R> typ services.msc> OK för att starta hanteringskonsolen med servicemodulen. Rulla ner till Windows Sök och dubbelklicka på posten för att öppna dialogrutan Egenskaper. Se till att inställningarna på fliken Återställning matchar bilden nedan.

Det vanligaste problemet är inställningen 'Starta om tjänsten efter:'. Detta fel uppstår ofta när den här inställningen är noll.

Problematiska skalförlängningar

Ladda ner Nirsofts ShellExView för din systemarkitektur (x86 eller x64), installera och kör den. Det kommer att ta lite tid att undersöka systemet och fylla tabellen med data. Rulla över till kolumnen CLSID Modified Time och klicka på rubriken för att sortera i det här fältet. Om du vill utesluta modulerna från Microsoft kan du gå till Alternativ> Dölj alla Microsoft -tillägg . För dem som använder en 64-bitarsversion av Windows kanske du också vill visa 32-bitars tillägg på systemet genom att gå till Alternativ> Visa 32-bitars skaltillägg .

Leta efter tillägg som lagts till strax innan symptomen började. Välj en eller flera och tryck på F7 eller gå till Arkiv> Inaktivera utvalda objekt , eller klicka på den röda LED -ikonen i verktygsfältet. Helst bör detta göras en i taget.

Testa om symtomen kvarstår. Om de gör det kan du återaktivera tidigare inaktiverade tillägg med hjälp av F8 , Arkiv> Aktivera utvalda objekt eller den gröna LED -verktygsfältikonen. Härifrån, inaktivera ett annat tillägg och upprepa testprocessen tills du hittar den som orsakar problemet.

Reparera/installera omfördelningsbara VC ++

Jag använder den här som en sista utväg, om bara ett program sparkar ut fel. Om du har flera program som har problem med VC ++ runtime -fel kanske du vill prova det här först.

När jag tittar på de installerade programmen på mitt system ( Kontrollpanelen> Program och funktioner ) visar den alla versioner av de omfördelningsbara paketen (och några av deras uppdateringar), allt från version 8 till version 12 (VC ++ 2005 till VC ++ 2013). Jag har dem installerade på grund av Microsofts programmeringsverktyg jag använder. De flesta användare kommer inte att ha alla dessa.

Du kan hitta senaste nedladdningarna för versioner som stöds av Visual C ++ från Microsoft. För våra syften här behöver du bara vara orolig för de som är märkta som 'omfördelningsbara' paket. Länkar som klassificeras som servicepack är för programmeringsverktygen, inte bara körtiden. Du behöver bara de som för närvarande finns med i de installerade programmen på ditt system. Att installera andra versioner hjälper inte i det här fallet. Användare av 64-bitars operativsystem kan behöva både x86- och x64-versionerna av CRT.

Windows Update kontrollerar om din dator har de senaste uppdateringarna för dessa paket installerade, men den kontrollerar inte att det är korrekt installerat och inte har gått sönder. Installatörerna kan kontrollera att alla körtidsfiler är korrekta och att alla registerposter är korrekta.

När du har laddat ner lämpliga installatörer kör du dem på systemet. 2005 -versionerna kommer att uppmana dig att acceptera ett licensavtal innan du installerar om paketet. Alla andra har ett GUI som frågar dig om du vill reparera eller avinstallera den befintliga installationen. I de flesta fall kommer en reparation att åtgärda eventuella problem.

Om du vill prova den mest extrema metoden kan du avinstallera körtiden, starta om maskinen och sedan installera om dem. Jag rekommenderar inte denna metod med körtiden 2005 och 2008. Utan dem kommer Windows att generera många fel och mycket funktionalitet kommer inte att finnas där för dig när du startar om.

Slutsats

Med lite observation, lite prövning och fel och viss förståelse för hur fel genereras från körtid på systemet kan programvaruproblem hittas och lösas utan att använda komplicerade felsökningsverktyg och loggar.

Har du stött på runtime -fel på ditt system? Vad krävdes för att lösa dem? Låt mig veta i kommentarerna nedan.

Dela med sig Dela med sig Tweet E-post Här är varför FBI utfärdade en varning för Hive Ransomware

FBI utfärdade en varning om en särskilt otäck stam av ransomware. Här är varför du måste vara särskilt försiktig med Hive -ransomware.

Läs Nästa
Relaterade ämnen
  • Windows
  • Teknik förklaras
  • Fråga experterna
  • Windows utforskaren
  • Windows
  • Utforskaren
  • Windows Sök
  • Felsökning
Om författaren Bruce Epper(13 artiklar publicerade)

Bruce har lekt med elektronik sedan 70 -talet, datorer sedan början av 80 -talet och svarat exakt på frågor om teknik som han inte har använt eller sett hela tiden. Han irriterar sig också genom att försöka spela gitarr.

Mer från Bruce Epper

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e -böcker och exklusiva erbjudanden!

Klicka här för att prenumerera