Remova c: /windows/syswow64/msxml4.dll

2

Um programa instalou o c: /windows/syswow64/msxml4.dll no meu disco rígido. Infelizmente esta é uma versão antiga (4.30.2100.0) com um problema de segurança, portanto, eu realmente quero remover o arquivo e o programa que o instalou.

O MSXML4 não está na lista de programas que eu posso desinstalar em "Programas e recursos". Existe uma maneira de encontrar o programa que o instalou no Windows 8.1?

Espero que alguns de vocês possam ajudar.

    
por Rolf 23.08.2014 / 15:38

3 respostas

3

Encontrando dependências

Como sugerido por @DavidMarshall, você pode usar o Dependency Walker :

Dependency Walker is a free utility that scans any 32-bit or 64-bit Windows module (exe, dll, ocx, sys, etc.) and builds a hierarchical tree diagram of all dependent modules. For each module found, it lists all the functions that are exported by that module, and which of those functions are actually being called by other modules.

Source: Dependency Walker (depends.exe) Home Page

Se você tiver muitos programas, no entanto, passar por todos eles é inviável. Uma abordagem diferente é abrir um prompt de comando elevado e execute o seguinte comando:

type nul>"%temp%\find.txt" & for /r "%systemdrive%\" %G in (*.exe;*.dll) do @find /i "msxml4.dll" "%~fG" >nul 2>&1 && echo %~fG>>"%temp%\find.txt"

O que o comando faz é verificar de maneira recursiva o conteúdo de cada aplicativo e arquivo de biblioteca disponível na unidade do sistema procurando por msxml4.dll strings, de maneira que não diferencia maiúsculas e minúsculas.

Os resultados são armazenados em um arquivo find.txt localizado na pasta temporária do usuário. Não é perfeito (veja abaixo), mas pode dar algumas dicas.

Observações

  • O comando find foi projetado para arquivos de texto. Embora também funcione para arquivos binários, certas instâncias podem ser ignoradas, dependendo de como elas são armazenadas. As permissões de arquivo podem impedir que determinados arquivos sejam verificados também.

  • Caso você tenha programas que não estejam instalados na unidade do sistema, é possível executar novamente o comando acima e especificar a letra da unidade correspondente.

  • Você pode incluir outras extensões, como:

    .cpl = Control panel item
    .ocx = ActiveX control
    .scr = Screen saver
    .sys = System file (e.g. device drivers)
    

Leitura adicional

por 25.08.2014 / 10:18
2

Isso é o que eu criei para escanear com o powershell. Eu sou novo no powershell, então pode não ser bonito, mas funciona.

$hostName     = hostname

$appFilePath  = "C:\Windows\Temp\DLL_$hostName.csv"

$scanPath     = 'C:\'

$exefile      = "*.exe"

$dllFile      = "*.dll"

A seguir cria uma lista de todas as DLLs e EXEs em c $:

$dll = dir -ErrorAction SilentlyContinue -Recurse -Path $scanPath -Include @($exefile, $dllFile)

A seguir, o aspecto de cada arquivo para ver se ele faz referência a MSXML4.dll. Leva cerca de 30 minutos nos meus 149gb de dados:

$dll | Select-String "msxml4.dll" -ErrorAction SilentlyContinue | group $($_.name) | select name | export-csv -path $appFilePath'

A saída não está formatada, por isso você terá algo como:

C:\Windows\SysWOW64\migwiz\unbcl.dll:45:Cclass UnBCL::TimeSpan __thiscall UnBCL::TimeSpan::Add(const class UnBCL::TimeSpan &) constresult of TimeSpan additio..... and so on 
O

unbcl.dll está em todas as máquinas que eu examinei e pode ser ignorado. Eu acho que é apenas procurando MSXML4.dll, mesmo se não estiver na máquina.

Você também terá ótimas coisas assim:

"C:\Users\USERX\Documents\Toad for Oracle 10.1 - R2 Commercial.exe:5045:File_Name=""msxml4.dll"" "
    
por 16.12.2014 / 21:00
0

Uma varredura melhor seria adicionar windows \ system32 e / ou windows \ syswow64

Por exemplo:

digite

nul>"%temp%\find.txt" & for /r "%systemdrive%\windows\syswow64" %G in (*.exe;*.dll) do @find /i "msxml4.dll" "%~fG" >nul 2>&1 && echo %~fG>>"%temp%\find.txt"
    
por 27.08.2014 / 22:30