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.
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)