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.