如何通过托管.net应用程序查找所有非托管DLL loadad的列表
我的托管.net应用程序使用第三方.net库,它们使用(通过PInvoke)非托管DLL。我想知道加载了哪些DLL。我尝试使用“Process Explorer”和“Dependency Walker”,但我只能看到托管DLL。任何调试器都可以做到这一点(例如,如何通过托管.net应用程序查找所有非托管DLL loadad的列表,.net,dll,unmanaged,.net,Dll,Unmanaged,我的托管.net应用程序使用第三方.net库,它们使用(通过PInvoke)非托管DLL。我想知道加载了哪些DLL。我尝试使用“Process Explorer”和“Dependency Walker”,但我只能看到托管DLL。任何调试器都可以做到这一点(例如,windbg)——但由于这是一个很好的机会,您正在打包Visual Studio,因此我将在此讨论如何做到这一点 将Visual Studio调试器附加到应用程序,记住仅选择本机调试器,如下所示: 连接后,点击Debug->Break,
windbg
)——但由于这是一个很好的机会,您正在打包Visual Studio,因此我将在此讨论如何做到这一点
将Visual Studio调试器附加到应用程序,记住仅选择本机调试器,如下所示:
连接后,点击Debug->Break,然后按[CTRL]+[ALT]+[U]
打开模块窗口(它在菜单上的某个地方,但我找不到它!)-以下是三星Kies应用程序my desktop(使用WPF)的示例快照:
在我的例子中,我也启用了托管调试器,并出于屏幕截图的目的将进程名称移动到列列表的开头
如果进程名后面有:Native
,那么它是一个非托管DLL(我想它也可能是混合模式)
请注意,Windows中的所有进程将始终有一个很长的非托管DLL加载列表;因为Windows的核心是非托管的,是应用程序的最终宿主
但当然,您可以使用此列表作为起点并从中筛选。谢谢,这正是我所需要的。