Comment puis-je savoir quel programme est installé ou utilise un fichier DLL spécifique?

J'ai un fichier DLL dans le répertoire SYSTEM32 d'un serveur, dont je ne suis pas sûr d'avoir réellement besoin.

Google m'a parlé de quoi il est normalement utilisé, mais le logiciel n'a jamais été installé sur ce système. Pourtant, je considère qu'il est possible que l'un des autres produits installés sur le serveur ait inclus (et donc, presumaby, il faudra) le fichier.

J'ai fait une recherche dans le registre pour le nom du fichier, et aussi pour certaines chaînes que j'ai trouvées dans les métadonnées du fichier, et je n'ai pas pu générer d'information. (Bien que la clé ACMru ait attiré mon attention, jusqu'à ce que je sors ce que c'est pour .)

Y a-t-il autre chose que je peux faire, pour que le système lui-même me dise quel programme a installé la DLL et / ou quel programme (s) installé (s) l'utiliserait-il?

REMARQUE: les suggestions d'outils sont agréables, mais je n'installerai ou n'exploitai aucun logiciel supplémentaire sur ce système. Je dois travailler avec tout ce qui est disponible sur une installation par défaut de Server 2003.

Je vérifie la date à laquelle il a été placé sur le système et le compare à d'autres fichiers du système pour obtenir des indices. La recherche devrait vous permettre de rechercher l'ensemble du système par date.

En outre, l'affichage du nom du fichier ici permettrait à certains d'entre eux qui pourraient l'être pour l'identifier.

Vous pouvez éventuellement examiner chaque fichier .MSI dans le dossier% SystemRoot% \ Installer. Tous les programmes (?) Installés via le programme d'installation de Windows ajouteront leur MSI ici afin qu'ils puissent être désinstallés ultérieurement. Le dossier contient généralement une quantité de choses. Si / Une fois que vous trouvez le dll parmi ces innombrables paquets MSI, vous devrez mapper le package à un nom bien défini.

Pour décompiler les fichiers msi en utilisant un script, vous pouvez essayer d'utiliser cet outil VBS http://www.hanselman.com/blog/HowToListAllTheFilesInAnMSIInstallerUsingVBSciript.aspx ou vous pouvez essayer un programme appelé MSIDiff (que je n'ai jamais utilisé) http: //dennisbareis.com/msidiff.htm . Bien sûr, compte tenu des contraintes de ne pas avoir à installer des outils, ce dernier ne fonctionnera pas nécessairement à cet égard. Le premier serait si cscript était installé.

Ce dernier outil pourrait faire le mappage des noms de paquets pour vous sans recourir à la recherche manuelle du registre pour le GUID approprié ou le nom de fichier MSI. L'ancien outil peut être modifié pour vider le nom du paquet si vous savez quelle table / colonne à faire référence (je ne le fais pas).

Le script VBS examine simplement le fichier MSI à partir d'une perspective de base de données. Le travail clé est effectué avec: database.OpenView ("SELECT FileName FROM File").

Process Monitor peut faire cela pour vous. Il suffit de filtrer par le nom de la DLL et lorsqu'un programme essaie de le charger, une entrée indiquera quel processus recherche et / ou accède à la DLL que vous avez mentionnée.

Vous devriez également essayer de créer un journal de démarrage (activer la journalisation de démarrage dans le menu, puis redémarrer et ouvrir le moniteur de processus à nouveau), ce qui est nécessaire pour capturer les programmes et les services qui le chargent lors du démarrage.