Annonse
Delte biblioteker i Windows gjør programmering 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 å 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 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.
Leserens spørsmål:
Hvordan fikser jeg et Windows Vista 32-bit C: \ Windows \ explorer.exe-problem på en Dell Inspiron 530?
Etter å ha klikket på OK-knappen i dialogen som vises på skjermdumpen, vil skjermen bli mørkere og gå tilbake til det normale kjører, men det vil ikke gi meg tilgang til C-, D- og til tider E-stasjonen når jeg prøver å få tilgang til dem fra My Datamaskin.
Løping sfc / scannow finner ingen feil. Jeg lastet ned oppdateringer fra både Dell- og Microsoft-nettsteder for å løse dette problemet. Jeg har også installert Microsoft Visual C ++ 2010 Redistributable Package (x86). PC-en er helt oppdatert i henhold til Windows Update.

Bruces svar:
Merk: Diskusjoner om Windows Explorer i Windows 7 og tidligere versjoner gjelder også File Explorer i Windows 8 og senere versjoner. Hvis det er en betydelig forskjell mellom dem, vil det bli eksplisitt angitt.
Windows-skallet
Windows utforsker er skallet og kjører som explorer.exe-prosessen som sett i Task Manager eller Sysinternals 'prosessutforsker Process Explorer - den kraftigste utskiftningen av oppgavebehandler [Windows]La oss være ærlige, Windows Task Manager er ikke så bra for å forstå og administrere prosessene som kjører på datamaskinen din. Selv på Windows 8, der det er mye forbedret, kan ikke oppgavebehandleren komme i nærheten av ... Les mer . Som mange andre Windows-programmer, er ikke all funksjonaliteten som leveres av skallet, integrert i den ene kjørbare filen. Det er mange andre EXE og DLL-filer Slik løser du manglende DLL-filfeil Les mer brukes til å implementere egenskapsark, eiendomshåndterere, forhåndsvisningshåndtere, kontekstmenyer og mange andre elementer du bruker i Windows Utforsker hver dag.
Utvidbar skall
Shell-utvidelser lar programmerere enkelt legge til funksjonalitet i Windows Utforsker ved å skrive en DLL for å utføre oppgave og registrere DLL med operativsystemet, slik at Explorer vet hvor du kan finne koden for å oppnå oppgave. For eksempel, 7-Zip Hvordan pakke ut filer fra ZIP, RAR, 7z og andre vanlige arkiverVar du noen gang møtt med en .rar-fil og lurte på hvordan du åpner den? Heldigvis er det enkelt å håndtere ZIP-filer og andre komprimerte arkiver med de riktige verktøyene. Dette er hva du trenger å vite. Les mer legger til en undermeny til standard hurtigmeny, som gir rask tilgang til arkivhåndteringsoppgaver, Harddisk Sentinel Hold øye med HDD- og SSD-helsen din med harddisk SentinelHar du noen gang hatt en stasjonsfeil? Dessverre er det ingen universalmiddel for å forhindre skader på maskinvaren. Men å overvåke HDD eller SSD for å handle når deres død blir sannsynlig, er et første skritt. Les mer legger til ikonoverlegg til standard stasjonsikonene, slik at du raskt kan se helsestatus for stasjonen, og HashTab legger til et nytt egenskapsark for å beregne og vise hasjer for den valgte filen.

Mange av disse skallutvidelsene implementeres som COM-servere i prosess. Dette betyr at når en prosess, i dette tilfellet Windows Explorer, bruker utvidelsen, vil den ikke vises i Oppgavebehandling eller Prosessutforsker som en egen prosess med en egen prosessidentifikator (PID). I stedet kjøres den i den ringer explorer.exe-prosessen.
Standard enkeltinstansprosess
Windows Utforsker er skrevet for å være i stand til å kjøre som to separate prosesser, men - i standardkonfigurasjon - vil den bare kjøre en enkelt forekomst. Når den først kjøres som en del av oppstartsprosessen, skaper det skrivebordsmiljøet i Windows. Å utføre den igjen oppretter en ny tråd i den eksisterende prosessen, som viser det velkjente filhåndteringsvinduet, i stedet for å starte en ny prosess.
Denne oppførselen tillater et redusert fotavtrykk, men kan også gi sin egen lille vri når du feilsøker problemer. En kritisk feil eller ubehandlet unntak i kode som blir utført i explorer.exe-prosessen, inkludert servere i prosess levert av DLLer, vil føre til at hele skrivebordsmiljøet går ned med det.
I de fleste tilfeller startes skrivebordsprosessen automatisk på nytt. Hvis det ikke starter på nytt, bør du fremdeles kunne bruke Ctrl-Shift-Esc for å få opp oppgavebehandleren. Derfra, gå 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 for Windows 8 og nyere File Explorer> Vis> Alternativer> Endre mappe og søkealternativer. Velg Vis fane og sjekk Start mappevinduer i en egen prosess.

Endring av denne innstillingen isolerer skrivebordsprosessen fra alle de andre Windows Explorer-vinduene du har åpnet. Hvis noe av Explorer-vinduene krasjer, vil skrivebordet ditt forbli uskadd.
Microsoft Visual C ++ Runtime Library (CRT)
Microsoft Visual C ++ Runtime Library inneholder 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) til stede. Når tilleggsprogramvare er installert, kan det også inneholde nyere versjoner av driftstidene, avhengig av hvilken versjon av Visual C ++ som ble brukt til å lage programmet eller noen av komponentene.
Kjøringsfeil
Når det oppstår en feil eller unntak i et stykke kode, vil den ideelt sett bli håndtert så snart som mulig i den utførende prosedyren, og enten bli korrigert eller gi rom for en grasiøs svikt. Hvis feilen ikke håndteres lokalt, overføres den til koden som kalte koden som for øyeblikket kjøres, og prosessen fortsetter til unntaket er håndtert. Hvis den fullfører kjøringen til toppen av kjeden og den fremdeles 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 feiloppførsel, for eksempel kritiske tjenester, eller kjøretilstanden blir overvåket av en annen prosess, kan det automatisk reageres. Dette er hva som skjer i dette tilfellet. Skjermen blir mørkere når explorer.exe-prosessen avsluttes, så 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 noe problem med explorer.exe selv. Det er mye mer sannsynlig at den 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å krasjstidspunktet prøvde Explorer, men kunne ikke, fylle listevisningen.
- Manglende evne til å få tilgang til stasjoner etter at skrivebordet har gjenoppstått, kan indikere at en annen prosess har en eller flere av disse enhetene er låst, og forhindrer dermed tilgang fra den nyopprettede explorer.exe prosess.
- Løping sfc / scannow og å få en ren helseforsikring, slipper Windows-beskyttede ressurser til bunnen av listen for vurdering. Andre årsaker er langt mer sannsynlige.
Fixes er i
I dette tilfellet er det tre områder der jeg vil se etter en løsning. Den første involverer Windows Search-tjenesten, den andre involverer å undersøke shell-utvidelser, og den siste ville være VC ++ omfordelinger.
Windows-søk
Fordi det originale skjermbildet viser krasjet som skjer når Explorer prøver å befolke listevisning, 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 omstartparametrene.
trykk Vinn + R> type services.msc> OK for å starte administrasjonskonsollen med tjenestemodulen. Bla ned til Windows Søk og dobbeltklikk på oppføringen for å åpne Egenskapsdialogen. Forsikre deg om at innstillingene på gjenopprettingsfanen samsvarer med bildet nedenfor.

Det vanligste problemet er innstillingen “Start på nytt etter:”. Denne feilen oppstår ofte når denne innstillingen ikke er null.
Problematiske Shell-utvidelser
nedlasting Nirsofts 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. Bla over til CLSID Modified Time-kolonnen og klikk på overskriften for å sortere i dette feltet. Hvis du ønsker å ekskludere modulene levert av Microsoft, kan du gå til Valg> Skjul alle Microsoft-utvidelser. For de som bruker en 64-biters versjon av Windows, kan det være lurt å vise 32-biters utvidelser på systemet ved å gå til Valg> Vis 32-bits skallutvidelser.
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 én om gangen.
Test for å se om symptomene vedvarer. Hvis de gjør det, kan du aktivere de tidligere deaktiverte utvidelsene på nytt 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 VC ++ Redistributables på nytt
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 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 omfordelbare pakkene (og noen av oppdateringene) fra versjon 8 til versjon 12 (VC ++ 2005 til VC ++ 2013). Jeg har dem installert på grunn av Microsoft-programmeringsverktøyene jeg bruker. De fleste brukere vil ikke ha alle disse.

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 opptatt av de som er merket som "omfordelbare" pakker. Koblinger som er klassifisert som servicepakker er for programmeringsverktøyene, ikke bare driftstiden. Du trenger bare de som for øyeblikket er oppført i de installerte programmene på systemet ditt. Å installere 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 det kontrollerer ikke for å sikre at den er riktig installert og ikke har blitt ødelagt. Installatørene kan kontrollere at alle runtime-filene er de riktige og at alle registeroppføringer er riktige.
Når du har lastet ned de aktuelle 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 spør deg om du vil reparere eller avinstallere den eksisterende installasjonen. I de fleste tilfeller vil en reparasjonsoperasjon løse eventuelle problemer.
Hvis du vil prøve den mest ekstreme metoden, kan du avinstallere driftstidene, starte maskinen på nytt og deretter installere dem på nytt. Jeg anbefaler ikke denne metoden i løpet av 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 for hvordan feil genereres fra driftstider på systemet, programvareproblemer kan bli funnet og løst uten å ty til kompliserte feilsøkingsverktøy og tømmerstokker.
Har du kjørt feil på runtime på systemet ditt? Hva krevdes for å løse dem? Gi meg beskjed i kommentarene nedenfor.
Bruce har lekt med elektronikk siden 70-tallet, datamaskiner siden begynnelsen av 80-tallet, og svarer nøyaktig på spørsmål om teknologi han ikke har brukt eller sett hele tiden. Han irriterer seg også ved å prøve å spille gitar.