Slik løser du Windows Visual C ++ kjøretidsfeil

Slik løser du Windows Visual C ++ kjøretidsfeil

Delte biblioteker i Windows gjør programmeringen mye mer effektiv for programmereren som ikke trenger å finne opp hjulet på nytt hver gang han trenger å utføre en felles oppgave. De gjør det også lettere å koble til sikkerhetshull i delt kode når de blir funnet siden den må oppdateres på færre steder og ikke krever at hver applikasjon blir kompilert på nytt.





Til tross for disse positive aspektene, kan de utgjøre sine egne problemer når de prøver å feilsøke årsaken til feilmeldinger de kan generere.





Vår lesers spørsmål:

Hvordan fikser 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 bli mørkere og gå tilbake til normal drift, men den gir meg ikke tilgang til C, D og til tider E -stasjonen når jeg prøver å få tilgang til dem fra Min datamaskin.

Løping sfc /scannow finner ingen feil. Jeg lastet ned oppdateringer fra både Dell- og Microsoft -nettstedene som prøvde å fikse dette problemet. Jeg har også installert Microsoft Visual C ++ 2010 Redistributable Package (x86). PC-en er helt oppdatert i henhold til Windows Update.



Bruce svar:

Merk: Diskusjoner om Windows Utforsker i Windows 7 og tidligere versjoner gjelder også for File Explorer i Windows 8 og nyere versjoner. Hvis det er en bemerkelsesverdig forskjell mellom dem, vil det bli uttrykkelig angitt.

Windows -skallet

Windows utforsker er skallet og kjøres som explorer.exe -prosessen, sett i Oppgavebehandling eller Sysinternals 'Process Explorer. Som mange andre Windows -programmer, er ikke all funksjonalitet som tilbys av skallet inkorporert i den eneste kjørbare filen. Det er dusinvis av andre EXE- og DLL -filer som brukes til å implementere eiendomsark, eiendomsbehandlere, forhåndsvisere, kontekstmenyer og mange andre elementer du bruker i Windows Utforsker hver dag.





Utvidbart skall

Shell -utvidelser lar programmerere enkelt legge til funksjonalitet i Windows Utforsker ved å skrive en DLL for å utføre oppgaven og registrere DLL -en med operativsystemet, slik at Explorer vet hvor de skal finne koden for å utføre oppgaven. For eksempel, 7-glidelås legger til en undermeny til standard kontekstmeny, noe som gir rask tilgang til arkivhåndteringsoppgaver, Harddisk Sentinel legger til ikonoverlegg til standardstasjonsikonene, slik at du kan se status for stasjonens status på et øyeblikk, og HashTab legger til et nytt eiendomsark for å beregne og vise hashes for den valgte filen.

Mange av disse skallutvidelsene er implementert som COM-servere (in-process Component Object Model). Dette betyr at når en prosess, i dette tilfellet Windows Utforsker, bruker utvidelsen, vil den ikke vises i Oppgavebehandling eller Prosessutforsker som en egen kjørende prosess med sin egen prosessidentifikator (PID). I stedet kjøres den inne i calling explorer.exe -prosessen.





Standard prosess for én forekomst

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 først kjøres som en del av oppstartsprosessen, oppretter den skrivebordsmiljøet i Windows. Å kjøre den igjen oppretter en ny tråd i den eksisterende prosessen, som viser det kjente filbehandlingsvinduet, i stedet for å starte en ny prosess.

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

I de fleste tilfeller starter skrivebordsprosessen automatisk på nytt. Hvis den ikke starter på nytt, bør du fortsatt kunne bruke Ctrl-Shift-Esc for å få frem Oppgavebehandling. Derfra går du til Fil> Ny oppgave (Kjør ...)> type explorer.exe> ​​OK for å starte prosessen på nytt.

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

hvordan åpne psd -filer uten photoshop

Hvis du endrer denne innstillingen, isoleres skrivebordsprosessen fra alle de andre Windows Utforsker -vinduene du har åpent. Hvis noen av disse Explorer -vinduene krasjer, forblir skrivebordet ditt uten skader.

Microsoft Visual C ++ Runtime Library (CRT)

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

Hver Windows -installasjon vil ha minst to forskjellige versjoner av CRT installert. En nybygd Vista SP2 gjennom Windows 10 -maskin vil ha både versjon 8.0 og 9.0 (henholdsvis VC 2005 og VC 2008). Når ekstra 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 dets komponenter.

Kjøretidsfeil

Når det oppstår en feil eller et unntak i en kodebit, vil den ideelt sett bli håndtert så snart som mulig i prosedyren som utføres for øyeblikket, og enten bli korrigert eller tillate en grasiøs feil. Hvis feilen ikke håndteres lokalt, blir den sendt videre til koden som kalte den utførende koden, og prosessen fortsetter til unntaket håndteres. Hvis den fullfører kjøringen til toppen av kjeden og den fortsatt ikke håndteres, vil den generere en kjøretidsfeil som vist ovenfor.

Når brukeren klikker på OK -knappen, avsluttes prosessen. Hvis programmet har en definert feilatferd, for eksempel kritiske tjenester, eller kjørestatusen overvåkes av en annen prosess, kan det bli gjenopprettet automatisk. Dette er det som skjer i dette tilfellet. Skjermen blir svart når explorer.exe -prosessen avsluttes, deretter 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 sannsynligvis ikke et problem med explorer.exe selv. Det er mye mer sannsynlig at synderen ligger andre steder, for eksempel en tredjepartsutvidelse som blir brukt av Explorer.

Andre hensyn

Med vår lesers beskrivelse av problemet ovenfor, er det et par ekstra ting vi må ta hensyn til:

  • På tidspunktet for krasjet prøvde Explorer, men klarte ikke, å fylle ut listevisningen.
  • Manglende evne til å få tilgang til stasjoner etter at skrivebordet har gjenoppstått, kan indikere at en eller flere av disse enhetene er låst i en annen prosess, og dermed forhindre tilgang fra den nyopprettede explorer.exe -prosessen.
  • Løping sfc /scannow og får en ren helseerklæring, faller Windows -beskyttede ressurser til bunnen av listen for vurdering. Andre årsaker er langt mer sannsynlig.

Rettelsene er inne

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 ++ -distributørene selv.

Fordi det originale skjermbildet viser krasjet som skjer når Utforsker prøver å 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 Vinn+R> type services.msc> OK for å starte administrasjonskonsollen med tjenestemodulen. Rull ned til Windows Søk og dobbeltklikk på oppføringen for å åpne dialogboksen Egenskaper. Sørg for at innstillingene på gjenopprettingsfanen samsvarer med bildet nedenfor.

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

Problematiske skallutvidelser

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

Se etter utvidelser som ble lagt til rett før symptomene begynte. Velg en eller flere og trykk F7 eller gå til Fil> Deaktiver valgte elementer , eller klikk på det røde LED -ikonet på 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 tidligere deaktiverte utvidelser ved å bruke F8 , Fil> Aktiver valgte elementer , eller det grønne LED -verktøylinjeikonet. Herfra kan du deaktivere en annen utvidelse og gjenta testprosessen til du finner den som forårsaker problemet.

Reparer/installer omfordelbare VC ++

Jeg bruker denne som en siste utvei, hvis bare ett program sparker ut feil. Hvis du har flere programmer som har problemer med VC ++ kjøretidsfeil, kan det være lurt å prøve dette først.

Når jeg ser på de installerte programmene på systemet mitt ( Kontrollpanel> Programmer og funksjoner ), viser den hver versjon av de distribuerbare pakkene (og noen av oppdateringene) fra versjon 8 til versjon 12 (VC ++ 2005 til VC ++ 2013). Jeg har dem installert på grunn av Microsofts programmeringsverktøy jeg bruker. De fleste brukere vil ikke ha alt dette.

Du kan finne siste nedlastinger for støttede versjoner av Visual C ++ fra Microsoft. For våre formål her trenger du bare å være bekymret for 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 er oppført i de installerte programmene på systemet ditt. Installering av andre versjoner vil ikke hjelpe i dette tilfellet. Brukere av 64-biters operativsystemer kan trenge både x86- og x64-versjonene av CRT.

Windows Update sjekker om datamaskinen din har de siste oppdateringene for disse pakkene installert, men den kontrollerer ikke at den er riktig installert og ikke er ødelagt. Installatørene kan kontrollere at alle kjøretidsfilene er riktige og at alle registeroppføringer er riktige.

Når du har lastet ned de riktige installatørene, kjører du dem på systemet. 2005 -versjonene 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 mest ekstreme metoden, kan du avinstallere kjøretidene, starte maskinen på nytt og deretter installere dem på nytt. Jeg anbefaler ikke denne metoden med kjøretidene 2005 og 2008. 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 prøving og feiling, og litt forståelse av hvordan feil genereres fra kjøretider på systemet, kan programvareproblemer bli funnet og løst uten å ty til kompliserte feilsøkingsverktøy og logger.

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

Dele Dele kvitring E -post Her er hvorfor FBI utstedte en advarsel for Hive Ransomware

FBI utstedte en advarsel om en spesielt ekkel stamme av ransomware. Her er hvorfor du må være spesielt forsiktig med Hive ransomware.

Les neste
Relaterte temaer
  • Windows
  • Teknologi forklart
  • Spør ekspertene
  • Windows utforsker
  • Windows
  • Filutforsker
  • Windows Søk
  • Feilsøking
Om forfatteren Bruce Epper(13 artikler publisert)

Bruce har lekt med elektronikk siden 70 -tallet, datamaskiner siden begynnelsen av 80 -tallet og besvart nøyaktig spørsmål om teknologi han ikke har brukt eller sett hele tiden. Han irriterer seg også ved å prøve å spille gitar.

Mer fra Bruce Epper

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere