Come correggere gli errori di Windows Visual C ++ Runtime
Le librerie condivise in Windows rendono la programmazione molto più efficiente per il programmatore che non ha bisogno di reinventare la ruota ogni volta che ha bisogno di eseguire un compito comune. Semplificano anche la possibilità di tappare i buchi di sicurezza nel codice condiviso quando vengono rilevati poiché è necessario correggerli in meno punti e non richiede la ricompilazione di ogni applicazione.
Nonostante questi aspetti positivi, possono porre i propri problemi quando tentano di risolvere la causa principale dei messaggi di errore che possono generare.
La nostra domanda dei lettori:
Come risolvere un problema di Windows Vista a 32 bit C: \ Windows \ explorer.exe su un Dell Inspiron 530?
Dopo aver fatto clic sul pulsante OK nella finestra di dialogo mostrata nello screenshot, lo schermo si oscurerà e tornerà alla normale esecuzione, ma non mi permetterà di accedere al C, D, e, a volte, al drive E quando cerco di accedervi dal mio computer.
In esecuzione sfc / scannow non trova errori Ho scaricato gli aggiornamenti da entrambi i siti Web Dell e Microsoft cercando di risolvere questo problema. Ho anche installato Microsoft Visual C ++ 2010 Redistributable Package (x86). Il PC è completamente aggiornato secondo Windows Update.
La risposta di Bruce:
Nota: le discussioni su Windows Explorer in Windows 7 e versioni precedenti si applicano anche a Esplora file in Windows 8 e versioni successive. Se c'è una differenza notevole tra di loro, sarà esplicitamente dichiarato.
La shell di Windows
Windows Explorer è la shell e viene eseguita come il processo explorer.exe come visto in Task Manager o Process Explorer di Process Explorer di Sysinternals - La sostituzione del Task Manager più potente [Windows] Process Explorer - La sostituzione del Task Manager più potente [Windows] Siamo onesti, Windows Task Manager non è eccezionale per comprendere e gestire i processi in esecuzione sul tuo computer. Anche su Windows 8, dove è molto migliorato, il task manager non può avvicinarsi al ... Per saperne di più. Come molti altri programmi Windows, tutte le funzionalità fornite dalla shell non sono incorporate in quel singolo file eseguibile. Ci sono dozzine di altri file EXE e DLL Come correggere errori di file DLL mancanti Come correggere errori di file DLL mancanti Leggi Più usato per implementare i fogli delle proprietà, i gestori di proprietà, i gestori di anteprime, i menu di scelta rapida e molti altri elementi che usi in Esplora risorse ogni giorno.
Shell estensibile
Le estensioni della shell consentono ai programmatori di aggiungere facilmente funzionalità a Windows Explorer scrivendo una DLL per eseguire l'attività e registrando la DLL con il sistema operativo, quindi Explorer sa dove trovare il codice per eseguire l'operazione. Ad esempio, 7-Zip Come estrarre file da ZIP, RAR, 7z e altri archivi comuni Come estrarre file da ZIP, RAR, 7z e altri archivi comuni Ci sono mai stati di fronte a un file .rar e ci si chiedeva come aprirlo? Fortunatamente, la gestione di file ZIP e altri archivi compressi è semplice con gli strumenti giusti. Ecco cosa ti serve sapere. Leggi di più aggiunge un sottomenu al menu di scelta rapida standard, offrendo un accesso rapido alle attività di gestione degli archivi, Hard Disk Sentinel Mantieni l'occhio sull'HDD e l'integrità SSD con Hard Disk Sentinel Tieni d'occhio il tuo disco rigido e SSD con Hard Disk Sentinel Hai mai avuto un guasto al disco? Purtroppo, non esiste una panacea per prevenire danni all'hardware. Ma monitorare il tuo HDD o SSD, per agire quando la loro morte diventa probabile, è un primo passo. Leggi altro aggiunge sovrapposizioni di icone alle icone di unità standard, in modo da poter vedere lo stato di salute delle unità a colpo d'occhio e HashTab aggiunge una nuova finestra delle proprietà, per calcolare e visualizzare gli hash del file selezionato.
Molte di queste estensioni della shell sono implementate come server COM (Component Object Model) in-process. Ciò significa che quando un processo, in questo caso Esplora risorse, utilizza l'estensione, non verrà visualizzato in Task Manager o Process Explorer come processo in esecuzione separato con il proprio identificatore di processo (PID). Invece, è in esecuzione all'interno del processo di chiamata explorer.exe.
Processo predefinito a singola istanza
Windows Explorer è stato scritto per essere in grado di funzionare come due processi separati, ma - nella sua configurazione predefinita - eseguirà solo una singola istanza. Quando viene eseguito per la prima volta come parte del processo di avvio, crea l'ambiente desktop di Windows. L'esecuzione di nuovo crea un nuovo thread nel processo esistente, che visualizza la finestra familiare di gestione dei file, invece di avviare un nuovo processo.
Questo comportamento consente un ingombro di memoria ridotto, ma può anche apportare una piccola svolta durante la risoluzione dei problemi. Un errore critico o un'eccezione non gestita nel codice in esecuzione nel processo explorer.exe, inclusi i server in-process forniti dalle DLL, causerà l'interruzione dell'intero ambiente desktop..
Nella maggior parte dei casi, il processo desktop verrà automaticamente riavviato. Se non si riavvia, dovresti comunque essere in grado di utilizzare Ctrl-Shift-Esc per visualizzare il Task Manager. Da lì, vai a File> Nuova attività (Esegui ...)> genere explorer.exe> OK per riavviare il processo.
Questo può essere evitato con un semplice cambiamento. Aperto Esplora risorse> Organizza> Opzioni cartella e ricerca in Vista / 7. Per Windows 8 e versioni successive, apri Esplora file> Visualizza> Opzioni> Cambia cartella e opzioni di ricerca. Seleziona il Visualizza scheda e controllare Avvia le finestre delle cartelle in un processo separato.
La modifica di questa impostazione isola il processo desktop da tutte le altre finestre di Windows Explorer aperte. Se una di queste finestre di Explorer si arresta in modo anomalo, il desktop rimarrà incolume.
Microsoft Visual C ++ Runtime Library (CRT)
La libreria di runtime Microsoft Visual C ++ fornisce routine per la programmazione di Windows che automatizzano molte attività, come input / output, manipolazione di file, allocazione di memoria, chiamate di sistema e molti altri.
Ogni installazione di Windows avrà almeno due versioni differenti del CRT installato. Una nuova versione di Vista SP2 tramite Windows 10 avrà entrambe le versioni 8.0 e 9.0 (rispettivamente VC 2005 e VC 2008). Quando viene installato software aggiuntivo, è possibile che includa anche versioni più recenti dei runtime, a seconda della versione di Visual C ++ utilizzata per creare il programma o uno dei suoi componenti.
Errori di runtime
Quando si incontra un errore o un'eccezione in un pezzo di codice, idealmente verrà gestito il prima possibile nella procedura attualmente in esecuzione e sarà corretto o permetterà un errore regolare. Se l'errore non viene gestito localmente, viene passato al codice che ha chiamato il codice attualmente in esecuzione e il processo continua fino alla gestione dell'eccezione. Se completa la sua corsa fino alla cima della catena e non viene ancora gestito, genererà un errore di runtime come visto sopra.
Quando l'utente fa clic sul pulsante OK, il processo verrà terminato. Se il programma ha un comportamento di errore definito, ad esempio servizi critici o il suo stato di esecuzione è monitorato da un altro processo, può essere rigenerato automaticamente. Questo è ciò che sta accadendo in questo caso. Lo schermo si oscura quando viene terminato il processo explorer.exe, quindi il desktop ritorna quando viene riavviato il processo explorer.exe.
Anche se il messaggio di errore sopra indica chiaramente che proviene dal processo explorer.exe, non è probabile che si tratti di un problema con explorer.exe stesso. È molto più probabile che il colpevole si trovi altrove, ad esempio un'estensione di terze parti che viene utilizzata da Explorer.
altre considerazioni
Con la descrizione del nostro lettore del problema sopra, ci sono un paio di elementi aggiuntivi che dobbiamo tenere in considerazione:
- Al momento dello schianto, Explorer stava provando, ma non riuscendo, a compilare il listview.
- L'impossibilità di accedere alle unità dopo che il desktop è stato rigenerato, potrebbe indicare che un altro processo ha bloccato uno o più di questi dispositivi, impedendo in tal modo l'accesso dal processo explorer.exe appena creato..
- In esecuzione sfc / scannow e ottenere un buono stato di salute, elimina le risorse protette da Windows in fondo alla lista. Altre cause sono molto più probabili.
Le correzioni sono in
In questo caso particolare, ci sono tre aree in cui vorrei cercare una soluzione. La prima riguarda il servizio di ricerca di Windows, la seconda riguarda l'analisi delle estensioni della shell e l'ultima sarebbe la ridistribuzione di VC ++.
Ricerca di Windows
Poiché lo screenshot originale mostra il crash che si verifica quando Explorer tenta di popolare la visualizzazione elenco, è possibile che il servizio di ricerca di Windows stia bloccando l'accesso alle risorse richieste. Ho visto questo accadere quando il servizio si blocca e non ha i parametri di riavvio corretto.
stampa Win + R> genere services.msc> OK per avviare la console di gestione con il modulo servizi. Scorri verso il basso fino a Ricerca di Windows e fai doppio clic sulla voce per aprire la finestra di dialogo Proprietà. Assicurarsi che le impostazioni nella scheda Ripristino corrispondano all'immagine seguente.
Il problema più comune è il “Riavvia il servizio dopo:” ambientazione. Questo errore si verifica frequentemente quando questa impostazione è diversa da zero.
Estensioni della shell problematiche
Scarica NExoft ShellExView per la tua architettura di sistema (x86 o x64), installalo ed eseguilo. Ci vorrà un po 'di tempo per esaminare il sistema e riempire la tabella con i dati. Scorri fino alla colonna CLSID Modified Time e fai clic sull'intestazione per ordinare in questo campo. Se desideri escludere i moduli forniti da Microsoft, puoi andare su Opzioni> Nascondi tutte le estensioni Microsoft. Per coloro che utilizzano una versione a 64 bit di Windows, si potrebbe anche voler mostrare le estensioni a 32 bit sul sistema andando a Opzioni> Mostra estensioni della shell a 32 bit.
Cerca le estensioni aggiunte prima dell'inizio dei sintomi. Selezionare uno o più e premere F7 o andare a File> Disattiva elementi selezionati, oppure fare clic sull'icona LED rossa nella barra degli strumenti. Idealmente, questo dovrebbe essere fatto uno alla volta.
Test per vedere se i sintomi persistono. Se lo fanno, puoi riattivare le estensioni precedentemente disabilitate usando F8, File> Abilita elementi selezionati, o l'icona LED verde della barra degli strumenti. Da qui, disabilitare un'estensione diversa e ripetere la procedura di test fino a trovare quella che causa il problema.
Riparare / reinstallare i ridistribuibili VC ++
Io uso questo come ultima risorsa, se solo un programma sta dando dei calci agli errori. Se si hanno più programmi che hanno problemi con gli errori di runtime di VC ++, si consiglia di provare prima questo.
Quando si guardano i programmi installati sul mio sistema (Pannello di controllo> Programmi e funzionalità), mostra tutte le versioni dei pacchetti ridistribuibili (e alcuni dei loro aggiornamenti) che vanno dalla versione 8 alla versione 12 (da VC ++ 2005 a VC ++ 2013). Li ho installati a causa degli strumenti di programmazione Microsoft che utilizzo. La maggior parte degli utenti non avrà tutti questi.
È possibile trovare gli ultimi download per le versioni supportate di Visual C ++ da Microsoft. Per i nostri scopi qui, devi solo preoccuparti di quelli etichettati come “ridistribuibile” pacchi. I collegamenti classificati come service pack sono per gli strumenti di programmazione, non semplicemente per i runtime. Avrete bisogno solo di quelli che sono attualmente elencati nei programmi installati sul vostro sistema. Installare altre versioni non aiuterà in questo caso. Gli utenti dei sistemi operativi a 64 bit potrebbero aver bisogno delle versioni x86 e x64 del CRT.
Windows Update verifica se sul computer sono installati gli aggiornamenti più recenti per questi pacchetti, ma non verifica che sia installato correttamente e che non sia stato interrotto. Gli installatori possono verificare che tutti i file di runtime siano quelli corretti e che tutte le voci di registro siano corrette.
Una volta scaricati i programmi di installazione appropriati, eseguili sul sistema. Le versioni del 2005 ti chiederanno di accettare un accordo di licenza prima di reinstallare il pacchetto. Tutti gli altri hanno una GUI che ti chiederà se vuoi riparare o disinstallare l'installazione esistente. Nella maggior parte dei casi, un'operazione di riparazione risolverà eventuali problemi.
Se si desidera provare il metodo più estremo, è possibile disinstallare i runtime, riavviare la macchina, quindi reinstallarli. Non raccomando questo metodo con i runtime del 2005 e del 2008. Senza di loro, Windows genererà molti errori e una grande quantità di funzionalità non sarà lì per te quando riavvii.
Conclusione
Con un po 'di osservazione, un tocco di tentativi ed errori e una certa comprensione di come gli errori vengono generati dai runtime del sistema, i problemi del software possono essere trovati e risolti senza ricorrere a complicati strumenti di debug e log.
Hai incontrato errori di runtime sul tuo sistema? Cosa è stato necessario per risolverli? Fatemi sapere nei commenti qui sotto.
Scopri di più su: Esplora file, Risoluzione dei problemi, Windows, Esplora risorse, Ricerca di Windows.