Wie kann ich herausfinden, welches Programm installiert ist oder eine bestimmte DLL-Datei verwendet?

9

Ich habe eine DLL-Datei im SYSTEM32-Verzeichnis eines Servers, die ich nicht wirklich benötige.

Google hat mir mitgeteilt, wofür es normalerweise verwendet wird, aber die Software wurde noch nie auf diesem System installiert. Dennoch halte ich es für möglich, dass eines der anderen auf dem Server installierten Produkte die Datei enthalten hat (und daher vermutlich erforderlich ist).

Ich habe in der Registrierung nach dem Namen der Datei und nach einigen Zeichenfolgen gesucht, die ich in den Metadaten der Datei gefunden habe, und konnte nichts Informatives finden. (Obwohl mir der ACMru-Schlüssel aufgefallen ist, bis ich herausgefunden habe, wofür er ist .)

Kann ich noch etwas tun, damit das System mir mitteilt, welches Programm die DLL installiert hat und / oder welche installierten Programme (falls vorhanden) sie verwenden würden?

HINWEIS: Toolvorschläge sind nett, aber ich werde keine zusätzliche Software auf diesem System installieren oder ausführen. Ich muss mit allem arbeiten, was bei einer Standardinstallation von Server 2003 verfügbar ist.

Iszi
quelle

Antworten:

5

Ich würde das Datum überprüfen, an dem es auf dem System platziert wurde, und es mit anderen Dateien im System vergleichen, um Hinweise zu erhalten. Mit der Suche sollten Sie das gesamte System nach Datum durchsuchen können.

Wenn Sie den Namen der Datei hier veröffentlichen, können einige, die mit der Datei vertraut sind, sie für Sie identifizieren.

music2myear
quelle
Vielen Dank. Ich könnte den Dateinamen in einer anderen Frage posten. Ich wollte, dass dieses generisch ist, damit es Antworten erhält, die für jede DLL-Datei verwendet werden können.
Iszi
4

Sie könnten möglicherweise jede MSI-Datei im Ordner% SystemRoot% \ Installer untersuchen. Alle (?) Programme, die über das Windows-Installationsprogramm installiert werden, fügen hier ihre MSI hinzu, damit sie zu einem späteren Zeitpunkt deinstalliert werden können. Der Ordner hat im Allgemeinen eine Menge Zeug. Wenn / Sobald Sie die DLL unter diesen unzähligen MSI-Paketen gefunden haben, müssen Sie das Paket wieder einem genau definierten Namen zuordnen.

Um decompile die MSI - Dateien mit einem Skript, können Sie versuchen , dieses VBS - Tool verwenden http://www.hanselman.com/blog/HowToListAllTheFilesInAnMSIInstallerUsingVBSciript.aspx oder Sie können ein Programm versuchen genannt MSIDIFF (was ich noch nie benutzt) http: //dennisbareis.com/msidiff.htm . In Anbetracht der Einschränkungen, keine Tools installieren zu müssen, ist letzteres in dieser Hinsicht natürlich nicht erforderlich. Ersteres würde, wenn cscript installiert ist.

Das letztere Tool führt möglicherweise die Zuordnung des Paketnamens für Sie durch, ohne die Registrierung manuell nach der entsprechenden GUID oder dem entsprechenden MSI-Dateinamen durchsuchen zu müssen. Das frühere Tool kann so geändert werden, dass der Paketname ausgegeben wird, wenn Sie wissen, auf welche Tabelle / Spalte Sie verweisen müssen (ich nicht).

Das VBS-Skript untersucht die MSI-Datei einfach aus einer Datenbankperspektive. Die Schlüsselarbeit wird erledigt mit: database.OpenView ("SELECT FileName FROM File").

logisches Scope
quelle
Ist das nicht sehr kostspielig, gleichbedeutend mit der Installation aller? Auf meinem Windows 8 sind das 412 Elemente, auf meinem Windows 7 sind es 559 und ich würde denken, dass er die gleiche Menge hatte. Außerdem könnte die Datei nicht aus einer msiInstallation stammen ...
Tamara Wijsman
Ja, es ist kostspielig, aber in Situationen, in denen Sie den Besitz wissen möchten, ohne die Voraussicht zu haben, das System vorher und nachher zu erstellen, kann dies einen Einblick geben. Sie können auch die eigentliche Dekompilierungs- und Vergleichsfunktion automatisieren (es ist schließlich nur ein VBS-Skript). Ich bin damit einverstanden, dass es keine perfekte Lösung ist, da nicht alle Pakete über MSI installiert werden, aber Sie könnten Glück haben. Wie Sie sagten, gibt es viele von ihnen, daher besteht die Wahrscheinlichkeit, dass die Datei auf diese Weise durchgekommen ist.
Logicalscope
Ich frage mich, ob es Tools gibt, die nur in die MSI-Dateien schauen können, anstatt sie zu dekompilieren / dekomprimieren. Wie auch immer, in einer anderen neuen Frage, die das OP gestellt hat, sprechen wir über eine Datei, die sich bereits seit der Installation auf unseren Systemen befindet ...
Tamara Wijsman
Tom, ich bin mir ziemlich sicher, dass dieses VBS einfach die MSI aus der Datenbankansicht untersucht. Das MSI ist einfach eine Datenbank. Dieses Tool verwendet SQL, um die Dateinamen aus der entsprechenden Tabelle zu extrahieren. Es "dekompiliert" es nicht per se und ich hätte dies in meinem Beitrag angeben sollen. Ich werde überarbeiten.
Logicalscope
1

Process Monitor kann dies für Sie erledigen. Filtern Sie einfach nach dem Namen der DLL. Wenn ein Programm versucht, sie zu laden, wird ein Eintrag angezeigt, in dem angegeben wird, welcher Prozess nach der von Ihnen erwähnten DLL sucht und / oder auf diese zugreift.

Sie sollten auch versuchen, ein Startprotokoll zu erstellen (aktivieren Sie die Startprotokollierung im Menü, starten Sie den Prozessmonitor neu und öffnen Sie ihn erneut), um Programme und Dienste abzufangen, die ihn beim Start laden.

Tamara Wijsman
quelle
Was ist mit inaktiven Programmen? Es scheint, als müsste ich jedes verdächtige Programm auf dem Computer öffnen und im Prozessmonitor darauf achten.
Iszi
@Iszi: Wie im Chat erwähnt, wird das Aufzählen von ihnen oder ihren Installationsprogrammen lange dauern. Überwachen Sie entweder passiv wie erwähnt aktiv mit Process Explorer. Oder suchen Sie wie bei music2myear erwähnt, was mit Search Everything ganz einfach möglich ist.
Tamara Wijsman