Comment puis-je savoir quelles dll un exécutable va charger?

Si j’ai un exécutable Windows, comment puis-je savoir quelles dll seront chargées?

Je ne parle que de ceux qui seront chargés statiquement, pas de ceux qui pourraient être chargés dynamicment avec quelque chose comme LoadLibrary.

Il y a des utilitaires qui feront cela pour vous.

Dans le passé, j’ai utilisé l’outil MS (appoint.exe) fourni avec (je pense) VB .:
https://msdn.microsoft.com/en-us/library/8kche8ah.aspx

et il y a aussi ceci:
http://dependencywalker.com/

et probablement d’autres aussi.

dumpbin est un outil fourni avec VC ++.

Pour voir quelles DLL un programme importera:

  • Ouvrez Visual Studio
  • Outils d’élément de menu | Invite de commandes Visual Studio
  • cd au dossier contenant l’exécutable
  • dumpbin / dependents quelquechose.exe
Dump of file whatever.exe File Type: EXECUTABLE IMAGE Image has the following dependencies: AIOUSB.DLL sqlite3.dll wxmsw293u_core_vc_custom.dll wxbase293u_vc_custom.dll KERNEL32.dll ole32.dll OLEAUT32.dll MSVCP90.dll MSVCR90.dll 

Pour voir quelles fonctions (et DLL) il importera, utilisez

 C:\> dumpbin /imports whatever.exe 

Ouvrez l’invite de commande, puis tapez la commande ci-dessous

liste de tâches / m / fi “imagename eq netbeans.exe”

Tapez plutôt netbeans.exe, quel que soit le nom de votre fichier exe.

Il suffit d’aller à l’invite de commande et tapez tasklist /m , vous verrez la liste des fichiers dll utilisés par un programme spécifique.

Dependency Walker peut vous aider à déterminer quel fichier .dll sera chargé.

Solution pour Microsoft .Net:

 foreach (AssemblyName a in Assembly.ReflectionOnlyLoadFrom("SAMPLE.EXE").GetReferencedAssemblies()) { MessageBox.Show(a.Name); } 

Il existe un outil pratique appelé NDepend qui vous donnera toutes les dépendances de DLL.