¿Cómo puedo averiguar qué programa instaló o está usando un archivo DLL específico?

9

Tengo un archivo DLL en el directorio SYSTEM32 de un servidor, que no estoy seguro de necesitar.

Google me ha dicho para qué se usa normalmente, pero el software nunca se ha instalado en este sistema. Aún así, considero posible que uno de los otros productos instalados en el servidor haya incluido (y, por lo tanto, presumiblemente, requerirá) el archivo.

Hice una búsqueda a través del Registro del nombre del archivo, y también de algunas cadenas que encontré en los metadatos del archivo, y no pude encontrar nada informativo. (Aunque la tecla ACMru me llamó la atención, hasta que descubrí para qué sirve ).

¿Hay algo más que pueda hacer para que el sistema mismo me diga qué programa instaló la DLL y / o qué programa (s) instalado (si corresponde) lo usaría?

NOTA: Las sugerencias de herramientas son buenas, pero no instalaré ni ejecutaré ningún software adicional en este sistema. Necesito trabajar con lo que esté disponible en una instalación predeterminada de Server 2003.

Iszi
fuente

Respuestas:

5

Verificaría la fecha en que se colocó en el sistema y lo compararía con otros archivos en el sistema para obtener pistas. La búsqueda debería permitirle buscar en todo el sistema por fecha.

Además, publicar el nombre del archivo aquí permitiría a algunas personas que estén familiarizadas con él identificarlo por usted.

music2myear
fuente
Gracias. Podría publicar el nombre del archivo en otra pregunta. Quería que este fuera genérico para que obtuviera respuestas que pudieran usarse para cualquier archivo DLL.
Iszi
4

Potencialmente, podría examinar cada archivo .MSI en la carpeta% SystemRoot% \ Installer. Todos los programas (?) Que se instalan a través del instalador de Windows agregarán su MSI aquí para que puedan desinstalarse más adelante. La carpeta generalmente tiene un montón de cosas. Si / Una vez que encuentre el archivo dll entre la miríada de paquetes MSI, deberá asignar el paquete a un nombre bien definido.

Para descompilar los archivos msi usando un script, puede intentar usar esta herramienta VBS http://www.hanselman.com/blog/HowToListAllTheFilesInAnMSIInstallerUsingVBSciript.aspx o puede probar un programa llamado MSIDiff (que nunca he usado) http: //dennisbareis.com/msidiff.htm . Por supuesto, teniendo en cuenta las limitaciones de no tener que instalar herramientas, este último no necesariamente funcionará en ese sentido. El primero lo haría si cscript está instalado.

La última herramienta podría hacer el mapeo del nombre del paquete por usted sin recurrir a buscar manualmente en el registro el GUID apropiado o el nombre de archivo MSI. La herramienta anterior se puede modificar para volcar el nombre del paquete si sabía a qué tabla / columna hacer referencia (no lo sé).

El script VBS simplemente examina el archivo MSI desde una perspectiva de base de datos. El trabajo clave se realiza con: database.OpenView ("SELECT FileName FROM File").

Logiccope
fuente
¿No es esto muy costoso de hacer, igual que instalarlos todos? En mi Windows 8 esos son 412 elementos, en mi Windows 7 esos son 559 y creo que tenía la misma cantidad. Además, el archivo podría no provenir de una msiinstalación ...
Tamara Wijsman
Sí, es costoso, pero para situaciones en las que desea conocer la propiedad sin tener la previsión de tomar una foto del sistema antes y después, esto puede dar alguna idea. También puede automatizar la función de descompilación y comparación real (después de todo, es solo un script vbs). Estoy de acuerdo en que no es una solución perfecta, ya que no todos los paquetes se instalan a través de MSI, pero es posible que tenga suerte. Como dijiste, hay muchos de ellos, por lo que es probable que el archivo haya llegado de esa manera.
logicalscope
Me pregunto si hay herramientas que podrían mirar dentro de los archivos MSI en lugar de descompilarlos / descomprimirlos. De cualquier manera, en otra nueva pregunta del PO hecho estamos hablando de un archivo que ya está en nuestros sistemas de tiempo de instalación ...
Tamara Wijsman
Tom, estoy bastante seguro de que este vbs simplemente examina el MSI desde la vista de la base de datos. El MSI es simplemente un db. Esta herramienta utiliza SQL para extraer los nombres de archivo de la tabla adecuada. No "lo descompila" per se y debería haberlo especificado en mi publicación. Lo revisaré
logicalscope
1

Process Monitor puede hacer esto por usted. Simplemente filtre por el nombre de la DLL y cuando un programa intente cargarla, aparecerá una entrada que menciona qué proceso está buscando y / o accediendo a la DLL que mencionó.

También debe intentar hacer un registro de arranque (habilite el registro de arranque en el menú, luego reinicie y abra nuevamente el monitor de proceso) que es necesario para detectar los programas y servicios que lo cargan al arrancar.

Tamara Wijsman
fuente
¿Qué pasa con los programas inactivos? Parece que tendría que abrir todos los programas sospechosos en la computadora y vigilarlo en Process Monitor.
Iszi
@Iszi: Como se mencionó en el chat, enumerarlos a ellos o a sus instaladores llevará mucho tiempo. Monitoree pasivamente como se mencionó, activamente con Process Explorer. O busque como se menciona en music2myear, que se puede hacer fácilmente con Buscar todo.
Tamara Wijsman