web-dev-qa-db-fra.com

Comment savoir quels fichiers DLL un exécutable chargera?

Si j'ai un exécutable Windows, comment savoir quelles DLL il va charger?

Je parle juste de ceux qui seront chargés statiquement, pas ceux qu'il pourrait charger dynamiquement avec quelque chose comme LoadLibrary.

72
David Norman

Il existe des utilitaires qui le feront pour vous.

Dans le passé, j'ai utilisé l'outil MS (depend.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.

31
gkrogers

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 dans un dossier contenant l'exécutable
  • dumpbin/dependents any.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
49
Graeme Perrow

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

liste des tâches/m/fi "imagename eq netbeans.exe"

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

13
LOKESH

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

10
David Segonds

Accédez simplement à l'invite de commande et tapez tasklist /m, vous verrez la liste des fichiers dll utilisés par un programme spécifique.

10
Subek Shakya

Solution pour Microsoft .Net:

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

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

1
FlySwat