3 votes

Dossier System32 de XP - DLL remplacée comme par magie après suppression ?

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.

  1. Je désenregistre l'ancienne DLL avec regsvr32 /u myDll.dll
  2. Regsvr32 affiche une boîte de dialogue indiquant le succès.
  3. Je copie l'ancienne DLL dans un dossier "save" et je la renomme 20110412-myDll.dll_.
  4. Je supprime l'original de system32.
  5. J'ai placé la nouvelle DLL dans system32.
  6. Enregistrer la nouvelle dll avec regsvr32 myDll.dll
  7. Test de la nouvelle DLL avec un VBScript - fonctionne correctement.
  8. Et la partie amusante
  9. Reboot.
  10. Réexécuter le test vb script. Il échoue.
  11. 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é.
  12. SUPPRIMER l'ancienne DLL. Vérifiez qu'elle a bien disparu.
  13. 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".
  14. Reboot
  15. 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.

2voto

rama-jka toti Points 1174

Il s'agit probablement d'un problème lié à la restauration du système. Essayez de le désactiver avant de remplacer la DLL.

Pour plus d'informations, voir Qu'est-ce que la restauration du système dans les systèmes d'exploitation Windows ?

y http://support.microsoft.com/kb/310405

1voto

Dj S Points 101

Le système remplace la DLL par le fichier qui se trouve à l'adresse suivante C:\Windows\System32\DLLCache por Protection des fichiers sous Windows . Vérifiez le journal du système dans l'Observateur d'événements (dans les Outils d'administration) pour cet événement :

Event ID: 64001
Source: Windows File Protection
Description: File replacement was attempted on the protected system file C:\\Windows\\System32\\myDll.DLL . This file was restored to the original version to maintain system stability. The file version of the system file is x.x:x.x. 

Essayez de supprimer le fichier DLL stocké dans le dossier DLLCache remplacer la DLL dans System32 puis redémarrer l'ordinateur

編集する: Vérifiez les journaux de votre logiciel de sécurité, car certains programmes de sécurité surveillent les DLL du système et bloquent les tentatives de remplacement du fichier. Vous pouvez également essayer d'utiliser Moniteur de processus pour vérifier quel programme remplace la DLL, en particulier lors du démarrage avec la fonction "Enable Boot Logging" située sous "Options".

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X