Annuncio pubblicitario
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 deve svolgere un compito comune. Inoltre, semplificano il collegamento di buchi di sicurezza nel codice condiviso quando vengono rilevati poiché devono essere riparati in meno punti e non richiedono la ricompilazione di ogni applicazione.
Nonostante questi aspetti positivi, possono porre i loro problemi quando tentano di risolvere la causa principale dei messaggi di errore che possono generare.
La domanda del nostro lettore:
Come posso 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 normalità in esecuzione, ma non mi consentirà di accedere a C, D e, a volte, all'unità E quando provo ad accedervi da My 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 il pacchetto ridistribuibile di Microsoft Visual C ++ 2010 (x86). Il PC è completamente aggiornato secondo Windows Update.Risposta di Bruce:
Nota: le discussioni su Windows Explorer in Windows 7 e versioni precedenti si applicano anche a File Explorer in Windows 8 e versioni successive. Se c'è una notevole differenza tra loro, verrà esplicitamente dichiarato.
La shell di Windows
Windows Explorer è la shell e funziona come il processo explorer.exe come visto in Task Manager o Sysinternals 'Process Explorer Process Explorer: la sostituzione del Task Manager più potente [Windows]Siamo onesti, il Task Manager di Windows 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 ... Leggi 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 EXE e File DLL Come correggere gli errori di file DLL mancanti Leggi di più utilizzato per implementare fogli di proprietà, gestori di proprietà, gestori di anteprima, menu di scelta rapida e molti altri elementi che usi ogni giorno in Windows Explorer.
Shell estensibile
Le estensioni della shell consentono ai programmatori di aggiungere facilmente funzionalità a Windows Explorer scrivendo una DLL per eseguire e registrando la DLL con il sistema operativo, in modo che Explorer sappia dove trovare il codice per eseguire il compito. Per esempio, 7-Zip Come estrarre file da ZIP, RAR, 7z e altri archivi comuniTi sei mai trovato di fronte a un file .rar e ti chiedi come aprirlo? Fortunatamente, gestire i 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 rapido accesso alle attività di gestione degli archivi, Sentinel del disco rigido Tieni d'occhio la salute del tuo HDD e SSD con Hard Disk SentinelHai 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 è probabile la loro morte, è un primo passo. Leggi di più aggiunge sovrapposizioni di icone alle icone standard dell'unità, in modo da poter vedere a colpo d'occhio lo stato di integrità dell'unità 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 identificativo del processo (PID). Invece, è in esecuzione all'interno del processo explorer.exe chiamante.
Processo di istanza singola predefinito
Windows Explorer è 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 Windows. Eseguire di nuovo crea un nuovo thread nel processo esistente, che visualizza la finestra di gestione dei file familiare, invece di avviare un nuovo processo.
Questo comportamento consente un footprint 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à il fallimento dell'intero ambiente desktop.
Nella maggior parte dei casi, il processo desktop verrà riavviato automaticamente. Se non si riavvia, dovresti comunque essere in grado di utilizzare Ctrl-Shift-Esc per visualizzare 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 controlla 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.
Libreria di Microsoft Visual C ++ Runtime (CRT)
La libreria di runtime di Microsoft Visual C ++ fornisce routine per la programmazione di Windows che automatizzano molte attività, come input / output, manipolazione dei file, allocazione della memoria, chiamate di sistema e molte altre.
Ogni installazione di Windows avrà almeno due diverse versioni del CRT installato. Una macchina Vista SP2 di recente costruzione tramite Windows 10 avrà entrambe le versioni 8.0 e 9.0 (VC 2005 e VC 2008, rispettivamente). Quando viene installato un software aggiuntivo, può includere 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 verifica un errore o un'eccezione in un pezzo di codice, idealmente verrà gestito non appena possibile nella procedura attualmente in esecuzione, e sia corretto o consentire un aggraziato fallimento. Se l'errore non viene gestito localmente, viene passato al codice che ha chiamato il codice attualmente in esecuzione e il processo continua fino a quando non viene gestita l'eccezione. Se completa l'esecuzione nella parte superiore 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 presenta un comportamento di errore definito, ad esempio servizi critici, o il suo stato di esecuzione è monitorato da un altro processo, può essere automaticamente rigenerato. Questo è ciò che sta accadendo in questo caso. Lo schermo si oscura al termine del processo explorer.exe, quindi il desktop torna quando viene riavviato il processo explorer.exe.
Sebbene il messaggio di errore sopra indichi chiaramente che proviene dal processo explorer.exe, è probabile che non sia un problema con explorer.exe stesso. È molto più probabile che il colpevole risieda altrove, ad esempio un'estensione di terze parti utilizzata da Explorer.
altre considerazioni
Con la descrizione del nostro lettore del problema sopra riportato, ci sono un paio di elementi aggiuntivi che dobbiamo prendere in considerazione:
- Al momento del crash, Explorer stava provando, ma non era in grado, a popolare la visualizzazione elenco.
- L'impossibilità di accedere alle unità dopo che il desktop è stato rigenerato, può indicare che un altro processo ne ha uno o più di quei dispositivi bloccati, impedendo così l'accesso da explorer.exe appena creato processi.
- In esecuzione sfc / scannow e ottenendo un buono stato di salute, elimina le risorse protette di Windows in fondo all'elenco. Altre cause sono molto più probabili.
Le correzioni sono presenti
In questo caso particolare, ci sono tre aree in cui vorrei cercare una soluzione. Il primo riguarda il servizio di ricerca di Windows, il secondo riguarda lo studio delle estensioni della shell e l'ultimo sarebbe il ridistribuibile VC ++.
Ricerca di Windows
Perché lo screenshot originale mostra l'incidente che si verifica quando Explorer sta tentando di popolare il file listview, è possibile che il servizio di ricerca di Windows blocchi l'accesso alle risorse richieste. Ho visto che ciò accade quando il servizio si arresta in modo anomalo e non ha i parametri di riavvio corretti.
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 è l'impostazione "Riavvia servizio dopo:". Questo errore si verifica spesso quando questa impostazione è diversa da zero.
Estensioni della shell problematiche
Scarica ShellExView di Nirsoft per l'architettura di sistema (x86 o x64), installarlo ed eseguirlo. Ci vorrà un po 'di tempo per esaminare il sistema e riempire la tabella con i dati. Scorri fino alla colonna Ora modificata CLSID e fai clic sull'intestazione per ordinare in questo campo. Se desideri escludere i moduli forniti da Microsoft, puoi andare a Opzioni> Nascondi tutte le estensioni Microsoft. Per coloro che utilizzano una versione a 64 bit di Windows, potresti anche voler mostrare le estensioni a 32 bit sul sistema andando a Opzioni> Mostra estensioni della shell a 32 bit.
Cerca le estensioni aggiunte poco prima dell'inizio dei sintomi. Seleziona uno o più e premi F7 o vai a File> Disabilita elementi selezionatioppure fai clic sull'icona LED rossa nella barra degli strumenti. Idealmente, questo dovrebbe essere fatto uno alla volta.
Prova per vedere se i sintomi persistono. In tal caso, è possibile riattivare l'estensione o le estensioni precedentemente disabilitate utilizzando F8, File> Abilita elementi selezionatio l'icona della barra degli strumenti LED verde. Da qui, disabilitare un'estensione diversa e ripetere il processo di test fino a trovare quello che causa il problema.
Ripara / Reinstalla ridistribuibili VC ++
Uso questo come ultima risorsa, se solo un programma sta eliminando errori. Se hai più programmi che hanno problemi con errori di runtime VC ++, potresti provare prima questo.
Quando guardo 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 li avrà tutti.
Puoi trovare il download più recenti per le versioni supportate di Visual C ++ da Microsoft. Per i nostri scopi qui, devi solo preoccuparti di quelli che sono etichettati come pacchetti "ridistribuibili". I collegamenti classificati come service pack riguardano gli strumenti di programmazione, non semplicemente i tempi di esecuzione. Ti serviranno solo quelli attualmente elencati nei programmi installati sul tuo sistema. L'installazione di altre versioni non sarà d'aiuto 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 ultimi aggiornamenti per questi pacchetti, ma non verifica che sia installato correttamente e che non sia stato danneggiato. Gli installatori possono verificare che tutti i file di runtime siano corretti e che tutte le voci del registro siano corrette.
Dopo aver scaricato i programmi di installazione appropriati, eseguili sul sistema. Le versioni 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 il computer, quindi reinstallarli. Non consiglio questo metodo con i runtime del 2005 e del 2008. Senza di essi, Windows genererà molti errori e molte funzionalità non saranno disponibili per te al riavvio.
Conclusione
Con un po 'di osservazione, un pizzico di tentativi ed errori e una certa comprensione di come vengono generati gli errori runtime sul sistema, i problemi di software possono essere trovati e risolti senza ricorrere a complicati strumenti di debug e registri.
Hai riscontrato errori di runtime sul tuo sistema? Cosa è stato richiesto per risolverli? Fammi sapere nei commenti qui sotto.
Bruce gioca con l'elettronica dagli anni '70, i computer dai primi anni '80 e risponde accuratamente a domande sulla tecnologia che non ha mai usato né visto per tutto il tempo. Si infastidisce anche tentando di suonare la chitarra.