Correção de .NET Framework falha com um erro: o acesso é negado ou Arquivo em Uso

Este artigo ajuda você a resolver o problema em que o Microsoft .NET Framework falhas de correção quando os assemblies estão em uso ou bloqueados quando um patch é aplicado.

Versão original do produto:   .NET Framework
Número KB original:   2263996

Sintomas

Se um arquivo de assembly no GaC (Cache de Acesso Global) tiver sido bloqueado ou estiver em uso, ele poderá fazer com que .NET Framework patches falhem. Esse problema pode ser piorado por um bug na maneira como a fusão lida com a reação e pode fazer com que os arquivos sejam excluídos. Isso fará com que aplicativos gerenciados (os aplicativos que dependem de assemblies de estrutura) falhem.

O log MSI Verbose do patch de falha pode conter algo assim:

'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\system.dll' por causa de erro do sistema:o acesso é negado.
22/06/10 11:57:26 DDSet_Status: 100ms de sono...
MSI (s) (54!70) [11:57:26:738]: Produto: Microsoft .NET Framework 2.0 Service Pack 2 -- Há um problema com este pacote do Instalador Windows.
Consulte o log de instalação para obter mais informações.
Há um problema com esse pacote Windows Instalador.
Consulte o log de instalação para obter mais informações.
22/06/10 11:57:26 DDSet_CARetVal: 0
22/06/10 11:57:26 DDSet_Exit: InstallAssembly terminou com o valor de retorno 1603
MSI (s) (54:94) [11:57:26:758]: O valor da política de usuário 'DisableRollback' é 0
MSI (s) (54:94) [11:57:26:758]: Valor da política de máquina 'DisableRollback' é 0
Ação encerrada 11:57:26: InstallExecute. Valor de retorno 3.

Ou

22/02/10 08:38:32 DDSet_Status: 100ms de sono...
22/02/10 08:38:32 DDSet_Error: Falha ao instalar o assembly
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll. IAssemblyCache->InstallAssembly() retornado -2147024864.
22/02/10 08:38:32 DDSet_Error: Falha ao instalar o assembly
'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll' devido a um erro do sistema:
O processo não pode acessar o arquivo porque ele está sendo usado por outro processo.

Motivo

Se os assemblies estão em uso ou bloqueados quando um patch é aplicado, o patch falhará.

Resolução

Esse problema pode ser evitado garantindo que os processos não sejam executados que possam colocar um bloqueio nos assemblies.

Para detectar se assemblies estão sendo usados, siga estas etapas:

  1. Baixe procexp.exe para descobrir o processo que está travando assemblies.

  2. Iniciar procexp.exe e pressione Ctrl+F para abrir a janela Pesquisa do Explorador de Processos.

  3. Na caixa de texto Manipular ou DLL, digite Assembly e selecione Pesquisar.

    Captura de tela mostra etapas para o assembly de pesquisa.

  4. Todos os arquivos listados podem ter um impacto na instalação do patch. Encerrar todos os processos listados ou fechar os aplicativos associados. Para fazer isso, siga estas etapas:

    1. Selecione o nome do processo que você deseja encerrar na janela Pesquisa do Explorador de Processos para localizar o processo.

    2. Clique com o botão direito do mouse no nome do processo no painel Processo.

    3. Selecione Processo de Cancelamento para encerrar o Processo.

      Captura de tela mostra etapas para matar um processo.