如何确定可执行文件将加载哪些DLL?
如果我有一个Windows可执行文件,我如何知道它将加载哪些DLL如何确定可执行文件将加载哪些DLL?,dll,executable,Dll,Executable,如果我有一个Windows可执行文件,我如何知道它将加载哪些DLL 我只是说哪些是静态加载的,而不是用LoadLibrary之类的东西动态加载的。有一些实用程序可以为您实现这一点 过去我使用过VB附带的MS工具(depends.exe): 还有这个: 也可能是其他的。可以帮助您确定将加载哪个.dll。progfr简单而有用: [是VC++附带的工具 要查看程序将导入的DLL,请执行以下操作: 开放式Visual Studio 菜单项“工具”| Visual Studio命令提示符 cd到包
我只是说哪些是静态加载的,而不是用LoadLibrary之类的东西动态加载的。有一些实用程序可以为您实现这一点 过去我使用过VB附带的MS工具(depends.exe):
还有这个:
也可能是其他的。可以帮助您确定将加载哪个.dll。progfr简单而有用: [是VC++附带的工具 要查看程序将导入的DLL,请执行以下操作:
- 开放式Visual Studio
- 菜单项“工具”| Visual Studio命令提示符
- cd到包含可执行文件的文件夹
- dumpbin/dependents which.exe
C:\> dumpbin /imports whatever.exe
有一个名为NDepend的方便工具,可以提供所有DLL依赖项。只需转到命令提示符并键入
任务列表/m
,您将看到特定程序使用的DLL文件列表。Microsoft.Net解决方案:
foreach (AssemblyName a in Assembly.ReflectionOnlyLoadFrom("SAMPLE.EXE").GetReferencedAssemblies())
{
MessageBox.Show(a.Name);
}
打开命令提示符,然后键入下面的命令 tasklist/m/fi“imagename eq netbeans.exe” 键入netbeans.exe,不管您的exe文件名是什么。Process Explorer 附带系统内部组件套件 优点:允许浏览已经运行的进程(我还没有找到将依赖项遍历器附加到现有进程的was)显示Windows可执行文件将加载哪些DLL,并且它在现代Windows 10中运行良好
它的功能稍逊于,但后者可能在Windows 10中工作,也可能不工作,因为它上一次更新是在2006年。(较新版本的Dependency Walker与Windows 10的某些版本的Windows Development Kit捆绑在一起,但不再如此。)我认为应该是:dumpbin/dependents which.exe/dependents只显示DLL。/imports显示函数和DLL。这是最好的答案。不幸的是,此工具只显示直接为
.exe
加载的DLL,而不显示可执行文件间接依赖的DLL。“dependens.exe”它与Visual Studio/VB/…一起安装,可以从中下载的“depends.exe”是完全相同的工具(仅不同版本)是的,这就是你所说的,但是,如果一个可执行文件启动了多个进程,你将永远无法从命令行中找到哪个进程是由可执行文件启动的,因此你将不知道可执行文件的所有依赖dll。不加载路径。很好的GUI程序。依赖性Walker
尝试查找dll和它们的层次依赖关系。NDepend
是一个用于.NET托管代码的静态分析工具。因此它只适用于.NET应用程序。您忘了提到它作为vs扩展。我使用了它,但它没有给我它使用的DLL的完整列表,我的exe正在使用一堆crystalreports DLL,但我没有看到任何人通过该命令打印的列表中已分区。有什么想法吗?此解决方案不包括其子级所需的参考DLL。
foreach (AssemblyName a in Assembly.ReflectionOnlyLoadFrom("SAMPLE.EXE").GetReferencedAssemblies())
{
MessageBox.Show(a.Name);
}