que programas formato extensión extension ejecutar con como archivos archivo abrir winapi dll

winapi - programas - formato dll



¿Cómo detecto las DLL requeridas por una aplicación? (7)

En pocas palabras: quiero hacer lo mismo "Dependency Walker".

¿Hay alguna función de API de Win32 que pueda enumerar las dependencias de un archivo EXE y / o DLL?

¿Y hay alguna forma segura de detectar dependencias en clases ActiveX? (Dudo que sea posible, pero quién sabe ...)

EDIT: soy consciente de las herramientas disponibles que proporcionan la misma funcionalidad básica (Dependency Walker, ProcessExplorer, AQTime, ...) pero quiero crear mi propio programa que vuelca un archivo de texto que contiene los módulos requeridos.


Ejecute la aplicación, con Process Explorer ejecutándose y configurándose para filtrar el nombre de su aplicación .exe.

No hay forma de detectar todas las dependencias COM que tiene un ejecutable sin ejecutarlo.


Parece que el código fuente de Dependency Walker fue dado por Microsoft a través de MSJ. Por favor, mira Re: [DUG]: Dependency Walker .

Debe remitir otro sitio para descargar, ya que el enlace que se proporciona en este seguimiento de correo no funciona.

Verifique las actualizaciones de código fuente de MSJ : dado que no tengo tiempo, no he comprobado si contiene código fuente o solo elementos EXE.


Los siguientes comandos vuelcan las dependencias directas de some.exe:

dumpbin /imports some.exe

Funciona en DLL también.

Esto no mostrará las dependencias, como los complementos cargados en el inicio de la aplicación (a través de llamadas LoadLibrary). Lo mismo para las dependencias COM ya que funcionan de la misma manera (hasta donde yo sé).

Si necesita conocer todas las DLL utilizadas por un programa en ejecución, use ProcessExplorer.



Usuario @blue ... eludido a Dependency Walker . Al usar Dependency Walker, después de abrir el archivo puede ver los requisitos básicos que se utilizan. Solo cuando ejecuta el programa y ejerce todas sus funciones puede encontrar todos los archivos DLL cargados dinámicamente.

A veces, lo mejor que puede hacer si puede es preguntarle al desarrollador qué archivos DLL son necesarios. Una aplicación solo puede cargar algunos archivos DLL cuando sea absolutamente necesario. por ejemplo, cargando faultrep.dll, para informes de errores de Windows personalizados, cuando está a punto de bloquearse.


findstr -i .dll exe.exe | más | findstr -i .dll | Más

rem :)


Puede escribir una aplicación de consola para concluir, crear un script de PowerShell o, como suelo terminar haciendo, ya que solo tengo que hacerlo una vez en una luna azul, agregue lo siguiente a su código para una verificación rápida:

private static HashSet<string> ReferencedAssemblies = new HashSet<string>(); ... OutputDependencies(Assembly.GetAssembly(typeof(Program)), 0); ... static void OutputDependencies(Assembly assembly, int indent) { if (assembly == null) return; Console.WriteLine(new String('' '', indent * 4) + assembly.FullName); if (!ReferencedAssemblies.Contains(assembly.FullName)) { ReferencedAssemblies.Add(assembly.FullName); foreach (var childAssembly in assembly.GetReferencedAssemblies()) { OutputDependencies(Assembly.Load(childAssembly.FullName), indent + 1); } } }