Partager via


Dynamic-Link bibliothèque Mises à jour

Il est parfois nécessaire de remplacer une DLL par une version plus récente. Avant de remplacer une DLL, effectuez une version case activée pour vous assurer que vous remplacez une version antérieure par une version plus récente. Il est possible de remplacer une DLL en cours d’utilisation. La méthode que vous utilisez pour remplacer les DLL en cours d’utilisation dépend du système d’exploitation que vous utilisez. Sur Windows XP et versions ultérieures, les applications doivent utiliser des applications isolées et des assemblys côte à côte.

Il n’est pas nécessaire de redémarrer l’ordinateur si vous effectuez les étapes suivantes :

  1. Utilisez la fonction MoveFileEx pour renommer la DLL remplacée. Ne spécifiez pas MOVEFILE_COPY_ALLOWED et assurez-vous que le fichier renommé se trouve sur le même volume que celui qui contient le fichier d’origine. Vous pouvez également simplement renommer le fichier dans le même répertoire en lui donnant une autre extension.
  2. Copiez la nouvelle DLL dans le répertoire qui contient la DLL renommée. Toutes les applications utilisent désormais la nouvelle DLL.
  3. Utilisez MoveFileEx avec MOVEFILE_DELAY_UNTIL_REBOOT pour supprimer la DLL renommée.

Avant d’effectuer ce remplacement, les applications utilisent la DLL d’origine jusqu’à ce qu’elle soit déchargée. Une fois le remplacement fait, les applications utilisent la nouvelle DLL. Lorsque vous écrivez une DLL, vous devez veiller à ce qu’elle soit préparée pour cette situation, en particulier si la DLL conserve des informations d’état globale ou communique avec d’autres services. Si la DLL n’est pas préparée pour une modification des protocoles de communication ou d’informations d’état global, la mise à jour de la DLL vous oblige à redémarrer l’ordinateur pour vous assurer que toutes les applications utilisent la même version de la DLL.