Durante l’utilizzo di Windows può capitare di imbattersi in errori facenti riferimento a una DLL mancante oppure a un file non trovato.
Di solito si tratta di errori bloccanti che impediscono l’utilizzo del programma che necessita di utilizzare il componente software indicato nell’errore.
Cosa sono le librerie DLL
Acronimo di Dynamic link library un file DLL è una libreria che viene caricata in modo dinamico dal programma che ne fa uso durante l’esecuzione.
In fase di compilazione di un eseguibile lo sviluppatore può legargli una o più librerie DLL, alcune delle quali facenti parte di pacchetti specifici che permettono di aggiungere funzionalità legate all’interfaccia o il supporto di funzioni “ad hoc” utilizzate dal programma stesso.
Le librerie DLL possono essere caricate dall’eseguibile solo quando effettivamente necessario e una stessa libreria può essere utilizzata e condivisa da vari programmi riducendo incisivamente, ad esempio, il quantitativo di memoria occupata.
Ecco perché tanti file DLL di uso comune sono già presenti nella cartella di sistema di Windows (%systemroot%
): un eseguibile prima cerca infatti la DLL che gli serve nella cartella locale, poi estende la ricerca alla cartella %systemroot%\System
, al contenuto di %systemroot%
e infine alle sottocartelle del percorso corrente.
È facile accorgersene avviando un programma come Process Monitor: si verificherà quali file vengono richiesti da ciascun programma e si potrà capire come gli eseguibili si comportano quando non trovano ciò che cercano.
Come risolvere l’errore DLL mancante o file non trovato
Quando si utilizza Windows ci si può trovare dinanzi a errori come “L’esecuzione del codice non può proseguire perché (…) non è stato trovato” oppure “File (…) non trovato” o le corrispettive traduzioni in inglese (“file not found/file is missing“).
Come comportarsi in questi casi? Innanzi tutto è bene analizzare con attenzione il messaggio d’errore che si riceve. Di solito contiene anche il percorso del file che risulta mancante: così si può indagare sull’applicazione che ha generato il problema ed eventualmente reinstallare il programma.
Diversamente, effettuando una semplice ricerca con Google o usando un sito come DLL Files nel caso delle librerie DLL, è possibile risalire all’applicazione o al framework che contiene tale file.
Spesso può essere necessario installare specifiche versioni del Framework .NET oppure le librerie Visual C++ per superare l’impasse.
Ovvio che se l’errore comparisse subito dopo aver avviato uno specifico programma significa che il colpevole è proprio lui.
In caso contrario si può riavviare il PC quindi eseguire l’utilità di monitoraggio e diagnostica Process Monitor citata in precedenza.
Process Monitor: per risalire al programma che non trova la libreria DLL o altri file
Lasciando Process Monitor in esecuzione si possono provare a riprodurre le condizioni che hanno portato in precedenza alla comparsa dell’errore facente riferimento alla DLL mancante o al file non trovato.
Alla comparsa del messaggio d’errore si può tornare in Process Monitor e premere CTRL+E
per interrompere l’attività di logging.
Con la combinazione di tasti CTRL+F
, digitando il nome della DLL o del file che non si trova, si può rapidamente risalire al programma che l’ha richiesta (colonna Path) insieme con il suo percorso completo.
L’importante, prima di usare la funzione di ricerca, è portarsi all’inizio del log di Process Monitor quindi premere CTRL+F
e selezionare Giù come direzione della ricerca.
Se la finestra di errore compare all’avvio di Windows si può dare un’occhiata con Autoruns, anch’esso uno strumento software gratuito rilasciato e continuamente aggiornato da Microsoft.
Sebbene anche Autoruns abbia le sue pecche (non si accorge di tutte le applicazioni in esecuzione automatica, ad esempio alcune di quelle installate tramite il Microsoft Store), eseguendo Autoruns64.exe
o Autoruns.exe
a seconda che si utilizzi una versione a 64 o 32 bit di Windows e cliccando sulla scheda Everything il nostro consiglio è quello di andare subito alla ricerca di righe evidenziate in giallo.
Nella colonna Image path troverete File not found: si tratta di residui di chiamate in esecuzione automatica che fanno riferimento a librerie e file ormai eliminati dall’utente. Disattivando prima tali riferimenti (casella posta sulla sinistra nella colonna Autorun entry) e poi eliminandoli completamente dopo aver verificato la scomparsa dell’errore si sarà risolto il problema.
Se non fossero presenti voci in giallo facenti riferimento alla libreria DLL o al file mancante, si può provare a disattivare temporaneamente il caricamento delle applicazioni in esecuzione automatica nella scheda Logon di Autoruns: l’importante è verificare nel menu Options di Autoruns che la voce Hide Microsoft Entries sia attiva.
Disattivando una voce per volta e riavviando il sistema si può andare per esclusione e risalire al programma che causa la comparsa dell’errore.
La stessa cosa si può fare sui servizi (scheda Services di Autoruns controllando, di nuovo, di aver attivato l’opzione Hide Microsoft Entries come indicato in precedenza).
Capire quale DLL o file non vengono trovati all’avvio usando Process Monitor
Senza “impazzire”, soltanto con un po’ di pazienza, è possibile anche utilizzare Process Monitor per creare un file di log al boot: analizzandolo a posteriori dopo la comparsa dell’errore di libreria DLL o file mancante si può usare la procedura vista in precedenza (ricerca con CTRL+F
per risalire al programma che crea problemi).
Dopo aver avviato la versione corretta di Process Monitor (sui sistemi Windows a 64 bit cliccare due volte su procmon64.exe
), si deve premere CTRL+E
per bloccare la cattura degli eventi quindi selezionare Options, Enable boot logging quindi fare clic su OK.
Chiudendo Process Monitor e riavviando Windows si deve attendere che l’errore ricompaia.
A questo punto, tornando nella cartella di Process Monitor e rieseguendo l’applicazione si vedrà apparire il messaggio “A log of boot-time activity was created by a previous instance of Process Monitor“.
Cliccando su Sì si salveranno le informazioni di boot in formato PML: una volta generato, tale file può essere aperto con Process Monitor stesso e il suo contenuto verrà immediatamente visualizzato.
Come registrare una DLL
Di norma non è necessario registrare le librerie DLL utilizzate dai vari programmi. In caso di errori specifici dovuti all’assenza delle voci necessarie a livello di registro di sistema si può registrare una DLL dal prompt dei comandi aperto con i diritti di amministratore digitando regsvr32 nomefiledll.dll
.
Nel caso in cui il sistema operativo riportasse riferimenti a file di sistema mancanti si possono usare i comandi che aiutano a risolvere la maggior parte dei problemi in Windows.
L’unica cosa che sconsigliamo sempre è scaricare i file mancanti da fonti potenzialmente inaffidabili. Al massimo possono essere recuperati dalle immagini ISO o dagli archivi di installazione ufficiali dei vari software.