L'applicazione di patch di .NET Framework ha esito negativo con un errore: Accesso negato o File in uso

Questo articolo consente di risolvere il problema in cui gli errori di applicazione di patch di Microsoft .NET Framework quando gli assembly sono in uso o bloccati quando viene applicata una patch.

Versione originale del prodotto: .NET Framework
Numero KB originale: 2263996

Sintomi

Se un file di assembly nella Global Access Cache (GAC) è stato bloccato o è in uso, può causare l'esito negativo delle patch di .NET Framework. Questo problema può essere aggravato da un bug nel modo in cui Fusion gestisce il rollback e può causare l'eliminazione dei file. In questo modo, le applicazioni gestite (quelle che dipendono dagli assembly del framework) avranno esito negativo.

Il log dettagliato dell'identità del servizio gestito con patch non riuscita potrebbe contenere un valore simile al seguente:

'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\system.dll' a causa di un errore di sistema:Accesso negato.
22/06/10 11:57:26 DDSet_Status: Dormire 100ms...
MSI (s) (54!70) [11:57:26:738]: Prodotto: Microsoft .NET Framework 2.0 Service Pack 2 -- Si è verificato un problema con questo pacchetto di Windows Installer.
Per altre informazioni, vedere il log di installazione.
Si è verificato un problema con questo pacchetto di Windows Installer.
Per altre informazioni, vedere il log di installazione.
22/06/10 11:57:26 DDSet_CARetVal: 0
22/06/10 11:57:26 DDSet_Exit: InstallAssembly terminato con il valore restituito 1603
MSI (s) (54:94) [11:57:26:758]: Il valore dei criteri utente 'DisableRollback' è 0
MSI (s) (54:94) [11:57:26:758]: Il valore dei criteri del computer 'DisableRollback' è 0
L'azione è terminata 11:57:26: InstallExecute. Valore restituito 3.

Oppure

22/02/10 08:38:32 DDSet_Status: Dormire 100ms...
22/02/10 08:38:32 DDSet_Error: Impossibile installare l'assembly
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll. IAssemblyCache-InstallAssembly>() ha restituito -2147024864.
22/02/10 08:38:32 DDSet_Error: Impossibile installare l'assembly
'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll' a causa di un errore di sistema:
Il processo non può accedere al file perché viene usato da un altro processo.

Causa

Se gli assembly sono in uso o bloccati quando viene applicata una patch, la patch avrà esito negativo.

Risoluzione

Questo problema può essere evitato assicurando che i processi non siano in esecuzione che possono bloccare gli assembly.

Per rilevare se vengono usati assembly, seguire questa procedura:

  1. Scaricare procexp.exe per individuare il processo che blocca gli assembly.

  2. Avviare procexp.exe e quindi premere CTRL+F per aprire la finestra Di ricerca di Esplora processi .

  3. Nella casella di testo Handle o sottostringa DLL digitare Assembly e quindi selezionare Cerca.

    Screenshot che mostra i passaggi per eseguire la ricerca nell'assembly.

  4. Tutti i file elencati potrebbero avere un impatto sull'installazione della patch. Terminare tutti i processi elencati o chiudere le applicazioni associate. A tal fine, attenersi alla seguente procedura:

    1. Selezionare il nome del processo da terminare nella finestra Di ricerca di Esplora processi per individuare il processo.

    2. Fare clic con il pulsante destro del mouse sul nome del processo nel riquadro Processo .

    3. Selezionare Kill Process (Terminare processo) per terminare il processo.

      Screenshot che mostra i passaggi per terminare un processo.