我如何找出哪个DLL可执行文件将加载?

如果我有一个Windows可执行文件,我怎样才能找出哪个DLL将加载?

我只是在谈论哪些将被静态加载,而不是可能会加载dynamicLoadLibrary的东西。

有实用程序会为你做这个。

在过去,我已经使用了MS工具(depends.exe)(我认为)VB:
https://msdn.microsoft.com/en-us/library/8kche8ah.aspx

还有这个:
http://dependencywalker.com/

也可能是其他人。

dumpbin是一个VC ++自带的工具。

要查看程序将导入的DLL:

  • 打开Visual Studio
  • 菜单项工具| Visual Studio命令提示符
  • 光盘到包含可执行文件
  • dumpbin / dependents 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 

要查看它将导入的function(和DLL),请使用

 C:\> dumpbin /imports whatever.exe 

只需进入命令提示符并键入tasklist /m ,您将看到特定程序使用的dll文件列表。

打开命令提示符,然后键入下面的命令

tasklist / m / fi“imagename eq netbeans.exe”

inputnetbeans.exe而不pipe你的exe文件名是什么名字。

依赖Walker可以帮助您确定哪个.dll将被加载。

Microsoft .Net的解决scheme:

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

有一个方便的工具称为NDepend,将给你所有的DLL依赖。