Si j'ai un exécutable Windows, comment puis-je savoir quelles DLL il chargera? Je ne fais que parler de ceux qui seront chargés statiquement, pas de ceux qu'il chargera dynamiquement avec quelque chose comme LoadLibrary.Comment puis-je savoir quelles DLL un chargement va charger?
Répondre
Il existe des utilitaires qui feront cela pour vous.
Dans le passé, je l'ai utilisé l'outil MS (de depends.exe) qui est venu avec (je pense) VB .:
https://msdn.microsoft.com/en-us/library/8kche8ah.aspx
et il y a cela aussi:
http://dependencywalker.com/
et probablement d'autres aussi.
Dependency Walker peut vous aider à déterminer quel fichier .dll sera chargé.
Beau programme GUI. 'Dependency Walker' essaie de trouver les DLL et leurs dépendances hiérarchiques. – SuB
progfr est simple et utile: [http://members.fortunecity.com/michaelmoser/tip11.htm]
dumpbin est un outil qui vient avec VC++.
Pour voir ce que les DLL d'un programme importera:
- Ouvrez Visual Studio
- Menu Outils d'article | Commande Visual Studio invite
- cd dans le dossier contenant l'exécutable
- dumpbin/charge whatever.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
Je crois qu'il devrait être: dumpbin/dépendants quel que soit –
dépendants ne vous montre que les DLL./ imports vous montre les fonctions * et * DLL. –
Ceci est la meilleure réponse. Malheureusement, cet outil ne montre que les DLL chargées directement pour les DLL '.exe' non DLL dont le fichier exécutable dépend indirectement. – SuB
Il existe un outil pratique appelé NDepend qui vous donnera toutes les dépendances DLL.
_'NDepend' est un outil d'analyse statique pour .NET géré code'_. Donc, cela ne fonctionne que pour les applications .Net. – SuB
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.
Ouais, cela fait ce que vous dites, cependant, si un exécutable démarre plusieurs processus, vous ne saurez jamais à partir de la ligne de commande quel processus a été démarré par les exécutables, donc vous ne connaîtrez pas toutes les dll dépendantes de l'exécutable. – Fazi
Solution pour Microsoft .Net:
foreach (AssemblyName a in Assembly.ReflectionOnlyLoadFrom("SAMPLE.EXE").GetReferencedAssemblies())
{
MessageBox.Show(a.Name);
}
Ouvrez l'invite de commande et tapez commande ci-dessous
tasklist/m/fi "imagename éq netbeans.exe"
Type de lieu netbeans.exe quel que soit le nom de votre fichier exe.
bonne astuce, bien que ne fonctionne que pour l'exécution de processess. –
je l'ai utilisé et il ne me donne pas la liste complète des DLL que son utilisation, il ya un tas de dlls crystalreports que mon exe utilise, mais je ne vois pas mentionné dans la liste imprimée par le biais de cette commande. Des idées? – user734028
Le fichier "depends.exe" installé avec Visual Studio/VB/... et le fichier "depends.exe" que vous pouvez télécharger depuis http://dependencywalker.com/ sont exactement le même outil (seulement des versions différentes) . ;) –