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. Inoltre, semplificano il ricollegamento dei buchi di sicurezza nel codice condiviso quando vengono rilevati poiché è necessario eseguire il patch in un numero inferiore di posizioni 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 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 normale esecuzione, ma non mi permetterà di accedere a C, D e, a volte, all'azionamento E quando cerco di accedervi dal mio computer.
L'esecuzione di sfc / scannow non rileva 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 eseguito come il processo explorer.exe come visualizzato in Task Manager o Process Explorer di Process Explorer di Sysinternals - La sostituzione più potente di Task Manager [Windows] Process Explorer - La sostituzione più potente di Task Manager [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 ... 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 contestuali 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 visualizzare immediatamente lo stato di integrità dell'unità e HashTab aggiunge una nuova scheda 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 su File> Nuova attività (Esegui ...)> digita explorer.exe> OK per riavviare il processo.
Questo può essere evitato con un semplice cambiamento. Apri Esplora risorse> Organizza> Opzioni cartella e ricerca in Vista / 7. Per Windows 8 e versioni successive, aprire Esplora file> Visualizza> Opzioni> Cambia cartella e opzioni di ricerca . Selezionare la scheda Visualizza e selezionare Avvia finestre di 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 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 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ù dispositivi, impedendo in tal modo l'accesso al processo explorer.exe appena creato.
- L'esecuzione di sfc / scannow e l'ottenimento di un certificato di integrità, eliminano le risorse protette da Windows in fondo all'elenco. 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.
Premere Win + R> tipo 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 il servizio dopo:". 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 di Microsoft . Per coloro che utilizzano una versione a 64 bit di Windows, è possibile visualizzare le estensioni a 32 bit sul sistema selezionando Opzioni> Mostra estensioni di shell a 32 bit .
Cerca le estensioni aggiunte prima dell'inizio dei sintomi. Selezionare uno o più e premere F7 o andare su File> Disabilita 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. In tal caso, è possibile riattivare le estensioni disabilitate in precedenza utilizzando F8, File> Abilita elementi selezionati o l'icona della barra degli strumenti LED verde. Da qui, disabilita un'estensione diversa e ripeti il processo di test finché non trovi quello 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à ), vengono mostrate tutte le versioni dei pacchetti ridistribuibili (e alcuni dei relativi 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 pacchetti "ridistribuibili". 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 sono 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.