Annons
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 ansluta säkerhetshål i delad kod när de hittas eftersom det måste lappas på färre platser och kräver inte att varje applikation ska kompileras igen.
Trots dessa positiva aspekter kan de utgöra sina egna problem när de försöker felsöka grundorsaken till felmeddelanden de kan generera.
Vår läsares fråga:
Hur fixar jag ett Windows Vista 32-bitars C: \ Windows \ explorer.exe-problem på en Dell Inspiron 530?
Efter att du har klickat på OK-knappen i dialogrutan som visas på skärmdumpen kommer skärmen att bli mörkare och återgå till det normala kör, men det kommer inte att tillåta mig åtkomst till C, D och ibland E-enheten när jag försöker komma åt dem från My Dator.
Löpning sfc / scannow hittar inga fel. Jag laddade ner uppdateringar från både Dell- och Microsofts webbplatser för att lösa problemet. Jag har också installerat Microsoft Visual C ++ 2010 Redistributable Package (x86). PC: n är helt uppdaterad enligt Windows Update.
Bruces svar:
Obs! Diskussioner om Windows Explorer i Windows 7 och tidigare versioner gäller också File Explorer 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 sett i Task Manager eller Sysinternals Process Explorer Process Explorer - den mest kraftfulla Ersättningen av Task Manager [Windows]Låt oss vara ärliga, Windows Task Manager är inte så bra för att förstå och hantera processerna som körs på din dator. Även på Windows 8, där det är mycket förbättrat, kan task manager inte komma nära ... Läs mer . Liksom många andra Windows-program är inte all funktionalitet som tillhandahålls av skalet införlivad i den enda körbara filen. Det finns dussintals andra EXE och DLL-filer Hur du åtgärdar saknade DLL-filfel Läs mer används för att implementera egendomsark, egendomshanterare, förhandsgranskare, kontextmenyer och många andra element som du använder i Utforskaren varje dag.
Utdragbar skal
Shell-tillägg tillåter programmerare att enkelt lägga till funktionalitet i Windows Explorer genom att skriva en DLL för att utföra uppgiften och registrera DLL med operativsystemet, så Explorer vet var man hittar koden för att utföra uppgift. Till exempel, 7-Zip Hur man extraherar filer från ZIP, RAR, 7z och andra gemensamma arkivHar du någonsin mött en .rar-fil och undrat hur du öppnar den? Lyckligtvis är hantering av ZIP-filer och andra komprimerade arkiv enkelt med rätt verktyg. Här är vad du behöver veta. Läs mer lägger till en undermeny till standardkontextmenyn som ger snabb åtkomst till arkivhanteringsuppgifter, Hårddisk Sentinel Håll ett öga på din hårddisk och SSD-hälsa med hårddisk SentinelHar du någonsin haft ett drivfel? Tyvärr finns det inget universalmedel för att förhindra skador på hårdvara. Men att övervaka din HDD eller SSD, att agera när deras död blir troligt, är ett första steg. Läs mer lägger till ikonöverlägg till standarddrivikonerna så att du kan se enhetens hälsostatus på ett ögonblick och HashTab lägger till ett nytt fastighetsblad för att beräkna och visa hash för den valda filen.
Många av dessa skalförlängningar implementeras som COM-servrar i processen. Detta betyder att när en process, i detta fall Windows Explorer, använder tillägget, kommer den inte att visas i Task Manager eller Process Explorer som en separat körningsprocess med en egen processidentifierare (PID). Istället körs det i den anropande explorer.exe-processen.
Standardprocess för enstaka instanser
Windows Explorer är skriven för att kunna köras som två separata processer, men - i sin standardkonfiguration - kommer den bara att köra en enda instans. När den först körs som en del av startprocessen skapar den Windows skrivbordsmiljö. Genom att köra den igen skapas en ny tråd i den befintliga processen, som visar det bekanta filhanteringsfönstret istället för att starta en ny process.
Detta beteende tillåter ett minskat fotavtryck, men kan också ge sin egen lilla vridning vid felsökning av problem. Ett kritiskt fel eller obehandlat undantag i kod som körs i explorer.exe-processen, inklusive processer-servrar som tillhandahålls av DLL-filer, kommer att göra att hela skrivbordsmiljön försvinner med den.
I de flesta fall startas skrivbordsprocessen automatiskt igen. Om det inte startar om, bör du fortfarande kunna använda Ctrl-Shift-Esc för att ta fram Task Manager. Därifrån, gå till Fil> Ny uppgift (Kör ...)> typ explorer.exe> OK för att starta om processen.
Detta kan undvikas med en enkel förändring. Öppna Windows Utforskare> Organisera> Mapp- och sökalternativ i Vista / 7. För Windows 8 och senare, öppna File Explorer> Visa> Alternativ> Ändra mapp och sökalternativ. Välj Visa flik och kolla Starta mappfönster i en separat process.
Att ändra denna inställning isolerar skrivbordsprocessen från alla andra Windows Explorer-fönster som du har öppnat. Om något av dessa Explorer-fönster kraschar förblir skrivbordet oskadat.
Microsoft Visual C ++ Runtime Library (CRT)
Microsoft Visual C ++ Runtime Library tillhandahåller rutiner för programmering av Windows som automatiserar många uppgifter, till exempel input / output, filmanipulation, minnesallokering, systemsamtal och många andra.
Varje Windows-installation kommer att ha minst två olika versioner av CRT installerat. En nybyggd Vista SP2 till Windows 10-maskin kommer att ha både version 8.0 och 9.0 (VC 2005 respektive VC 2008) närvarande. När ytterligare programvara är installerad kan det också innehålla nyare versioner av körtid, beroende på vilken version av Visual C ++ som användes för att skapa programmet eller någon av dess komponenter.
Runtime-fel
När ett fel eller ett undantag stöter på i ett kodstycke kommer det helst att hanteras så snart som möjligt i den nuvarande exekverande proceduren, och antingen korrigeras eller tillåta en graciös fel. Om felet inte hanteras lokalt överförs det till koden som kallas den aktuella 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 den att generera ett runtime-fel enligt ovan.
När användaren klickar på OK-knappen avslutas processen. Om programmet har ett definierat felbeteende, till exempel kritiska tjänster, eller dess körningstillstånd övervakas av en annan process, kan det automatiskt återställas. Det här är vad som händer i det här fallet. Skärmen försvinner när processen explorer.exe avslutas, sedan kommer skrivbordet tillbaka när processen explorer.exe startas om.
Även om felmeddelandet ovan tydligt indikerar att det kom från processen explorer.exe, ä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 tredje parts förlängning som används av Explorer.
Andra överväganden
Med vår läsares beskrivning av problemet ovan finns det ett par ytterligare objekt som vi måste ta hänsyn till:
- Vid tidpunkten för kraschen försökte Explorer, men kunde inte, fylla listvyn.
- Oförmågan att få åtkomst till enheter efter att skrivbordet har återuppstått kan indikera att en annan process har en eller fler av dessa enheter låsta, vilket förhindrar åtkomst från den nyligen skapade explorer.exe bearbeta.
- Löpning sfc / scannow och att få en ren hälsokostnad, tappar Windows-skyddade resurser till botten av listan för övervägande. Andra orsaker är mycket mer troliga.
Rättelserna är i
I det här fallet finns det tre områden där jag letar efter en lösning. Den första handlar om Windows-söktjänsten, den andra handlar om att undersöka skalförlängningar, och den sista skulle vara VC ++ omfördelningsbara själva.
Windows-sökning
Eftersom den ursprungliga skärmdumpen visar kraschen som händer när Explorer försöker fylla i listvy, är det möjligt att Windows-söktjänsten blockerar åtkomsten till de nödvändiga resurserna. Jag har sett detta hända när tjänsten kraschar och inte har rätt parametrar för omstart.
Tryck Vinn + R> typ services.msc> OK för att starta managementkonsolen med servicemodulen. Rulla ner till Windows-sökning 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änster efter:". Det här felet uppstår ofta när den här inställningen inte är noll.
Problematiska skalförlängningar
Ladda ner Nirsofts ShellExView för din systemarkitektur (x86 eller x64), installera och köra den. Det tar 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 de moduler som tillhandahålls av Microsoft kan du gå till Alternativ> Dölj alla Microsoft-tillägg. För de som använder en 64-bitarsversion av Windows kanske du också vill visa 32-bitarsförlängningarna på systemet genom att gå till Alternativ> Visa 32-bitars skalförlängningar.
Leta efter förlängningar som lades till strax innan symtomen började. Välj en eller flera och tryck på F7 eller gå till Fil> Inaktivera valda objekt, eller klicka på den röda LED-ikonen i verktygsfältet. Helst bör detta göras en åt gången.
Testa för att se om symptomen kvarstår. Om de gör det kan du aktivera de tidigare inaktiverade tilläggen igen F8, Fil> Aktivera valda objekt, eller den gröna LED-verktygsfältikonen. Härifrån kan du inaktivera ett annat tillägg och upprepa testprocessen tills du hittar den som orsakar problemet.
Reparera / installera om VC ++ Redistributables
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 detta först.
När jag tittar på de installerade programmen på mitt system (Kontrollpanelen> Program och funktioner), den visar alla versioner av de omfördelbara paketen (och några av deras uppdateringar) som sträcker sig från version 8 till version 12 (VC ++ 2005 till VC ++ 2013). Jag har dem installerade på grund av de Microsoft-programmeringsverktyg jag använder. De flesta användare kommer inte att ha alla dessa.
Du kan hitta senaste nedladdningar för versioner av Visual C ++ som stöds från Microsoft. För våra ändamål här behöver du bara vara bekymrad över de som är märkta som "omfördelningsbara" paket. Länkar som klassificeras som servicepaket är för programmeringsverktygen, inte bara körtiderna. Du behöver bara de som för närvarande är listade 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 kontrollerar inte att den är korrekt installerad och inte har skadats. Installatörerna kan kontrollera att alla runtime-filer ä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 uppmanar dig att acceptera ett licensavtal innan du installerar om paketet igen. Alla andra har ett GUI som frågar dig om du vill reparera eller avinstallera den befintliga installationen. I de flesta fall löser en reparation alla 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 den här metoden med 2005 och 2008. Utan dem kommer Windows att generera en hel del fel och en hel del funktionalitet kommer inte att finnas där för dig när du startar om.
Slutsats
Med lite iakttagelse, en prövning av försök och fel, och lite förståelse för hur fel skapas från driftstider på systemet, programvaruproblem kan hittas och lösas utan att ta till 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.
Bruce har spelat med elektronik sedan 70-talet, datorer sedan början av 80-talet och svarat korrekt 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.