Oglas
Skupne knjižnice v operacijskem sistemu Windows omogočajo programiranje veliko učinkovitejšega za programerja, ki mu ni treba izumiti kolesa vsakič, ko mora opraviti skupno nalogo. Prav tako olajšajo vtikanje varnostnih lukenj v skupno kodo, ko jih najdejo, saj jih je treba zakrpati na manj mestih in ne zahteva, da se vsaka aplikacija znova kompilira.
Kljub tem pozitivnim vidikom lahko pri poskusu odpravljanja osnovnega vzroka sporočil o napakah predstavljajo svoje težave.
Vprašanje našega bralca:
Kako lahko odpravim 32-bitno težavo s sistemom C: \ Windows \ explor.exe za sistem Windows Vista na Dell Inspiron 530?
Po kliku gumba V redu v pogovornem oknu, ki je prikazano na posnetku zaslona, se zaslon potemni in se vrne v normalno stanje teče, vendar mi ne bo omogočil dostopa do C, D in včasih tudi pogona E, ko poskušam dostopati do njih iz Mojega Računalnik.
Teče sfc / scannow ne najde nobenih napak Posodobitve sem prenašal z spletnih mest Dell in Microsoft, ki so poskušali odpraviti to težavo. Prav tako sem namestil paket Microsoft za distribucijo Microsoft Visual C ++ 2010 (x86). Računalnik je popolnoma posodobljen glede na Windows Update.
Bruceov odgovor:
Opomba: Razprave o programu Windows Explorer v sistemih Windows 7 in starejših različicah veljajo tudi za File Explorer v Windows 8 in novejših različicah. Če je med njimi opazna razlika, bo to izrecno navedeno.
Okvir Windows
Windows Explorer je lupine in deluje kot Explorerr.exe postopek, kot je razvidno iz upravitelja opravil ali Raziskovalec procesov Sysinternals Proces Explorer - Zamenjava upravitelja opravil [Windows]Bodimo iskreni, upravitelj opravil Windows ni tako odličen za razumevanje in upravljanje procesov, ki se izvajajo v vašem računalniku. Tudi v operacijskem sistemu Windows 8, kjer je precej izboljšan, se upravitelj opravil ne more približati ... Preberi več . Kot mnogi drugi programi Windows, tudi vsa funkcija, ki jo nudi lupina, ni vključena v eno samo izvršljivo datoteko. Obstaja več deset drugih EXE in Datoteke DLL Kako popraviti manjkajoče napake datoteke DLL Preberi več se uporablja za implementacijo listov z lastnostmi, sredstva za obdelavo lastnosti, predoglednike, kontekstne menije in številne druge elemente, ki jih uporabljate v programu Windows Explorer vsak dan.
Raztezna lupina
Razširitve školjk programerjem omogočajo enostavno dodajanje funkcionalnosti v Windows Explorer, tako da napišejo DLL za izvajanje nalogo in registracijo DLL-ja v operacijskem sistemu, tako da Explorer ve, kje najti kodo za izvedbo naloga. Na primer 7-zadrga Kako izvleči datoteke iz ZIP, RAR, 7z in drugih običajnih arhivovSte se že kdaj srečali z datoteko .rar in ste se spraševali, kako jo odpreti? Na srečo je s pravimi orodji upravljanje datotek ZIP in drugih stisnjenih arhivov preprosto. Tukaj je tisto, kar morate vedeti. Preberi več doda podmeni v standardni kontekstni meni in s tem omogoči hiter dostop do opravil z arhiviranjem, Sentinel trdega diska Bodite pozorni na zdravje vašega trdega diska in SSD s pomočjo trdega diska SentinelSte že kdaj imeli okvaro pogona? Na žalost ni panaceje za preprečevanje poškodb strojne opreme. Toda prvi korak za spremljanje vašega trdega diska ali SSD-ja za ukrepanje, ko postane smrtna. Preberi več na standardne ikone pogona doda prekrivne ikone, tako da lahko na prvi pogled vidite zdravstveno stanje pogona in HashTab doda nov list lastnosti, da izračuna in prikaže hashe izbrane datoteke.
Mnoge od teh razširitev lupine se izvajajo kot strežniki komponentnega modela objekta (COM) v postopku. To pomeni, da ko postopek, v tem primeru Windows Explorer, uporablja razširitev, se ne bo pojavil v upravitelju opravil ali raziskovalec procesov kot ločen teče postopek z lastnim identifikatorjem procesa (PID). Namesto tega se izvrši znotraj kličejor.si.
Privzeti enostopenjski postopek
Windows Explorer je zapisan, da se lahko izvaja kot dva ločena procesa, vendar - v privzeti konfiguraciji - bo zagnal samo en primerek. Ko je prvič izveden kot del zagonskega procesa, ustvari namizje Windows. Ponovna izvedba ustvari novo nit v obstoječem procesu, ki prikaže že znano okno za upravljanje datotek, namesto da začne nov postopek.
To vedenje omogoča zmanjšan odtis pomnilnika, lahko pa prinese tudi svoje majhne zasuke pri odpravljanju težav. Kritična napaka ali neobdelana izjema v kodi, ki se izvrši v postopku Explorerr.exe, vključno s strežniki v procesu, ki jih zagotavljajo DLL-ji, bo povzročila, da se celotno namizno okolje spusti z njega.
V večini primerov se postopek namizja samodejno zažene. Če se ne znova zažene, bi morali še vedno uporabljati Ctrl-Shift-Esc, da odprete upravitelja opravil. Od tam pojdite v Datoteka> Nova naloga (zaženi…)> tip explor.exe> V redu za ponovni zagon postopka.
Temu se lahko izognemo s preprosto spremembo. Odprto Windows Explorer> Uredi> Možnosti map in iskanja v Vista / 7. Za Windows 8 in novejše različice odprite File Explorer> Pogled> Možnosti> Spremeni mapo in možnosti iskanja. Izberite Kartica Pogled in preverite Okna mape zaženite v ločenem postopku.
Če spremenite to nastavitev, vaš proces namizja izolira od vseh drugih odprtih oken Windows Explorerja. Če se katero od teh oken raziskovalec zruši, bo vaše namizje ostalo nedotaknjeno.
Microsoft Visual C ++ Runtime Library (CRT)
Microsoft Visual C ++ Runtime Library ponuja rutine za programiranje sistema Windows, ki avtomatizirajo številne naloge, kot so vhod / izhod, manipulacija datotek, dodelitev pomnilnika, sistemski klici in številne druge.
Vsaka namestitev sistema Windows bo imela nameščeni vsaj dve različici različice CRT. Na novo vgrajeni napravi Vista SP2 prek sistema Windows 10 bosta na voljo različici 8.0 in 9.0 (VC 2005 in VC 2008). Ko je nameščena dodatna programska oprema, lahko vključuje tudi novejše različice izvajalnih programov, odvisno od tega, katera različica Visual C ++ je bila uporabljena za ustvarjanje programa ali katere od njegovih komponent.
Napake med izvajanjem
Ko se v koščku kode pojavi napaka ali izjema, je v idealnem primeru, da jo odpravimo takoj možno v trenutno izvršljivem postopku in bodisi popraviti bodisi omogočiti milostno neuspeh. Če napake ne odpravimo lokalno, se prenese do kode, ki je klicala trenutno izvršljivo kodo, postopek pa se nadaljuje, dokler se ne obravnava izjema. Če konča vožnjo do vrha verige in se še vedno ne obdeluje, bo ustvaril napako med izvajanjem, kot je prikazano zgoraj.
Ko uporabnik klikne gumb V redu, se postopek konča. Če ima program definirano odpovedno vedenje, na primer kritične storitve, ali njegovo stanje delovanja spremlja drug postopek, ga je mogoče samodejno obnoviti. To se dogaja v tem primeru. Zaslon se izbriše, ko se postopek Explorerr.exe konča, nato pa se namizje vrne, ko se postopek Explorerr.exe znova zažene.
Čeprav zgoraj sporočilo o napaki jasno kaže, da je prišlo iz postopka explor.exe, verjetno ne bo težav s samim explor.exe. Mnogo verjetneje je, da je krivec drugje, kot je razširitev drugih proizvajalcev, ki jo uporablja Explorer.
Druga vprašanja
Ob zgornjem opisu naše bralke je nekaj dodatnih elementov, ki jih moramo upoštevati:
- V času sesutja je Explorer skušal, vendar ni mogel, naseliti seznama.
- Nezmožnost dostopa do pogonov po ponovnem razmnoževanju namizja lahko pomeni, da ima drug postopek ali več teh naprav zaklenjenih, s čimer se prepreči dostop novo ustvarjenemu Explor.exe postopek.
- Teče sfc / scannow in zaradi čistega zdravstvenega stanja spusti v zaščito vire Windows na dno seznama. Drugi vzroki so veliko bolj verjetni.
Popravki so v
V tem konkretnem primeru obstajajo tri področja, na katerih bi iskal rešitev. Prva vključuje storitev iskanja Windows, druga vključuje raziskovanje razširitev lupin, zadnja pa bi bila sama prerazporeditev VC ++.
Iskanje Windows
Ker izvirni posnetek zaslona prikazuje zrušitev, ki se zgodi, ko se Explorer skuša naseliti listview, možno je, da storitev iskanja Windows blokira dostop do potrebnih virov. To sem videl, ko se storitev zruši in nima ustreznih parametrov ponovnega zagona.
Pritisnite Win + R> tip services.msc> V redu da zaženete konzolo za upravljanje z modulom storitev. Pomaknite se navzdol do iskanja Windows in dvokliknite vnos, da odprete pogovorno okno Lastnosti. Poskrbite, da se nastavitve na zavihku za obnovitev ujemajo s spodnjo sliko.
Najpogostejša težava je nastavitev »Ponovno zaženite storitev po:«. Ta napaka se pogosto pojavi, če ta nastavitev ni enaka nič.
Problematične razširitve lupin
Prenesi Nirsoft's ShellExView za sistemsko arhitekturo (x86 ali x64) namestite in zaženite. Potrebno bo nekaj časa, da preučimo sistem in napolnimo tabelo s podatki. Pomaknite se do stolpca Modificirani čas CLSID in kliknite na glavo, da razvrstite to polje. Če želite izključiti module, ki jih zagotavlja Microsoft, lahko greste na Možnosti> Skrij vse Microsoftove razširitve. Za tiste, ki uporabljajo 64-bitno različico sistema Windows, boste morda želeli tudi prikazati 32-bitne razširitve v sistemu tako, da odprete Možnosti> Prikaži 32-bitne razširitve školjk.
Poiščite razširitve, ki so bile dodane tik preden so se simptomi začeli. Izberite enega ali več in pritisnite F7 ali pojdite na Datoteka> Onemogoči izbrane predmeteali kliknite na rdečo ikono LED v orodni vrstici. V idealnem primeru bi bilo treba to storiti eno za drugim.
Preverite, ali simptomi še obstajajo. V tem primeru lahko znova omogočite predhodno onemogočene razširitve z uporabo F8, Datoteka> Omogoči izbrane predmeteali zeleno ikono LED orodne vrstice. Tukaj onemogočite drugo razširitev in ponavljajte postopek testiranja, dokler ne najdete tistega, ki povzroča težavo.
Popravite / ponovno namestite VC ++, ki jih je mogoče ponovno razdeliti
To uporabljam kot zadnjo možnost, če le en program odganja napake. Če imate več programov, ki imajo težave z napakami med izvajanjem VC ++, boste morda želeli najprej preizkusiti to.
Ko gledam nameščene programe v mojem sistemu (Nadzorna plošča> Programi in funkcije), prikazuje vsako različico prerazporedljivih paketov (in nekatere njihove posodobitve), od različice 8 do različice 12 (VC ++ 2005 do VC ++ 2013). Nameščen sem jih zaradi Microsoftovih programskih orodij, ki jih uporabljam. Večina uporabnikov vseh teh ne bo imela.
Lahko najdete najnovejši prenosi za podprte različice Visual C ++ od Microsofta. Za naše namene tukaj se morate ukvarjati samo s tistimi, ki so označeni kot "prerazdeljeni" paketi. Povezave, ki so razvrščene kot servisni paketi, so namenjene programskim orodjem, ne le časom izvajanja. Potrebovali boste le tiste, ki so trenutno navedeni v nameščenih programih v vašem sistemu. Namestitev drugih različic v tem primeru ne bo pomagala. Uporabniki 64-bitnih operacijskih sistemov bodo morda potrebovali različice CRT x86 in x64.
Windows Update preveri, ali je v vašem računalniku nameščene najnovejše posodobitve za te pakete, vendar ne preverja, ali je pravilno nameščen in da ni bil pokvarjen. Namestitveni programi lahko preverijo, ali so vse datoteke izvajanja ustrezne in ali so vsi vpisi v register pravilni.
Ko naložite ustrezne namestitvene programe, jih zaženite v sistemu. Različice iz leta 2005 vas bodo pozvale, da sprejmete licenčno pogodbo pred ponovno namestitvijo paketa. Vsi ostali imajo GUI, ki vas bo vprašal, ali želite popraviti ali odstraniti obstoječo namestitev. V večini primerov bo popravilo popravilo kakršne koli težave.
Če želite preizkusiti najbolj skrajno metodo, lahko odstranite čas izvajanja, znova zaženete stroj in jih znova namestite. Te metode ne priporočam v obdobjih 2005 in 2008. Brez njih bo Windows ustvaril veliko napak in veliko funkcionalnosti vam ob ponovnem zagonu ne bo na voljo.
Zaključek
Z malo opazovanja, pridihom poskusov in napak in nekaj razumevanja, kako nastanejo napake čas izvajanja sistema, težave s programsko opremo je mogoče najti in rešiti, ne da bi se zatekli k zapletenim orodjem za odpravljanje napak in dnevniki.
Ste naleteli na napake med izvajanjem v vašem sistemu? Kaj je bilo potrebno za njihovo reševanje? Sporočite mi v spodnjih komentarjih.
Bruce se z elektroniko igra od 70. let naprej, z računalniki od zgodnjih 80-ih let in natančno odgovarja na vprašanja o tehnologiji, ki jih ves čas ni uporabljal niti videl. Prav tako se moti, ker poskuša igrati kitaro.