Como posso descobrir qual programa está instalado ou está usando um arquivo DLL específico?


9

Eu tenho um arquivo DLL no diretório SYSTEM32 de um servidor, do qual não tenho certeza se realmente preciso.

O Google me disse para que é normalmente usado, mas o software nunca foi instalado neste sistema. Ainda assim, considero possível que um dos outros produtos instalados no servidor possa ter incluído (e, portanto, presumivelmente, exigirá) o arquivo.

Pesquisei no registro o nome do arquivo e também algumas strings que encontrei nos metadados do arquivo, e não consegui encontrar nada informativo. (Embora a chave do ACMru tenha me chamou a atenção, até eu descobrir para que serve .)

Há mais alguma coisa que eu possa fazer para que o próprio sistema me diga qual programa instalou a DLL e / ou que programa (s) instalado (se houver) o usaria?

NOTA: As sugestões de ferramentas são boas, mas não instalarei ou executarei nenhum software adicional neste sistema. Preciso trabalhar com o que estiver disponível em uma instalação padrão do Server 2003.

Respostas:


5

Eu verificaria a data em que ela foi colocada no sistema e a compararia com outros arquivos no sistema para obter pistas. A pesquisa deve permitir que você pesquise todo o sistema por data.

Além disso, a publicação do nome do arquivo aqui permitiria que alguns que estão familiarizados com ele o identificassem para você.


Obrigado. Eu posso postar o nome do arquivo em outra pergunta. Eu queria que este fosse genérico para obter respostas que pudessem ser usadas para qualquer arquivo DLL.
Iszi 22/12

4

Você pode examinar potencialmente cada arquivo .MSI na pasta% SystemRoot% \ Installer. Todos os programas instalados pelo instalador do Windows adicionam o MSI aqui para que possam ser desinstalados posteriormente. A pasta geralmente tem uma tonelada de coisas. Se / Depois de encontrar a dll entre os inúmeros pacotes MSI, será necessário mapear o pacote de volta para um nome bem definido.

Para descompilar os arquivos msi usando um script, você pode tentar usar esta ferramenta VBS http://www.hanselman.com/blog/HowToListAllTheFilesInAnMSIInstallerUsingVBSciript.aspx ou você pode tentar um programa chamado MSIDiff (que eu nunca usei) http: //dennisbareis.com/msidiff.htm . Obviamente, considerando as restrições de não ter que instalar ferramentas, as últimas não funcionarão nesse sentido. O primeiro seria se cscript estiver instalado.

A última ferramenta pode fazer o mapeamento do nome do pacote para você sem recorrer à pesquisa manual no registro do nome do arquivo GUID ou MSI apropriado. A ferramenta anterior pode ser modificada para despejar o nome do pacote se você souber qual tabela / coluna referenciar (não sei).

O script VBS simplesmente examina o arquivo MSI da perspectiva do banco de dados. O trabalho principal é feito com: database.OpenView ("SELECT FileName FROM File").


Isso não é muito caro, é como instalar todos eles? No meu Windows 8, esses são 412 itens, no meu Windows 7, são 559 e eu acho que ele tinha uma quantidade igual. Além disso, o arquivo pode não ter vindo de uma msiinstalação ...
Tamara Wijsman

Sim, é caro, mas para situações em que você deseja conhecer a propriedade sem ter a previsão de capturar instantaneamente o sistema antes e depois, isso pode fornecer algumas informações. Você também pode automatizar a função real de descompilação e comparação (afinal, é apenas um script vbs). Concordo que não é um solução perfeita, pois nem todos os pacotes são instalados através do MSI, mas você pode ter sorte. Como você disse, existem muitos deles, então as chances são de que o arquivo possa ter passado por esse caminho.
Lógico #

Gostaria de saber se existem ferramentas que poderiam apenas olhar dentro dos arquivos MSI em vez de descompilar / descompactá-los. De qualquer forma, em outra nova pergunta do OP feito estamos falando de um arquivo que já está em nossos sistemas de tempo de instalação ...
Tamara Wijsman

Tom, tenho certeza de que esse vbs simplesmente examina o MSI da exibição do banco de dados. O MSI é simplesmente um banco de dados. Essa ferramenta usa o SQL para extrair os nomes de arquivos da tabela apropriada. Ele não "descompila" por si só e eu deveria ter especificado isso na minha postagem. Eu vou revisar.
Lsc #

1

O Process Monitor pode fazer isso por você. Basta filtrar pelo nome da DLL e quando um programa tentar carregá-la, surgirá uma entrada que menciona qual processo está procurando e / ou acessando a DLL mencionada.

Você também deve tentar fazer um log de inicialização (ative o log de inicialização no menu, reinicie e abra o monitor de processo novamente), o que é necessário para capturar programas e serviços que o carregam na inicialização.


E quanto a programas inativos? Parece que eu teria que abrir todos os programas suspeitos no computador e atendê-los no Process Monitor.
Iszi

@ Iszi: Como mencionado no bate-papo, enumerá-los ou seus instaladores levará muito tempo. Monitore passivamente, conforme mencionado, ativamente com o Process Explorer. Ou pesquise como o music2myear mencionado, o que pode ser feito facilmente com Pesquisar tudo.
Tamara Wijsman
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.