Cum de a rezolva Windows Visual C ++ Runtime Erori

Cum de a rezolva Windows Visual C ++ Runtime Erori / Întrebați experții

Bibliotecile comune 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 găurilor de securitate în codul partajat atunci când acestea sunt găsite, deoarece trebuie să fie patch-uri în mai puține locuri și nu necesită ca fiecare aplicație să fie recompusă.

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

Întrebarea cititorului nostru:

Cum se procedează Am rezolvat o problemă Windows Vista pe 32 de biți C: \ Windows \ explorer.exe pe un Dell Inspiron 530?

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

Alergare sfc / scannow nu găsește nici o eroare. Am descărcat actualizări de pe site-urile Dell și Microsoft, încercând să remediez această problemă. Am instalat, de asemenea, pachetul redistribubil Microsoft Visual C ++ 2010 (x86). PC-ul este complet actualizat în funcție de Windows Update.

Răspunsul lui Bruce:

Notă: Discuțiile despre Windows Explorer în Windows 7 și versiunile anterioare se aplică, de asemenea, la File Explorer în Windows 8 și versiuni ulterioare. Dacă există o diferență notabilă între ele, va fi explicit menționată.

Windows Shell

Windows Explorer este shell-ul și rulează ca proces explorer.exe, așa cum se vede în Task Manager sau Explorer Process Explorer Process Explorer - cea mai puternică înlocuire a managerului de activități [Windows] Process Explorer - cea mai puternică înlocuire a managerului de activități [Windows] Să fim sinceri, Windows Managerul de activități nu este grozav pentru înțelegerea și gestionarea proceselor care rulează pe computerul dvs. Chiar și pe Windows 8, unde este mult îmbunătățit, managerul de activități nu se poate apropia de ... Read More. Ca multe alte programe Windows, toate funcționalitățile furnizate de shell nu sunt încorporate în acel fișier executabil. Există zeci de alte fișiere EXE și DLL Cum de a rezolva erorile de fișier DLL lipsă Cum de a rezolva erorile de fișiere DLL lipsă Citiți mai multe utilizate pentru a implementa foi de proprietate, handlers de proprietăți, manuale de previzualizare, meniuri context și multe alte elemente pe care le utilizați în Windows Explorer zi.

Extensibil Shell

Extensiile Shell permit programatorilor să adauge cu ușurință funcționalitatea Windows Explorer scriind un DLL pentru a efectua sarcina și a înregistra DLL-ul cu sistemul de operare, astfel încât Explorer știe unde să găsească codul pentru a îndeplini sarcina. De exemplu, 7-Zip Cum de a extrage fișiere din ZIP, RAR, 7z și alte arhive comune Cum de a extrage fișiere din ZIP, RAR, 7z și alte arhive comune Ați fost vreodată confruntat cu un fișier .rar și ați întrebat cum să-l deschideți? Din fericire, gestionarea fișierelor ZIP și a altor arhive comprimate este simplă cu ajutorul instrumentelor corecte. Iată ce trebuie să știți. Citește mai mult adaugă un submeniu în meniul contextual standard, oferind acces rapid la sarcinile de manipulare a arhivelor, Sentinel pentru hard disk Păstrați-vă ochii pe HDD și SSD Sănătate cu Sentinel pe hard disk Păstrați-vă ochii pe HDD și SSD Sănătate cu Sentinel Hard Disk Ați avut vreodată un eșec la unitate? Din păcate, nu există nici un panaceu pentru prevenirea deteriorării hardware. Dar monitorizarea HDD-ului sau a SSD-ului, pentru a acționa atunci când moartea devine probabilă, este un prim pas. Read More adaugă suprapuneri de pictograme la pictogramele de unitate standard, astfel încât să puteți vedea dintr-o privire starea de sănătate a unității și HashTab adaugă o nouă foaie de proprietăți pentru a calcula și a afișa hashes-ul fișierului selectat.

Multe dintre aceste extensii de shell sunt implementate ca servere de model de obiect (COM) în proces. Aceasta înseamnă că atunci când un proces, în acest caz Windows Explorer, folosește extensia, acesta nu va apărea în Manager de activități sau Process Explorer ca proces separat de rulare cu propriul identificator de proces (PID). În schimb, se execută în interiorul procesului de apel explorer.exe.

Implicit proces de singură instanță

Windows Explorer este scris pentru a putea funcționa 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, acesta creează mediul de lucru Windows. Executarea acestuia creează din nou un fir nou î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ă de memorie, dar poate și să aducă propriul pic de răsucire când rezolvați problemele. O eroare critică sau o excepție nestăvilită în codul care se execută în procesul explorer.exe, inclusiv serverele în proces furnizate de DLL-uri, vor determina întregul mediu desktop să coboare cu el.

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

Acest lucru poate fi evitat printr-o simplă schimbare. Deschis Explorare Windows> Organizare> Opțiuni folder și căutare în Vista / 7. Pentru Windows 8 și versiuni ulterioare, deschideți Explorare fișiere> Vizualizare> Opțiuni> Modificare dosar și opțiuni de căutare. Selectează Fila Vizualizare și verificați Lansați ferestrele folderului într-un proces separat.

Schimbarea acestei setări face ca procesul dvs. desktop să nu fie izolat de toate celelalte ferestre Windows Explorer pe care le-ați deschis. Dacă oricare dintre ferestrele Explorer se blochează, desktop-ul dvs. va rămâne nesigur.

Microsoft Visual C ++ Runtime Library (CRT)

Biblioteca de execuție Microsoft Visual C ++ oferă programe de programare Windows care automatizează multe sarcini, 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 instalate. Un sistem Vista SP2 nou construit prin Windows 10 va avea atât versiunea 8.0, cât și versiunea 9.0 (VC 2005 și VC 2008, respectiv). Când este instalat un software suplimentar, acesta poate include și versiuni mai recente ale runtime-urilor, în funcție de ce versiune de Visual C ++ a fost utilizată pentru a crea programul sau oricare dintre componentele acestuia.

Erori de funcționare

Atunci când se întâlnește o eroare sau o excepție într-o bucată de cod, în mod ideal va fi tratată cât mai curând posibil în procedura de executare în curs și fie corectată, fie pentru a permite un eșec grațios. În cazul în care eroarea nu este tratată la nivel local, aceasta se transmite până la codul care a numit codul de execuție curent și procesul continuă până la rezolvarea excepției. Dacă se termină execuția în partea de sus a lanțului și încă nu este manipulată, va genera o eroare de execuție după cum se vede mai sus.

Când utilizatorul face clic pe butonul OK, procesul va fi terminat. Dacă programul are un comportament defect definit, cum ar fi serviciile critice sau starea acestuia este monitorizată de un alt proces, acesta poate fi respins automat. Asta se întâmplă în acest caz. Ecranul se blochează atunci când procesul explorer.exe este terminat, apoi desktop-ul revine la reluarea procesului explorer.exe.

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

Alte considerații

Cu descrierea cititorului nostru despre problema de mai sus, există câteva elemente suplimentare pe care trebuie să le luăm în considerare:

  • În momentul prăbușirii, Explorer încerca, dar nu putea, să populeze lista.
  • Incapacitatea de a accesa unitățile după ce spațiul de lucru a fost respawn, poate indica faptul că un alt proces are unul sau mai multe dintre aceste dispozitive blocate, împiedicând astfel accesul din procesul nou creat explorer.exe.
  • Alergare sfc / scannow și obținerea unui proiect de lege curat de sănătate, scade resursele protejate de Windows în partea de jos a listei pentru examinare. Alte cauze sunt mult mai probabil.

Fixele sunt în

În acest caz special, există trei domenii în care aș căuta o soluție. Primul implică serviciul de căutare Windows, cel de-al doilea implică investigarea extensiilor shell, iar ultima ar fi redistribuibilele VC.

Căutare Windows

Deoarece captura de ecran originală arată că se întâmplă un accident atunci când Explorer încearcă să populeze vizualizarea în listă, este posibil ca serviciul de căutare Windows să blocheze accesul la resursele necesare. Am văzut că acest lucru se întâmplă atunci când serviciul se blochează și nu are parametrii corectori de repornire.

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 fereastra de dialog Proprietăți. Asigurați-vă că setările din fila Recuperare se potrivesc cu imaginea de mai jos.

Cea mai obișnuită problemă este “Reporniți serviciul după:” setare. Această eroare apare frecvent atunci când această setare este diferită de zero.

Extensiile Shell Extensive

Descărcați ShellExView pentru Nirsoft pentru arhitectura sistemului (x86 sau x64), instalați-l și rulați-l. Va dura ceva timp pentru a examina sistemul și pentru a umple masa cu date. Derulați în coloana "Ora modificată CLSID" și faceți clic pe antet pentru a sorta în acest câmp. Dacă doriți să excludeți modulele furnizate de Microsoft, puteți merge la Opțiuni> Ascundeți toate extensiile Microsoft. Pentru cei care utilizează o versiune pe 64 de biți a Windows, este posibil să doriți să afișați și extensiile pe 32 de biți din 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 mergeți la Fișier> Dezactivați elementele selectate, sau faceți clic pe pictograma roșie a LED-ului din bara de instrumente. În mod ideal, acest lucru ar trebui făcut unul câte unul.

Verificați dacă simptomele persistă. În caz contrar, puteți să reactivați extensiile anterior dezactivate prin utilizarea acestora F8, Fișier> Activați elementele selectate, sau pictograma barei de instrumente cu LED-uri verzi. De aici, dezactivați o extensie diferită și repetați procesul de testare până când găsiți cel care provoacă problema.

Reparați / Reinstalați VC ++ Redistributables

Eu o folosesc pe aceasta ca pe o ultimă soluție, dacă un singur program aruncă greșeli. 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 redistribuite (și unele dintre actualizările acestora) variind de la versiunea 8 până la versiunea 12 (VC ++ 2005 - VC ++ 2013). Le-am instalat din cauza 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 suportate de Visual C ++ de la Microsoft. Pentru scopurile noastre aici, trebuie doar să vă preocupați de cele care sunt etichetate ca “redistribuibile” pachete. Legăturile care sunt clasificate ca pachete de service sunt pentru instrumentele de programare, nu doar pentru runtime. Veți avea nevoie doar de cele care sunt în prezent listate în programele instalate din sistemul dvs. Instalarea altor versiuni nu va ajuta în acest caz. Utilizatorii de sisteme de operare pe 64 de biți ar putea avea nevoie atât de versiunile x86 și x64 ale CRT.

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

Odată ce ați descărcat instalatorii corespunzători, executaț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 cele mai multe cazuri, o operațiune de reparații va rezolva orice problemă.

Dacă doriți să încercați metoda cea mai extremă, puteți dezinstala runtime-urile, reporniți mașina, apoi reinstalați-o. Nu recomand această metodă cu runtime-urile din 2005 și 2008. Fără acestea, Windows va genera o mulțime de erori și o mare parte a funcționalității nu va fi acolo pentru tine când reporniți.

Concluzie

Cu un pic de observare, o atingere de încercare și de eroare și o anumită înțelegere a modului în care erorile sunt generate de runtime pe sistem, problemele de software pot fi găsite și rezolvate fără a recurge la instrumente complicate de depanare și jurnale.

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

Explorați mai multe despre: File Explorer, Depanare, Windows, Windows Explorer, Căutare Windows.