La correction des .NET Framework échoue avec une erreur : l’accès est refusé ou le fichier en cours d’utilisation

Cet article vous aide à résoudre le problème où l’application d’un correctif .NET Framework microsoft a échoué lorsque des assemblys sont en cours d’utilisation ou verrouillés lorsqu’un correctif est appliqué.

Version du produit d’origine :   .NET Framework
Numéro de la ko d’origine :   2263996

Symptômes

Si un fichier d’assembly dans le Global Access Cache (GAC) a été verrouillé ou est en cours d’utilisation, cela peut entraîner l’échec .NET Framework correctifs. Ce problème peut être éliminé par un bogue dans la façon dont la fusion gère la récupération et peut entraîner la suppression des fichiers. Cela entraîne l’échec des applications gérées (celles qui dépendent des assemblys d’infrastructure).

Le journal détaillé MSI du correctif qui échoue peut contenir ce qui se passe comme ceci :

« C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\system.dll » en raison de l’erreur système : l’accès est refusé.
22/06/10 11:57:26 DDSet_Status : 100 ms en cours...
MSI (s) (54!70) [11:57:26:738]: Product: Microsoft .NET Framework 2.0 Service Pack 2 -- There is a problem with this Windows Installer package.
Pour plus d’informations, consultez le journal d’installation.
Il existe un problème avec ce package Windows Installer.
Pour plus d’informations, consultez le journal d’installation.
22/06/20 11:57:26 DDSet_CARetVal : 0
22/06/10 11:57:26 DDSet_Exit : InstallAssembly s’est terminé avec la valeur de retour 1603
MSI (s) (54:94) [11:57:26:758]: La valeur de stratégie utilisateur « DisableRollback » est 0
MSI (s) (54:94) [11:57:26:758]: La valeur de stratégie de l’ordinateur « DisableRollback » est 0
Action terminée 11:57:26 : InstallExecute. Valeur de retour 3.

Ou

22/02/10 08:38:32 DDSet_Status : 100 ms en cours...
22/02/10 08:38:32 DDSet_Error : Échec de l’installation de l’assembly
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll. IAssemblyCache->InstallAssembly() renvoyé -2147024864.
22/02/10 08:38:32 DDSet_Error : Échec de l’installation de l’assembly
« C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll » en raison d’une erreur système :
Le processus ne peut pas accéder au fichier, car il est utilisé par un autre processus.

Cause

Si des assemblys sont en cours d’utilisation ou verrouillés lorsqu’un correctif est appliqué, le correctif échoue.

Résolution

Ce problème peut être évité en veillant à ce que les processus qui peuvent verrouiller les assemblys ne soient pas en cours d’exécution.

Pour détecter si des assemblys sont utilisés, suivez les étapes suivantes :

  1. Téléchargez procexp.exe pour découvrir les processus qui verrouillent des assemblys.

  2. Lancez procexp.exe puis appuyez sur Ctrl+F pour ouvrir la fenêtre Recherche dans l’Explorateur de processus.

  3. Dans la zone de texte de sous-chaîne Handle ou DLL, tapez Assembly, puis sélectionnez Rechercher.

    Screenshot shows steps to search assembly.

  4. Tous les fichiers répertoriés peuvent avoir un impact sur l’installation du correctif. Terminez tous les processus répertoriés ou fermez les applications associées. Pour cela, procédez comme suit :

    1. Sélectionnez le nom du processus que vous souhaitez terminer dans la fenêtre Recherche dans l’Explorateur de processus pour localiser le processus.

    2. Cliquez avec le bouton droit sur le nom du processus dans le volet Processus.

    3. Sélectionnez Terminer le processus pour l’interrompre.

      Screenshot shows steps to kill a process.