Delade bibliotek i Windows gör programmeringen mycket effektivare för programmeraren som inte behöver återuppfinna 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 behöver patchas på färre ställen och kräver inte att varje applikation omkompileras.
Trots dessa positiva aspekter kan de utgöra egna problem när de försöker felsöka orsaken till felmeddelanden som de kan generera.
Vår läsars fråga:
Hur fixar jag ett Windows Vista 32-bitars C: \ Windows \ explorer.exe-problem på en Dell Inspiron 530?
När du har klickat på OK-knappen i dialogrutan som visas på skärmbilden, kommer skärmen att svarta ut och återgå till normal körning, men det tillåter inte mig att komma åt C, D och ibland E-enheten när du försöker komma åt dem från den här datorn.
Running sfc / scannow hittar inga fel. Jag hämtade uppdateringar från både Dell och Microsoft webbplatser som försöker fixa det här problemet. Jag har också installerat Microsoft Visual C ++ 2010 Redistributable Package (x86). Datorn är helt uppdaterad enligt Windows Update.
Bruces svar:
Obs! Diskussioner om Windows Explorer i Windows 7 och tidigare versioner gäller även för File Explorer i Windows 8 och senare versioner. Om det finns en anmärkningsvärd skillnad mellan dem kommer det uttryckligen att anges.
Windows Shell
Windows Explorer är skalet och körs som explorer.exe-processen som visas i Task Manager eller Sysinternals Process Explorer Process Explorer - Den mest kraftfulla Task Manager Replacement [Windows] Process Explorer - Den mest kraftfulla Task Manager Ersättning [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 uppgiftshanteraren inte komma nära ... Läs mer. Liksom många andra Windows-program ingår inte alla funktioner som tillhandahålls av skalet i den enda exekverbara filen. Det finns dussintals andra EXE- och DLL-filer Så här fixar du saknade DLL-filfel Så här fixar du saknade DLL-filfel Läs mer används för att implementera egenskapsark, egenskapshanterare, förhandsgranskningshandlare, sammanhangsmenyer och många andra element du använder i Utforskaren för Utforskare varje gång dag.
Extensible Shell
Shell förlängningar tillåter programmerare att enkelt lägga till funktionalitet till Utforskaren genom att skriva en DLL för att utföra uppgiften och registrera DLL med operativsystemet, så Explorer vet var du ska hitta koden för att utföra uppgiften. Till exempel, 7-Zip Hur man extraherar filer från ZIP, RAR, 7z och andra vanliga arkiv Hur man extraherar filer från ZIP, RAR, 7z och andra vanliga arkiv Har du någonsin mött en .rar-fil och undrade hur man öppnar den? Lyckligtvis är det enkelt att hantera ZIP-filer och andra komprimerade arkiv med rätt verktyg. Här är vad du behöver veta. Läs mer lägger till en undermeny i standardmenyn, vilket ger snabb åtkomst till arkivhanteringsuppgifter, hårddiskcentraler Håll ögonen på din hårdvara och SSD-hälsa med hårddiskens sentinel Håll ögonen på din hårddisk- och SSD-hälsa med hårddisk Sentinel Har du någonsin haft ett fel på enheten? Tyvärr finns det ingen panacea för att förhindra maskinskador. Men att övervaka din hårddisk eller SSD, att agera när deras död blir sannolikt, är ett första steg. Läs mer lägger till ikon överlagringar till standarddrevikonen, så att du kan se drivhälsotillståndet en överblick, och HashTab lägger till ett nytt egenskapsblad för att beräkna och visa hash av den valda filen.
Många av dessa skalförlängningar implementeras som komponentobjektmodeller (COM) -servrar. Det betyder att när en process, i detta fall Windows Explorer, använder förlängningen, kommer den inte att visas i Aktivitetshanteraren eller Process Explorer som en separat körprocess med egen processidentifierare (PID). Istället är det exekvering i den kallande explorer.exe-processen.
Standard enstaka process
Windows Explorer är skrivet för att kunna köra som två separata processer, men - i standardkonfigurationen - kommer det bara att köras en enda instans. När den först körs som en del av startprocessen skapar den Windows-skrivbordsmiljön. Genom att utfö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 möjliggör ett minskat minnesfotavtryck, men kan också medföra en egen liten vridning vid felsökningsproblem. Ett kritiskt fel eller obehandlat undantag i kod som körs i explorer.exe-processen, inklusive in-process-servrar som tillhandahålls av DLL-filer, kommer att orsaka att hela skrivbordsmiljön går ner med den.
I de flesta fall startas skrivbords processen automatiskt igen. Om det inte startar om, borde du fortfarande kunna använda Ctrl-Shift-Esc för att hämta uppgiftshanteraren. 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 ändring. Öppna Utforskaren i Windows> 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 fliken Visa och kolla Starta mappfönster i en separat process .
Om du ändrar den här inställningen isoleras skrivbords processen från alla andra Windows Explorer-fönster som du har öppnat. Om något av dessa Explorer-fönster kraschar, kommer skrivbordet att vara 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, t.ex. inmatning / utmatning, filmanipulation, minnesallokering, systemsamtal och många andra.
Varje Windows-installation kommer att ha minst två olika versioner av CRT installerad. 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 det också innehålla senare 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.
Runtime Fel
När ett fel eller undantag uppträder i ett kodstycke, kommer det helst att hanteras så snart som möjligt i den nuvarande proceduren, och antingen korrigeras eller tillåter ett graciöst fel. Om felet inte hanteras lokalt går det vidare till koden som kallat den exekverande koden, och processen fortsätter tills undantaget hanteras. Om det slutar sin körning till toppen av kedjan och det fortfarande inte hanteras, kommer det att generera ett runtime-fel enligt ovan.
När användaren klickar på OK-knappen avslutas processen. Om programmet har ett definierat felbeteende, såsom kritiska tjänster, eller dess körstatus övervakas av en annan process, kan den automatiskt respawned. Det här är vad som händer i detta fall. Skärmen svär ut när processen explorer.exe avslutas, sedan kommer skrivbordet tillbaka när explorer.exe-processen startas om.
Även om felmeddelandet ovan tydligt visar att det kom från explorer.exe-processen, är det inte troligt att det är ett problem med explorer.exe själv. Det är mycket mer troligt att skyldige ligger någon annanstans, till exempel en utökad tredjepart som används av Explorer.
Andra överväganden
Med vår läsares beskrivning av problemet ovan finns det några extra saker vi måste ta hänsyn till:
- Vid tiden för kraschen försökte Explorer, men inte, att fylla i listvisningen.
- Oförmågan att komma åt enheter efter det att skrivbordet har responderat kan innebära att en annan process har låst en eller flera av dessa enheter, vilket förhindrar åtkomst från den nyligen skapade explorer.exe-processen.
- Running sfc / scannow och får en ren hälsokoll, släpper Windows skyddade resurser längst ner på listan för övervägande. Andra orsaker är mycket mer troliga.
Fixerna är i
I det här fallet finns tre områden där jag skulle leta efter en lösning. Den första handlar om Windows Search-tjänsten, den andra innebär att man undersöker skaltillägg, och den sista skulle vara VC + + -fördelarna själva.
Windows Search
Eftersom den ursprungliga skärmdumpen visar att kraschen inträffar när Utforskaren försöker fylla i listvisningen, är det möjligt att Windows Search-tjänsten blockerar åtkomst till nödvändiga resurser. Jag har sett detta hända när tjänsten kraschar och inte har rätt omstartsparametrar.
Tryck på Win + R> typ services.msc> OK för att starta hanteringskonsolen med servicemodulen. Bläddra ner till Windows Search och dubbelklicka på posten för att öppna dialogrutan Egenskaper. Se till att inställningarna på fliken Recovery matchar bilden nedan.
Det vanligaste problemet är inställningen "Starta om tjänsten efter:". Detta fel uppstår ofta när denna inställning är noll.
Problematiska Shell Extensions
Hämta Nirsoft's 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. Bläddra ö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 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 Shell-förlängningar .
Leta efter tillägg som tillkom precis innan symtomen började. Välj en eller flera och tryck på F7 eller gå till Arkiv> Avaktivera markerade objekt, eller klicka på den röda LED-ikonen i verktygsfältet. Helst bör detta göras en i taget.
Testa för att se om symtomen kvarstår. Om de gör det kan du återaktivera de tidigare inaktiverade tillägget genom att använda F8, Arkiv> Aktivera markerade objekt eller den gröna LED-verktygsfältikonen. Härifrån avaktiverar du en annan anknytning och upprepar testprocessen tills du hittar den som orsakar problemet.
Reparera / Sätt tillbaka 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, kan du prova det här först.
När du tittar på de installerade programmen på mitt system ( Kontrollpanelen> Program och funktioner ), visar den alla versioner av de omfördelbara paketen (och några av deras uppdateringar) 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 har inte alla dessa.
Du kan hitta de senaste nedladdningarna för stödda versioner av Visual C ++ från Microsoft. För våra ändamål här behöver du bara vara oroad över dem som är märkta som "omfördelbara" paket. Länkar som klassificeras som service packar är för programmeringsverktygen, inte bara runtime. Du behöver bara de som för närvarande finns listade i de installerade programmen på ditt system. Installera andra versioner kommer inte att hjälpa till 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 den är korrekt installerad och inte har blivit trasig. Installatörerna kan kontrollera att alla runtime-filer är de korrekta och alla registerposter är korrekta.
När du har laddat ner lämpliga installationsprogram, kör dem på systemet. 2005-versionerna uppmanar dig att acceptera ett licensavtal innan du installerar om paketet igen. Alla andra har en GUI som frågar om du vill reparera eller avinstallera den befintliga installationen. I de flesta fall kommer en reparation att lösa några problem.
Om du vill prova den mest extrema metoden kan du avinstallera körtiden, starta om datorn och installera om dem igen. Jag rekommenderar inte den här metoden med körtiderna 2005 och 2008. Utan dem kommer Windows att generera en massa fel och en hel del funktionalitet kommer inte att finnas där för dig när du startar om.
Slutsats
Med lite observationer, en touch av försök och fel, och en viss förståelse för hur fel genereras av körningstider på systemet, kan programvaruproblem hittas och lösas utan att tillgripa komplicerade felsökningsverktyg och loggar.
Har du stött på runtimefel på ditt system? Vad krävs för att lösa dem? Låt mig veta i kommentarerna nedan.