Nos commerciaux ont installé une application interne qui utilise quelques objets COM/DLL personnalisés stockés dans System32. J'ai essayé de remplacer l'une de ces DLL par une version plus récente, qui fonctionne bien après l'installation, mais pas après un redémarrage.
Voici la partie intéressante.
- Je désenregistre l'ancienne DLL avec regsvr32 /u myDll.dll
- Regsvr32 affiche une boîte de dialogue indiquant le succès.
- Je copie l'ancienne DLL dans un dossier "save" et je la renomme 20110412-myDll.dll_.
- Je supprime l'original de system32.
- J'ai placé la nouvelle DLL dans system32.
- Enregistrer la nouvelle dll avec regsvr32 myDll.dll
- Test de la nouvelle DLL avec un VBScript - fonctionne correctement.
- Et la partie amusante
- Reboot.
- Réexécuter le test vb script. Il échoue.
- Regardez la DLL (que j'ai remplacée) dans system32. Elle a été remplacée comme par magie par l'ancienne DLL. Je l'ai vérifié avec
fc
(comparaison binaire) avec system32 \myDll.dll et le fichier 20110412-myDll.dll_ sauvegardé. - SUPPRIMER l'ancienne DLL. Vérifiez qu'elle a bien disparu.
- Recherchez "myDll.DLL" dans tous les lecteurs, y compris dans les dossiers système. Vérifiez qu'il n'existe aucune instance de l'ancienne DLL autre que la version renommée dans le dossier "save".
- Reboot
- L'ancienne DLL est réapparue comme par magie.
Le compte utilisateur que j'utilise pour cela dispose de tous les droits d'administrateur sur la machine. Je n'ai pas réussi à trouver de processus en cours d'exécution qui devrait faire cela, et notre service informatique est dans l'impasse.
Quelqu'un a-t-il des suggestions ?
Mise à jour
Juste pour le plaisir, j'ai démarré l'une des machines en mode sans échec, installé la nouvelle DLL et redémarré à nouveau. Cette fois, la modification semble avoir fonctionné, même après un nouveau redémarrage. Bizarre.
Je peux le faire sur les autres machines qui présentent le même problème, et je m'attends à ce que cela fonctionne, mais j'aimerais vraiment savoir quel est le problème. Argh.