Slik løser du Windows Visual C + + Runtime feil

Visual C ++-feil er et vanlig problem for Windows-brukere. Men vet du hvordan du skal fikse dem?

Visual C ++-feil er et vanlig problem for Windows-brukere.  Men vet du hvordan du skal fikse dem?
Annonse

Delte biblioteker i Windows gjør programmeringen mye mer effektiv for programmereren som ikke trenger å gjenoppfinne hjulet hver gang han trenger å utføre en felles oppgave. De gjør det også lettere å plugge sikkerhetshull i delt kode når de blir funnet siden det må lappes på færre steder, og krever ikke at alle applikasjoner blir kompilert.

Til tross for disse positive aspektene kan de gi sine egne problemer når de forsøker å feilsøke årsaken til feilmeldinger de kan generere.

Leserens spørsmål:

Hvordan løser jeg et Windows Vista 32-biters C: \ Windows \ explorer.exe-problem på en Dell Inspiron 530?

Etter å ha klikket på OK-knappen i dialogboksen som vises på skjermbildet, vil skjermen svinne ut og gå tilbake til normal kjøring, men det vil ikke tillate meg å få tilgang til C, D, og ​​til tider E-stasjonen når jeg prøver å få tilgang til dem fra denne datamaskinen.

Kjører sfc / scannow finner ingen feil. Jeg lastet ned oppdateringer fra både Dell og Microsoft nettsteder som prøver å fikse dette problemet. Jeg har også installert Microsoft Visual C ++ 2010 Redistributable Package (x86). PCen er helt oppdatert i henhold til Windows Update.

kjøretids-error

Bruces svar:

Merk: Diskusjoner om Windows Explorer i Windows 7 og tidligere versjoner gjelder også for File Explorer i Windows 8 og nyere versjoner. Hvis det er en merkbar forskjell mellom dem, blir det eksplisitt oppgitt.

Windows Shell

Windows Utforsker er skallet og kjører som explorer.exe-prosessen som vist i Oppgavebehandling eller Sysinternals 'Prosess Explorer Prosess Explorer - Den mest kraftige oppgavesjefens erstatning [Windows] Prosess Explorer - Den mest kraftige oppgavesjefen Erstatning [Windows] La oss være ærlige, Windows Task Manager er ikke så bra for å forstå og administrere prosessene som kjører på datamaskinen. Selv på Windows 8, hvor det er mye bedre, kan oppgavebehandleren ikke komme nær ... Les mer. I likhet med mange andre Windows-programmer er ikke all funksjonalitet levert av skallet innlemmet i den enkelte kjørbare filen. Det er dusinvis av andre EXE- og DLL-filer. Slik løser du manglende DLL-filfeil. Slik løser du manglende DLL-filfeil. Les mer brukt til å implementere eiendomsark, egenskapshåndterere, forhåndshåndteringsverktøy, kontekstmenyer og mange andre elementer du bruker i Utforsker Explorer hver gang dag.

Extensible Shell

Shell utvidelser tillater programmerere å enkelt legge til funksjonalitet til Windows Utforsker ved å skrive en DLL for å utføre oppgaven og registrere DLL med operativsystemet, slik at Explorer vet hvor å finne koden for å utføre oppgaven. For eksempel, 7-Zip Hvordan trekke ut filer fra ZIP, RAR, 7z og andre vanlige arkiver. Slik trekker du ut filer fra ZIP, RAR, 7z og andre vanlige arkiver. Har du noen gang møtt en .rar-fil og lurt på hvordan du åpner den? Heldigvis er det enkelt å administrere ZIP-filer og andre komprimerte arkiver med de riktige verktøyene. Her er det du trenger å vite. Les mer legger til en undermeny i standard kontekstmeny, noe som gir rask tilgang til arkivhåndteringsoppgaver, harddisk Sentinel Hold øye med HDD og SSD Helse med harddisk Sentinel Hold øye med HDD og SSD Helse med harddisk Sentinel Har du noen gang hatt stasjonsfeil? Dessverre er det ingen panacea for å forhindre maskinvare skade. Men å overvåke HDD eller SSD, å opptre når deres død blir sannsynlig, er et første skritt. Les mer legger til ikonoverskridelser til standarddiskikonene, slik at du kan se kjørestatusen på et øyeblikk, og HashTab legger til et nytt eiendomsark for å beregne og vise hashes av den valgte filen.

kontekstmenyen

Mange av disse skallutvidelsene er implementert som komponentobjektmodeller (COM) -servere. Dette betyr at når en prosess, i dette tilfellet Windows Utforsker, bruker utvidelsen, vises den ikke i Oppgavebehandling eller Prosess Explorer som en egen kjøringsprosess med egen prosessidentifikator (PID). I stedet er det kjøres inne i kallet explorer.exe-prosessen.

Standard Single-Instance-prosess

Windows Utforsker er skrevet for å kunne kjøres som to separate prosesser, men - i standardkonfigurasjonen - vil den bare kjøre en enkelt forekomst. Når den blir først utført som en del av oppstartsprosessen, oppretter den Windows-skrivebordsmiljøet. Hvis du utfører det på nytt, opprettes en ny tråd i den eksisterende prosessen, som viser det kjente filbehandlingsvinduet, i stedet for å starte en ny prosess.

Denne oppførselen tillater redusert minnefotavtrykk, men kan også gi sin egen lille vri ved problemer med feilsøking. En kritisk feil eller unhandled unntak i kode som kjøres i explorer.exe prosessen, inkludert in-process servere levert av DLLs, vil føre til at hele skrivebordsmiljøet går ned med det.

I de fleste tilfeller vil skrivebordsprosessen automatisk startes på nytt. Hvis det ikke starter på nytt, bør du fortsatt kunne bruke Ctrl-Shift-Esc for å hente opp oppgavebehandleren. Derfra går du til Arkiv> Ny oppgave (Kjør ...)> type explorer.exe> ​​OK for å starte prosessen på nytt.

Dette kan unngås med en enkel forandring. Åpne Windows Utforsker> Organiser> Mappe og søkealternativer i Vista / 7. For Windows 8 og nyere, åpne Filutforsker> Vis> Valg> Endre mappe og søkealternativer . Velg Vis-fanen og sjekk Start mappevinduer i en separat prosess .

mappe-alternativer

Hvis du endrer denne innstillingen, isoleres skrivebordsprosessen fra alle de andre Windows Utforsker-vinduene du har åpnet. Hvis noen av disse Explorer-vinduene krasjer, blir skrivebordet uforskudt.

Microsoft Visual C ++ Runtime Library (CRT)

Microsoft Visual C ++ Runtime Library gir rutiner for programmering av Windows som automatiserer mange oppgaver, for eksempel input / output, filmanipulering, minneallokering, systemanrop og mange andre.

Hver Windows-installasjon vil ha minst to forskjellige versjoner av CRT installert. En nybygd Vista SP2 gjennom Windows 10-maskinen vil ha både versjon 8.0 og 9.0 (henholdsvis VC 2005 og VC 2008). Når ytterligere programvare er installert, kan det også inneholde nyere versjoner av kjøretidene, avhengig av hvilken versjon av Visual C ++ som ble brukt til å lage programmet eller noen av komponentene.

Runtime feil

Når det oppstår en feil eller et unntak i et kodeks, vil det helst bli håndtert så snart som mulig i den nåværende utførelsesprosedyren, og enten korrigeres eller tillates en grasiøs feil. Hvis feilen ikke håndteres lokalt, blir den passert opp til koden som kalte den kjørbar koden, og prosessen fortsetter til unntaket håndteres. Hvis den fullfører sin kjøre til toppen av kjeden, og den fortsatt ikke håndteres, vil det generere en runtime feil som sett ovenfor.

Når brukeren klikker på OK-knappen, avsluttes prosessen. Hvis programmet har en definert feiladferd, som for eksempel kritiske tjenester, eller dens løpestatus overvåkes av en annen prosess, kan den automatisk bli respawned. Dette er hva som skjer i dette tilfellet. Skjermen svarte når explorer.exe-prosessen ble avsluttet, da kommer skrivebordet tilbake når explorer.exe-prosessen startes på nytt.

Selv om feilmeldingen ovenfor tydelig indikerer at den kom fra explorer.exe-prosessen, er det ikke sannsynlig å være et problem med explorer.exe selv. Det er mye mer sannsynlig at skyldige ligger andre steder, for eksempel en tredjepartsutvidelse som blir brukt av Explorer.

Andre hensyn

Med leserens beskrivelse av problemet ovenfor er det et par ekstra elementer vi må ta hensyn til:

  • På tidspunktet for krasjet forsøkte Explorer, men ikke, å fylle listevisningen.
  • Manglende evne til å få tilgang til stasjoner etter at skrivebordet har responert, kan indikere at en annen prosess har en eller flere av disse enhetene låst, og dermed hindrer tilgang fra den nylig opprettede explorer.exe-prosessen.
  • Kjører sfc / scannow og får en ren helseerklæring, dråper Windows-beskyttede ressurser til bunnen av listen for vurdering. Andre årsaker er langt mer sannsynlig.

Fiksene er i

I dette spesielle tilfellet er det tre områder hvor jeg ville se etter en løsning. Den første involverer Windows Search-tjenesten, den andre innebærer å undersøke shell-utvidelser, og den siste ville være VC + + -fordelingene selv.

Windows Søk

Fordi det opprinnelige skjermbildet viser at krasjet oppstår når Explorer forsøker å fylle ut listevisningen, er det mulig at Windows Search-tjenesten blokkerer tilgangen til de nødvendige ressursene. Jeg har sett dette skje når tjenesten krasjer og ikke har de riktige omstartsparametrene.

Trykk på Win + R> skriv services.msc> OK for å starte administrasjonskonsollen med tjenestemodulen. Rull ned til Windows Søk og dobbeltklikk på oppføringen for å åpne dialogboksen Egenskaper. Kontroller at innstillingene på gjenopprettingsfanen samsvarer med bildet nedenfor.

Windows-søke-eiendommer

Det vanligste problemet er "Restart service etter:" innstillingen. Denne feilen oppstår ofte når denne innstillingen er null.

Problematiske Shell Extensions

Last ned Nirsoft's ShellExView for systemarkitekturen din (x86 eller x64), installer og kjør den. Det vil ta litt tid å undersøke systemet og fylle tabellen med data. Rull over til kolonnen CLSID Modified Time og klikk på overskriften for å sortere i dette feltet. Hvis du vil ekskludere modulene som tilbys av Microsoft, kan du gå til Valg> Skjul alle Microsoft-utvidelser . For de som bruker en 64-biters versjon av Windows, kan du også vise 32-biters utvidelser på systemet ved å gå til Valg> Vis 32-biters utvidelser .

Se etter utvidelser som ble lagt like før symptomene begynte. Velg en eller flere og trykk F7 eller gå til Arkiv> Deaktiver valgte elementer, eller klikk på det røde LED-ikonet i verktøylinjen. Ideelt sett bør dette gjøres en om gangen.

Test for å se om symptomene vedvarer. Hvis de gjør det, kan du aktivere de tidligere deaktiverte utvidelsene ved å bruke F8, Arkiv> Aktiver valgte elementer eller det grønne LED-verktøylinjeikonet. Herfra, deaktiver en annen utvidelse og gjenta testprosessen til du finner den som forårsaker problemet.

Reparer / Installer VC + + Redistributables

Jeg bruker denne som en siste utvei, hvis bare ett program sparker ut feil. Hvis du har flere programmer som har problemer med VC ++ runtime feil, kan det hende du vil prøve dette først.

Når du ser på de installerte programmene på systemet mitt ( Kontrollpanel> Programmer og funksjoner ), viser det hver versjon av de omfordelbare pakkene (og noen av deres oppdateringer) fra versjon 8 til versjon 12 (VC ++ 2005 gjennom VC ++ 2013). Jeg har dem installert på grunn av Microsoft programmeringsverktøyene jeg bruker. De fleste brukere vil ikke ha alle disse.

installerte-vcpp-redist

Du kan finne de nyeste nedlastingene for støttede versjoner av Visual C ++ fra Microsoft. For vårt formål her, trenger du bare å være opptatt av de som er merket som "omfordelbare" pakker. Lenker som er klassifisert som servicepakker, er for programmeringsverktøyene, ikke bare kjøretidene. Du trenger bare de som for øyeblikket er oppført i de installerte programmene på systemet ditt. Installering av andre versjoner hjelper ikke i dette tilfellet. Brukere av 64-biters operativsystemer kan trenge både x86 og x64-versjonene av CRT.

Windows Update kontrollerer om datamaskinen din har de nyeste oppdateringene for disse pakkene, men den kontrollerer ikke at den er riktig installert og ikke har blitt brutt. Installatørene kan sjekke for å sikre at alle runtime-filene er de riktige og alle registeroppføringer er riktige.

Når du har lastet ned de riktige installatørene, kjør dem på systemet. Versjonene fra 2005 vil be deg om å godta en lisensavtale før du installerer pakken på nytt. Alle de andre har en GUI som vil spørre deg om du vil reparere eller avinstallere den eksisterende installasjonen. I de fleste tilfeller vil en reparasjon løse eventuelle problemer.

Hvis du vil prøve den ekstreme metoden, kan du avinstallere kjøretidene, starte maskinen på nytt, og installer dem på nytt. Jeg anbefaler ikke denne metoden med 2005 og 2008 kjøretider. Uten dem vil Windows generere mange feil, og mye funksjonalitet vil ikke være der for deg når du starter på nytt.

Konklusjon

Med litt observasjon, et snev av forsøk og feil, og litt forståelse av hvordan feil genereres fra kjøretider på systemet, kan programvareproblemer bli funnet og løst uten å benytte kompliserte feilsøkingsverktøy og logger.

Har du løp inn kjøretidsfeil på systemet ditt? Hva var nødvendig for å løse dem? Gi meg beskjed i kommentarene nedenfor.

In this article