pasta XP System32 - DLL sendo magicamente substituída após a exclusão?

3

Nossos vendedores têm um aplicativo interno instalado que usa alguns objetos COM / DLLs armazenados no System32. Eu tenho tentado substituir uma dessas DLLs por uma versão mais recente, que funciona bem após a instalação, mas não depois de uma reinicialização.

Aqui está a parte interessante.

  1. Eu cancelei o registro da DLL antiga com regsvr32 / u myDll.dll
  2. Regsvr32 mostra um diálogo indicando sucesso.
  3. copio a DLL antiga em uma pasta "save" e renomeio para 20110412-myDll.dll _.
  4. eu apago o original do system32.
  5. eu coloquei a nova DLL no system32.
  6. Registre a nova dll com regsvr32 myDll.dll
  7. Teste a nova DLL com um VBScript - funciona bem.
  8. E a parte divertida
  9. Reinicialize.
  10. Execute novamente o script vb de teste. falha.
  11. Olhe para a DLL (que eu substituí) no system32. Foi magicamente substituído pela DLL antiga. Eu verifiquei isso com fc (comparação binária) com system32 \ myDll.dll e o 20110412-myDll.dll_ salvo.
  12. APAGAR a DLL antiga. Verifique se, de fato, foi embora.
  13. Pesquise todas as unidades por "myDll.DLL", incluindo as pastas do sistema. Verifique se não há instâncias da DLL antiga diferente da versão renomeada na pasta "salvar".
  14. Reinicializar
  15. A DLL antiga reapareceu magicamente novamente.

A conta de usuário que estou usando para isso tem direitos de administrador completos para a máquina. Não consegui encontrar nenhum processo em execução que deva fazer isso e nosso departamento de TI está perplexo.

Alguém tem alguma sugestão?

Atualizar

Apenas para o inferno, eu iniciei uma das máquinas no modo de segurança, instalei a nova DLL e reiniciei novamente. Desta vez, a mudança parece ter funcionado, mesmo após um reinício subsequente. Estranho.

Eu posso fazer isso em outras máquinas que exibem o mesmo problema, e espero que funcione, mas eu realmente gostaria de saber qual é o problema. Argh.

    
por 3Dave 12.04.2011 / 18:26

2 respostas

2

Este é provavelmente um problema com a Restauração do sistema. Tente desativá-lo antes de substituir a DLL.

Para obter mais informações, consulte O que é a Restauração do sistema nos sistemas operacionais Windows?

e link

    
por 12.04.2011 / 18:43
1

O sistema está substituindo a DLL pelo arquivo em C:\Windows\System32\DLLCache pela Proteção de arquivos do Windows . Verifique o log do sistema em Visualizar eventos (em Ferramentas administrativas) para este evento:

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. 

Tente excluir o arquivo DLL armazenado em DLLCache , substitua a DLL em System32 novamente e reinicialize o computador

Editar: Verifique os registros em seu software de segurança, pois alguns programas de segurança monitoram as DLLs do sistema e bloqueiam as tentativas de substituir o arquivo. Você também pode tentar usar Process Monitor para verificar qual programa está substituindo a DLL, especialmente durante a inicialização com o " Ativar registro de inicialização "recurso localizado em" Opções ".

    
por 12.04.2011 / 18:48

Tags