Cum se remediază erorile de execuție Windows Visual C ++

Cum se remediază erorile de execuție Windows Visual C ++

Bibliotecile partajate din Windows fac programarea mult mai eficientă pentru programatorul care nu are nevoie să reinventeze roata de fiecare dată când are nevoie pentru a îndeplini o sarcină comună. De asemenea, facilitează conectarea orificiilor de securitate în codul partajat atunci când sunt găsite, deoarece trebuie corecționat în mai puține locuri și nu necesită recompilarea fiecărei aplicații.





În ciuda acestor aspecte pozitive, ei își pot pune propriile probleme atunci când încearcă să depaneze cauza principală a mesajelor de eroare pe care le pot genera.





Întrebarea cititorului nostru:

Cum pot rezolva o problemă Windows Vista 32-bit C: Windows explorer.exe pe un Dell Inspiron 530?





După ce ați făcut clic pe butonul OK din dialogul afișat în captura de ecran, ecranul se va înnegri și va reveni la funcționarea normală, dar nu îmi va permite să accesez unitățile C, D și, uneori, unitatea E când încerc să le accesez din Computerul meu.

Alergare sfc / scannow nu găsește nicio eroare. Am descărcat actualizări atât de pe site-urile web Dell, cât și de pe Microsoft, încercând să rezolv această problemă. De asemenea, am instalat pachetul redistribuibil Microsoft Visual C ++ 2010 (x86). PC-ul este complet actualizat conform Windows Update.



Răspunsul lui Bruce:

Notă: Discuțiile despre Windows Explorer în Windows 7 și versiunile anterioare se aplică și File Explorer în Windows 8 și versiunile ulterioare. Dacă există o diferență notabilă între ele, se va indica în mod explicit.

Windows Shell

Windows Explorer este shell și rulează ca proces explorer.exe așa cum se vede în Task Manager sau Sysinternals 'Process Explorer. La fel ca multe alte programe Windows, toate funcționalitățile oferite de shell nu sunt încorporate în acel fișier executabil. Există zeci de alte fișiere EXE și DLL utilizate pentru a implementa foi de proprietăți, gestionare de proprietăți, gestionare de previzualizare, meniuri contextuale și multe alte elemente pe care le utilizați în Windows Explorer în fiecare zi.





Shell extensibil

Extensiile Shell permit programatorilor să adauge cu ușurință funcționalitate la Windows Explorer scriind un DLL pentru a efectua sarcina și înregistrând DLL în sistemul de operare, astfel încât Explorer știe unde să găsească codul pentru a realiza sarcina. De exemplu, 7-Zip adaugă un submeniu la meniul contextual standard, oferind acces rapid la sarcinile de gestionare a arhivelor, Hard Disk Sentinel adaugă suprapuneri de pictograme la pictogramele standard ale unității, astfel încât să puteți vedea starea de sănătate a unității dintr-o privire și HashTab adaugă o nouă foaie de proprietăți, pentru a calcula și afișa hashurile fișierului selectat.

Multe dintre aceste extensii de shell sunt implementate ca servere Component Object Model (COM). Aceasta înseamnă că, atunci când un proces, în acest caz Windows Explorer, folosește extensia, acesta nu va apărea în Task Manager sau Process Explorer ca un proces de rulare separat cu propriul identificator de proces (PID). În schimb, se execută în procesul de apelare explorer.exe.





Proces implicit cu o singură instanță

Windows Explorer este scris pentru a putea rula ca două procese separate, dar - în configurația sa implicită - va rula doar o singură instanță. Când este executat pentru prima dată ca parte a procesului de pornire, creează mediul desktop Windows. Executarea acestuia din nou creează un nou fir în procesul existent, care afișează fereastra familiară de gestionare a fișierelor, în loc să înceapă un nou proces.

Acest comportament permite o amprentă redusă a memoriei, dar poate aduce și o mică întorsătură la rezolvarea problemelor. O eroare critică sau o excepție nesoluționată în codul care se execută în procesul explorer.exe, inclusiv servere în proces furnizate de DLL-uri, va face ca întregul mediu desktop să coboare odată cu acesta.

În majoritatea cazurilor, procesul desktop va fi repornit automat. Dacă nu se repornește, ar trebui să puteți folosi Ctrl-Shift-Esc pentru a deschide Managerul de activități. De acolo, du-te la Fișier> Sarcină nouă (Rulați ...)> tip explorer.exe> ​​OK pentru a reporni procesul.

Acest lucru poate fi evitat printr-o simplă schimbare. Deschis Windows Explorer> Organizare> Folder și opțiuni de căutare în Vista / 7. Pentru Windows 8 și versiunile ulterioare, deschideți File Explorer> View> Options> Change folder and search options . Selectează Fila Vizualizare și verifică Lansați ferestrele de dosare într-un proces separat .

de unde să cumpărați piese de computer second hand

Modificarea acestei setări izolează procesul desktop de toate celelalte ferestre Windows Explorer pe care le-ați deschis. Dacă oricare dintre aceste ferestre Explorer se blochează, desktopul dvs. va rămâne nevătămat.

Microsoft Visual C ++ Runtime Library (CRT)

Biblioteca Microsoft Visual C ++ Runtime oferă rutine pentru programarea Windows care automatizează multe activități, cum ar fi intrarea / ieșirea, manipularea fișierelor, alocarea memoriei, apelurile de sistem și multe altele.

Fiecare instalare Windows va avea cel puțin două versiuni diferite ale CRT instalat. O mașină Vista SP2 proaspăt construită prin Windows 10 va avea atât versiunea 8.0, cât și 9.0 (VC 2005 și respectiv VC 2008). Când este instalat un software suplimentar, acesta poate include și versiuni mai recente ale timpilor de execuție, în funcție de versiunea Visual C ++ utilizată pentru a crea programul sau oricare dintre componentele sale.

Erori de rulare

Când se întâlnește o eroare sau o excepție într-o bucată de cod, în mod ideal, aceasta va fi tratată cât mai curând posibil în procedura de executare curentă și va fi corectată sau va permite un eșec grațios. Dacă eroarea nu este tratată local, aceasta este transmisă codului care a apelat codul de executare curent și procesul continuă până când este tratată excepția. Dacă își finalizează cursa până în partea de sus a lanțului și tot nu este tratată, va genera o eroare de execuție așa cum se vede mai sus.

Când utilizatorul face clic pe butonul OK, procesul va fi încheiat. Dacă programul are un comportament de eșec definit, cum ar fi serviciile critice, sau starea de rulare a acestuia este monitorizată de un alt proces, acesta poate fi repus automat. Aceasta se întâmplă în acest caz. Ecranul se oprește la terminarea procesului explorer.exe, apoi desktopul revine la repornirea procesului explorer.exe.

Deși mesajul de eroare de mai sus indică în mod clar că provine din procesul explorer.exe, este puțin probabil să fie o problemă cu explorer.exe în sine. Este mult mai probabil că vinovatul se află în altă parte, cum ar fi o extensie terță parte care este utilizată de Explorer.

Alte considerente

Cu descrierea cititorului nostru despre problema de mai sus, există câteva elemente suplimentare de care trebuie să ținem cont:

  • La momentul prăbușirii, Explorer încerca, dar nu reușea, să populeze listview.
  • Incapacitatea de a accesa unitățile după ce desktop-ul a reapărut, poate indica un alt proces care are unul sau mai multe dintre aceste dispozitive blocate, împiedicând astfel accesul din procesul nou creat explorer.exe.
  • Alergare sfc / scannow și pentru a obține o factură de sănătate curată, scade resursele protejate de Windows în partea de jos a listei pentru a fi luate în considerare. Alte cauze sunt mult mai probabile.

Remediile sunt înăuntru

În acest caz particular, există trei domenii în care aș căuta o soluție. Primul implică serviciul Windows Search, al doilea implică investigarea extensiilor shell, iar ultimul ar fi redistribuibilele VC ++ în sine.

Deoarece captura de ecran originală arată accidentul care se întâmplă atunci când Explorer încearcă să completeze listview, este posibil ca serviciul de căutare Windows să blocheze accesul la resursele necesare. Am văzut acest lucru întâmplându-se când serviciul se blochează și nu are parametrii de repornire corecți.

presa Win + R> tip services.msc> OK pentru a porni consola de administrare cu modulul de servicii. Derulați în jos până la Căutare Windows și faceți dublu clic pe intrare pentru a deschide dialogul Proprietăți. Asigurați-vă că setările din fila Recuperare se potrivesc cu imaginea de mai jos.

Cea mai frecventă problemă este setarea „Reporniți serviciul după:”. Această eroare apare frecvent când această setare este diferită de zero.

Extensii Shell problematice

Descarca ShellExView al lui Nirsoft pentru arhitectura sistemului dvs. (x86 sau x64), instalați-o și rulați-o. Va dura puțin timp pentru a examina sistemul și a completa tabelul cu date. Derulați până la coloana CLSID Modified Time și faceți clic pe antet pentru a sorta pe acest câmp. Dacă doriți să excludeți modulele furnizate de Microsoft, puteți accesa Opțiuni> Ascundeți toate extensiile Microsoft . Pentru cei care utilizează o versiune de Windows pe 64 de biți, vă recomandăm să afișați extensiile de 32 de biți pe sistem accesând Opțiuni> Afișare extensii Shell pe 32 de biți .

Căutați extensii care au fost adăugate chiar înainte de începerea simptomelor. Selectați unul sau mai multe și apăsați F7 sau du-te la Fișier> Dezactivează elementele selectate sau faceți clic pe pictograma LED roșie din bara de instrumente. În mod ideal, acest lucru ar trebui să se facă unul câte unul.

Testați pentru a vedea dacă simptomele persistă. În caz contrar, puteți reactiva extensia (extensiile) dezactivate anterior folosind F8 , Fișier> Activați elementele selectate , sau pictograma LED verde a barei de instrumente. De aici, dezactivați o extensie diferită și repetați procesul de testare până când îl găsiți pe cel care cauzează problema.

Reparați / reinstalați VC ++ Redistributables

Eu îl folosesc ca ultimă soluție, dacă un singur program elimină erorile. Dacă aveți mai multe programe care au probleme cu erorile de execuție VC ++, vă recomandăm să încercați mai întâi acest lucru.

Când mă uit la programele instalate pe sistemul meu ( Panou de control> Programe și caracteristici ), arată fiecare versiune a pachetelor redistribuibile (și unele dintre actualizările lor) variind de la versiunea 8 până la versiunea 12 (VC ++ 2005 până la VC ++ 2013). Le-am instalat datorită instrumentelor de programare Microsoft pe care le folosesc. Majoritatea utilizatorilor nu vor avea toate acestea.

Puteți găsi ultimele descărcări pentru versiunile acceptate de Visual C ++ de la Microsoft. În scopurile noastre de aici, trebuie să vă preocupați doar de cele etichetate ca pachete „redistribuibile”. Link-urile care sunt clasificate ca pachete de servicii sunt pentru instrumentele de programare, nu doar pentru durate. Veți avea nevoie doar de cele care sunt listate în prezent în programele instalate pe sistemul dvs. Instalarea altor versiuni nu va ajuta în acest caz. Utilizatorii de sisteme de operare pe 64 de biți pot avea nevoie atât de versiunile x86, cât și de x64 ale CRT.

Windows Update verifică dacă computerul dvs. are cele mai recente actualizări pentru aceste pachete instalate, dar nu verifică dacă este instalat corect și nu a fost rupt. Instalatorii pot verifica dacă toate fișierele de execuție sunt cele adecvate și că toate intrările de registry sunt corecte.

După ce ați descărcat programele de instalare corespunzătoare, rulați-le pe sistem. Versiunile din 2005 vă vor solicita să acceptați un acord de licență înainte de a reinstala pachetul. Toate celelalte au o interfață grafică care vă va întreba dacă doriți să reparați sau să dezinstalați instalarea existentă. În majoritatea cazurilor, o operațiune de reparație va rezolva orice problemă.

Dacă doriți să încercați cea mai extremă metodă, puteți dezinstala timpul de execuție, reporniți mașina, apoi le reinstalați. Nu recomand această metodă cu timpul de rulare 2005 și 2008. Fără acestea, Windows va genera o mulțime de erori și o mulțime de funcționalități nu vor fi disponibile atunci când reporniți.

Concluzie

Cu un pic de observație, o tentă de încercare și eroare și o oarecare înțelegere a modului în care sunt generate erorile din timpul de rulare pe sistem, problemele software pot fi găsite și rezolvate fără a recurge la instrumente și jurnale de depanare complicate.

Ați întâmpinat erori de runtime pe sistemul dvs.? Ce era necesar pentru a le rezolva? Anunță-mă în comentariile de mai jos.

Acțiune Acțiune Tweet E-mail Iată de ce FBI a emis un avertisment pentru Hive Ransomware

FBI a emis un avertisment cu privire la o tulpină deosebit de urâtă de ransomware. Iată de ce trebuie să fiți deosebit de atenți la ransomware-ul Hive.

Citiți în continuare
Subiecte asemănătoare
  • Windows
  • Tehnologie explicată
  • Întrebați experții
  • Windows Explorer
  • Windows
  • Explorator de fișiere
  • Căutare Windows
  • Depanare
Despre autor Bruce Epper(13 articole publicate)

Bruce se joacă cu electronica din anii 70, computerele de la începutul anilor 80 și răspunde cu exactitate la întrebări despre tehnologia pe care nu a folosit-o și nici nu a văzut-o tot timpul. De asemenea, se enervează încercând să cânte la chitară.

Mai multe de la Bruce Epper

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona