Dernière mise
à jour : 19/02/2006
- Tout savoir sur
les fichiers DLL :
"Une DLL est une bibliothèque contenant du code et des
données qui peuvent être utilisés en même
temps par plusieurs programmes". Toutes les DLL sont répertoriées
à cette adresse web : http://support.microsoft.com/dllhelp.
En cliquant sur les liens Informations et Détails vous obtiendrez
toutes les dépendances du fichier.
- Dépannage
rapide sous Windows XP :Voici
une procédure simple qui fonctionne dans la majorité
des cas : les fichiers dll sont protégées. Une version
de sauvegarde est donc stockée dans ce répertoire
: \WINDOWS\system32\dllcache. En termes clairs vous serez plus souvent
confrontés à un problème de Registre qu’à
un souci de version endommagée du fichier DLL. Afin de réécrire
les informations du registre qui sont nécessaires au fonctionnement
d’un fichier DLL il vous suffit de vous servir de la commande
regsvr32.
Si d’aventure un fichier dll est manquant vous n’avez
qu’à inscrire son nom comme recherche dans n’importe
quel moteur de recherche. De nombreux sites vous la proposeront
en libre téléchargement. Il vous suffit alors de la
placer dans \WINDOWS\System32 puis de lancer la commande regsvr32
afin de fusionner les informations contenues dans la dll au Registre
Windows. Prenons un exemple classique... Au démarrage de
l’ordinateur vous avez ce message d’erreur : "Erreur
de chargement du fichier fldrclnr.dll - Le module spécifié
est introuvable" ou "Rundll - Une exception s'est produite
lors de la tentative d'exécution de fldrclnr.dll,Wizard_RunDLL".
1) Procédez au téléchargement du fichier DLL
manquant en effectuant une recherche dans n’importe quel moteur
de recherche.
2) Placez-le dans \WINDOWS\System32.
3) Cliquez sur Démarrer/Exécuter puis saisissez :
regsvr32 Nom_Fichier_Dll
Par exemple : regsvr32 fldrclnr.dll
4) Il vous suffit ensuite de redémarrer votre machine.
Consultez également le paragraphe consacré aux erreurs
sur les points d’entrée.
Il se peut également que cette manipulation de suffise pas
ou ne soit pas possible pour le simple fait que d’autres fichiers
DLL dont celle-ci dépend ne soient pas présentes dans
le système ou soient endommagées. Servez-vous dans
ce cas d’un outil comme "Dependency
Walker" afin de visualiser le jeu des dépendances
et même éventuellement vers quel fichier un appel a
été effectué dans que ce dernier ait pu aboutir.- Dépannage
complet sous Windows toutes versions :
Ce qui suit est un mémento d'ordre général
n'ayant pas la prétention de vous permettre de résoudre
tous les problèmes de la terre mais fixe quelques règles
simples qui fonctionneront dans 90% des cas. Note :
les fichiers DLL sont placés dans \Windows\system ou \Windows\system32.
Sous Windows 98, Millenium ce sont généralement les
fichiers DLL qui sont corrompus.
Sous Windows XP et ultérieur, le problème se situe
généralement au niveau du Registre (les fichiers DLL
faisant partie des fichiers "protégés").
On ne parle uniquement que des messages d'erreur mettant en cause
de manière explicite un ou plusieurs fichiers DLL et non
des problèmes qui proviennent d'une version corrompue ou
obsolète de ces mêmes fichiers système. Dans
ce dernier cas, la fonctionnalité de vérification
de fichiers (commande SFC) vous permettra de restaurer facilement
la version d'origine du ou des fichiers défectueux.
Sous ces premiers systèmes d'exploitation, le type de message
d'erreur est, par exemple, le suivant : "le fichier .EXE a
causé une défaillance de page dans le module .DLL"
Sous Windows XP, le module en cause s'obtient de cette façon
:
Ce type de message commence par : "Le programme … a rencontré
une erreur et doit fermer. Pour obtenir plus d’informations
concernant cette erreur "Cliquez ici". En suivant ces
recommandations, une autre fenêtre s’ouvre avec la signature
de l’erreur clairement indiquée. À droite de
"ModName" est mentionné le fichier responsable.
Lancez une recherche sur le nom de ce fichier et accédez
à ses propriétés. Vous aurez déjà
une idée de l’application associée et si le
fichier fautif fait partie du système d’exploitation
ou d’un logiciel tiers. Pour le reste, les procédures
de résolution varient grandement… Note
: vous retrouverez le libellé de l’erreur
en cliquant sur Démarrer/Panneau de configuration/Outils
d’administration/Observateur d’événements.
Il y a deux possibilités : soit l'erreur se produit au démarrage
soit au lancement ou pendant l'utilisation d'un composant du système
ou d'une application.
- Le problème se produit au lancement du système d'exploitation
:
1a) Pas de démarrage possible : essayez de démarrer
en mode sans échec.
1b) Pas de démarrage possible en mode sans échec :
redémarrez en mode MS-DOS ou à
partir de la Console de récupération
et procédez de là à une extraction du fichier
DLL en cause. Il est plus sûr de supprimer au préalable
la version présente sur votre disque dur.
- Si cela ne fonctionne toujours pas, essayez de réinstaller
Windows par dessus.
1c) Pas de démarrage possible en mode MS-DOS : une réinstallation
complète de Windows est obligatoire.
2a) J'arrive à démarrer en mode sans échec
: servez-vous de l'éditeur de configuration système
afin de désactiver du chargement automatique en mémoire
le programme qui provoque le message d'erreur.
- Redémarrez ensuite en mode normal.
2b) Je n'arrive toujours pas à démarrer en mode normal
: de nouveau en mode sans échec, désinstallez l'application
ou le périphérique qui empêche maintenant le
système de se lancer. Note : Sous Windows
9X, il est possible qu'une réparation
du Registre en mode MS-DOS fonctionne…
3a) J'arrive à démarrer en mode normal : lancez une
recherche sur le nom du fichier qui provoque le message d'erreur.
Avec le bouton droit de la souris, cliquez sur le fichier puis choisissez
Propriétés. Dans l'onglet Version, il vous sera possible
de déterminer si le fichier appartient à Windows (et
donc au système) ou à un pilote ou application tierce.
3b) Le fichier DLL fait partie du système d'exploitation
: procédez à une extraction du fichier en copiant
une version propre à partir du CD-ROM d'installation de Windows.
Attention : il est possible que cette extraction
ne soit possible qu'à partir du mode MS-DOS ou de la Console
de récupération.
3c) Le fichier DLL ne fait partie du système d'exploitation
: copiez une nouvelle version du fichier à partir du CD-ROM
d'installation de votre programme. Il vous faut confirmer l'écrasement
de la version précédente.
- Si le problème n'est toujours pas résolu, deux possibilités
s'offrent à vous :
4a) Désactivez puis réactiver l'enregistrement du
fichier DLL en tant que composant du Registre Windows et en vous
servant de la commande Regsvr32.
4b) Téléchargez puis copiez une version plus récente
du fichier DLL en cause. Accédez à un moteur de recherche
comme Google.fr puis tapez simplement comme expression de recherche
le nom du fichier DLL". Eventuellement, refaites la manipulation
décrite en 4a.
Cela ne fonctionne toujours pas : c'est clairement un problème
de Registre.
Dans tous les cas et si la panne est bloquante, procédez
à une Restauration du système en choisissant une date
antérieure à l'apparition de votre problème.
Si le souci ne se pose que sur une application précise ou
pendant l'utilisation d'un périphérique, essayez de
voir s'il existe une mise à jour ou un correctif disponible
sur Internet.
- Le problème se pose au lancement d'une application ou d'un
composant du système :
Suivez la procédure initiée en 3a.
Cas particulier : le problème s'est posé dès
l'installation d'une application et le fichier DLL en cause ne fait
pas partie de mon système d'exploitation. Essayez de supprimer
(ou de renommer à titre de test le fichier DLL). Cela fonctionne
plus souvent qu'on ne le croit !
- Tout ceci n'a rien donné : là aussi, l'installation
du dernier Service Pack (Internet Explorer, Windows XP, etc.) peut
vous permettre de résoudre un problème apparemment
insoluble.
Sinon, la solution est d'ordre "non conventionnelle" :
manipulation du Registre, principalement.
Signalons enfin que les messages d’erreur sur les fichiers
DLL sont souvent le signe d’une infection virale ! Le type
d'erreur est alors : "Erreur de démarrage du programme
- Ce programme va être arreté car il a effectué
une opération non conforme - Détail : Explorer a causé
une défaillance de page dans le module KERNEL32.DLL".
- Qu’en est-il
des fichiers exécutables ?
Il est parfois possible de se servir des commutateurs /REGSERVER
et /UNREGSERVER afin de réparer les informations du Registre
correspondantes. Par exemple, saisissez : excel /regserver- Indiquer l’ordre
de recherche des fichiers DLL :Il
arrive que dans les propriétés d’un raccourci,
la commande Exécuter dans soit non renseignée. Si
le répertoire courant de travail est sur un lecteur réseau,
cette astuce permet de résoudre des problèmes de lenteur
pendant le lancement de l’application en forçant le
programme lancé à travers le réseau d’utiliser
les DLL placées en local avant celles du partage ou bien
à "squizzer" une version obsolète d’une
DLL.
1) Parcourez HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session
Manager.
2) Créez ( ou modifiez ) une valeur DWORD nommée :
SafeDllSearchMode
3) Affectez-lui la valeur 1.
L'ordre de recherche sera alors :
Le répertoire %SystemRoot%\System32
Le répertoire %SystemRoot%
Le répertoire courant
Un des répertoires indiqués par la variable d’environnement
%Path% Note : Si la valeur est sur 0, c’est
le répertoire courant qui est d’abord "scanné".
Au démarrage de l’ordinateur, le système scanne
les .dll "amies" pour les applications 32 bits en vérifiant
leur présence dans HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session
Manager\KnownDLLs et HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WOW
dans le cas d’applications 16 bits…
Vous pouvez exclure une DLL en faisant croire au système
que ce fichier ne fait plus partie des DLL connues) si vous parcourez
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
et que vous insérez dans la valeur chaînes multiples
: ExcludeFromKnownDlls le nom 8.3 de la DLL (une par ligne si vous
inscrivez plusieurs fichiers). Remarque : Une
DLL est traitée comme faisant partie du groupe "KnownDll"
si elle possède un lien implicite vers une DLL explicitement
listée.
Si votre DLL ne fait pas partie de la liste KnownDLLs, l’ordre
de recherche est le suivant :
1) Le répertoire où est placé l’exécutable
du processus qui charge la DLL.
2) Le répertoire courant du processus qui charge la DLL.
3) Le répertoire %SystemRoot%\System32.
4) Le répertoire %SystemRoot%.
5) Un des répertoires indiqués par la variable d’environnement
%Path%.
Sinon l'ordre respecté sera celui-ci : 3 - 1 - 2 - 4 - 5.
|
|