Sådan rettes fejl i Windows Visual C ++

Sådan rettes fejl i Windows Visual C ++

Delt biblioteker i Windows gør programmering meget mere effektiv for programmereren, der ikke behøver at genopfinde hjulet hver gang, han skal udføre en fælles opgave. De gør det også lettere at tilslutte sikkerhedshuller i delt kode, når de findes, da det skal lappes på færre steder og ikke kræver, at hver applikation genkompileres.





På trods af disse positive aspekter kan de udgøre deres egne problemer, når de forsøger at fejlfinde grundårsagen til fejlmeddelelser, de kan generere.





Vores læsers spørgsmål:

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





Efter at have klikket på OK -knappen i dialogboksen, der vises på skærmbilledet, bliver skærmen mørkere og vender tilbage til normal kørsel, men den giver mig ikke adgang til C, D og til tider E -drevet, når jeg prøver at få adgang til dem fra Min computer.

Løb sfc /scannow finder ingen fejl. Jeg downloadede opdateringer fra både Dell og Microsofts websteder, der forsøgte at løse dette problem. Jeg har også installeret Microsoft Visual C ++ 2010 Redistributable Package (x86). PC'en er fuldstændig opdateret i henhold til Windows Update.



Bruce's svar:

Bemærk: Diskussioner om Windows Stifinder i Windows 7 og tidligere versioner gælder også for Stifinder i Windows 8 og nyere versioner. Hvis der er en bemærkelsesværdig forskel mellem dem, vil det blive udtrykkeligt angivet.

Windows Shell

Windows Stifinder er skallen og kører som explorer.exe -processen som vist i Jobliste eller Sysinternals 'Process Explorer. Ligesom mange andre Windows -programmer er al den funktionalitet, der leveres af skallen, ikke inkorporeret i den eneste eksekverbare fil. Der er snesevis af andre EXE- og DLL -filer, der bruges til at implementere ejendomsark, ejendomsbehandlere, forhåndsvisninger, kontekstmenuer og mange andre elementer, du bruger i Windows Stifinder hver dag.





Udvidelig skal

Shell -udvidelser giver programmerere mulighed for let at tilføje funktionalitet til Windows Stifinder ved at skrive en DLL til at udføre opgaven og registrere DLL'en med operativsystemet, så Explorer ved, hvor de skal finde koden for at udføre opgaven. For eksempel, 7-lynlås tilføjer en undermenu til standardkontekstmenuen, der giver hurtig adgang til arkivhåndteringsopgaver, Harddisk Sentinel tilføjer ikonoverlejringer til standarddrevsikonerne, så du hurtigt kan se status for drevets helbred, og HashTab tilføjer et nyt ejendomsark til beregning og visning af hash af den valgte fil.

Mange af disse shell-udvidelser er implementeret som COM-servere (in-process Component Object Model). Det betyder, at når en proces, i dette tilfælde Windows Stifinder, bruger udvidelsen, vil den ikke blive vist i Jobliste eller Process Explorer som en separat kørende proces med sit eget proces -id (PID). I stedet kører den inde i processen calling explorer.exe.





Standardproces for enkeltforekomster

Windows Stifinder er skrevet til at kunne køre som to separate processer, men - i standardkonfigurationen - vil den kun køre en enkelt forekomst. Når det først udføres som en del af opstartsprocessen, opretter det skrivebordsmiljøet i Windows. Udførelse af den igen skaber en ny tråd i den eksisterende proces, som viser det velkendte filhåndteringsvindue i stedet for at starte en ny proces.

Denne adfærd tillader et reduceret hukommelsesaftryk, men kan også bringe sit eget lille twist ved fejlfinding af problemer. En kritisk fejl eller ubehandlet undtagelse i kode, der udføres i explorer.exe-processen, herunder servere i processen, der leveres af DLL'er, får hele skrivebordsmiljøet til at gå ned med det.

I de fleste tilfælde genstartes desktopprocessen automatisk. Hvis det ikke genstarter, skal du stadig være i stand til at bruge Ctrl-Shift-Esc til at åbne Jobliste. Gå derfra til Fil> Ny opgave (Kør ...)> type explorer.exe> ​​OK at genstarte processen.

Dette kan undgås med en simpel ændring. Åben Windows Stifinder> Organiser> Mappe og søgemuligheder i Vista/7. Åbn Windows 8 og nyere Stifinder> Vis> Indstillinger> Skift mappe og søgemuligheder . Vælg Fanen Vis og tjek Start mappevinduer i en separat proces .

hvordan man kan vise sange på spotify

Hvis du ændrer denne indstilling, isoleres din desktop -proces fra alle de andre Windows Explorer -vinduer, du har åbnet. Hvis et af disse Explorer -vinduer går ned, forbliver dit skrivebord uskadt.

Microsoft Visual C ++ Runtime Library (CRT)

Microsoft Visual C ++ Runtime Library indeholder rutiner til programmering af Windows, der automatiserer mange opgaver, såsom input/output, filmanipulation, hukommelsestildeling, systemopkald og mange andre.

Hver Windows -installation vil have mindst to forskellige versioner af CRT installeret. En nybygget Vista SP2 via Windows 10 -maskine vil have både version 8.0 og 9.0 (henholdsvis VC 2005 og VC 2008) til stede. Når yderligere software er installeret, kan det også omfatte nyere versioner af runtimes, afhængigt af hvilken version af Visual C ++ der blev brugt til at oprette programmet eller en af ​​dets komponenter.

Kørselsfejl

Når der opstår en fejl eller en undtagelse i et stykke kode, vil den ideelt set blive håndteret hurtigst muligt i den aktuelt udførte procedure og enten blive rettet eller give mulighed for en yndefuld fejl. Hvis fejlen ikke håndteres lokalt, bliver den videregivet til den kode, der kaldte den aktuelt udførte kode, og processen fortsætter, indtil undtagelsen håndteres. Hvis det fuldfører sit løb til toppen af ​​kæden, og det stadig ikke håndteres, vil det generere en runtime -fejl som set ovenfor.

Når brugeren klikker på OK -knappen, afsluttes processen. Hvis programmet har en defineret fejladfærd, f.eks. Kritiske tjenester, eller dets driftstilstand overvåges af en anden proces, genopstår det muligvis automatisk. Dette er hvad der sker i dette tilfælde. Skærmen er sort, når explorer.exe -processen afsluttes, derefter kommer skrivebordet tilbage, når explorer.exe -processen genstartes.

Selvom fejlmeddelelsen ovenfor tydeligt angiver, at den kom fra explorer.exe -processen, er det sandsynligvis ikke et problem med selve explorer.exe. Det er meget mere sandsynligt, at synderen ligger andre steder, f.eks. En tredjepartsudvidelse, der bruges af Explorer.

Andre overvejelser

Med vores læsers beskrivelse af problemet ovenfor er der et par ekstra ting, vi skal tage højde for:

  • På tidspunktet for nedbruddet forsøgte Explorer, men kunne ikke udfylde listevisningen.
  • Manglende evne til at få adgang til drev, efter at skrivebordet har genopstået, kan indikere, at en eller flere af disse enheder er låst i en anden proces, og derved forhindrer adgang fra den nyoprettede explorer.exe -proces.
  • Løb sfc /scannow og får en ren sundhedsregning, taber Windows -beskyttede ressourcer til bunden af ​​listen til overvejelse. Andre årsager er langt mere sandsynlige.

Rettelserne er inde

I dette særlige tilfælde er der tre områder, hvor jeg vil lede efter en løsning. Den første involverer Windows Search -tjenesten, den anden indebærer undersøgelse af shell -udvidelser, og den sidste ville være VC ++ -fordelingerne selv.

Da det originale skærmbillede viser nedbruddet, når Explorer forsøger at udfylde listevisningen, er det muligt, at Windows Search -tjenesten blokerer adgangen til de nødvendige ressourcer. Jeg har set dette ske, når tjenesten går ned og ikke har de korrekte genstartsparametre.

Trykke Vind+R> type services.msc> OK at starte administrationskonsollen med servicemodulet. Rul ned til Windows Søgning, og dobbeltklik på posten for at åbne dialogboksen Egenskaber. Sørg for, at indstillingerne på fanen Gendannelse matcher billedet herunder.

Det mest almindelige problem er indstillingen 'Genstart service efter:'. Denne fejl opstår ofte, når denne indstilling ikke er nul.

Problematiske Shell -udvidelser

Hent Nirsofts ShellExView for din systemarkitektur (x86 eller x64), skal du installere og køre den. Det vil tage lidt tid at undersøge systemet og fylde tabellen med data. Rul over til kolonnen CLSID -ændret tid, og klik på overskriften for at sortere på dette felt. Hvis du ønsker at udelukke modulerne fra Microsoft, kan du gå til Valg> Skjul alle Microsoft -udvidelser . For dem, der bruger en 64-bit version af Windows, kan du også vise 32-bit udvidelserne på systemet ved at gå til Valg> Vis 32-bit Shell-udvidelser .

Kig efter udvidelser, der blev tilføjet lige før symptomerne begyndte. Vælg en eller flere, og tryk på F7 eller gå til Fil> Deaktiver valgte elementer , eller klik på det røde LED -ikon på værktøjslinjen. Ideelt set bør dette gøres en ad gangen.

Test for at se, om symptomerne vedvarer. Hvis de gør det, kan du genaktivere de tidligere deaktiverede udvidelser ved at bruge F8 , Fil> Aktiver valgte elementer eller det grønne LED -værktøjslinjeikon. Herfra skal du deaktivere en anden udvidelse og gentage testprocessen, indtil du finder den, der forårsager problemet.

Reparer/geninstaller VC ++ Redistributables

Jeg bruger denne som en sidste udvej, hvis kun et program sparker fejl ud. Hvis du har flere programmer, der har problemer med VC ++ runtime -fejl, kan du prøve dette først.

Når jeg ser på de installerede programmer på mit system ( Kontrolpanel> Programmer og funktioner ), viser den hver version af de omfordelelige pakker (og nogle af deres opdateringer) lige fra version 8 til version 12 (VC ++ 2005 til VC ++ 2013). Jeg har dem installeret på grund af de Microsoft -programmeringsværktøjer, jeg bruger. De fleste brugere har ikke alle disse.

Du kan finde seneste downloads til understøttede versioner af Visual C ++ fra Microsoft. Til vores formål her behøver du kun at bekymre dig om dem, der er mærket som 'omfordelelige' pakker. Links, der er klassificeret som service packs, er til programmeringsværktøjerne, ikke kun til runtime. Du skal kun bruge dem, der aktuelt er angivet i de installerede programmer på dit system. Installation af andre versioner hjælper ikke i dette tilfælde. Brugere af 64-bit operativsystemer har muligvis brug for både x86 og x64 versionerne af CRT.

Windows Update kontrollerer, om din computer har de nyeste opdateringer til disse pakker installeret, men den kontrollerer ikke, om den er korrekt installeret og ikke er brudt. Installatørerne kan kontrollere, at alle runtime -filer er de korrekte, og at alle registreringsposter er korrekte.

Når du har downloadet de relevante installatører, skal du køre dem på systemet. 2005 -versionerne vil bede dig om at acceptere en licensaftale, før du geninstallerer pakken. Alle de andre har en GUI, der spørger dig, om du vil reparere eller afinstallere den eksisterende installation. I de fleste tilfælde vil en reparation løse eventuelle problemer.

Hvis du vil prøve den mest ekstreme metode, kan du afinstallere runtimes, genstarte maskinen og derefter geninstallere dem. Jeg anbefaler ikke denne metode med driftstiden 2005 og 2008. Uden dem vil Windows generere en masse fejl, og en stor funktionalitet vil ikke være der for dig, når du genstarter.

Konklusion

Med en lille smule observation, et strejf af forsøg og fejl og en vis forståelse af, hvordan fejl genereres fra runtimes på systemet, kan softwareproblemer findes og løses uden at ty til komplicerede fejlfindingsværktøjer og logfiler.

Har du stødt på runtime fejl på dit system? Hvad var nødvendigt for at løse dem? Lad mig vide i kommentarerne herunder.

Del Del Tweet E -mail Her er hvorfor FBI udsendte en advarsel om Hive Ransomware

FBI udsendte en advarsel om en særlig grim stamme af ransomware. Her er hvorfor du skal være særlig forsigtig med Hive ransomware.

Læs Næste
Relaterede emner
  • Windows
  • Teknologi forklaret
  • Spørg eksperterne
  • Windows Stifinder
  • Windows
  • File Explorer
  • Windows -søgning
  • Fejlfinding
Om forfatteren Bruce Epper(13 artikler udgivet)

Bruce har leget med elektronik siden 70'erne, computere siden begyndelsen af ​​80'erne og besvaret præcist spørgsmål om teknologi, han ikke har brugt eller set hele tiden. Han irriterer også sig selv ved at forsøge at spille guitar.

Mere fra Bruce Epper

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere