如何通过托管.net应用程序查找所有非托管DLL loadad的列表

如何通过托管.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,

我的托管.net应用程序使用第三方.net库,它们使用(通过PInvoke)非托管DLL。我想知道加载了哪些DLL。我尝试使用“Process Explorer”和“Dependency Walker”,但我只能看到托管DLL。

任何调试器都可以做到这一点(例如,
windbg
)——但由于这是一个很好的机会,您正在打包Visual Studio,因此我将在此讨论如何做到这一点

将Visual Studio调试器附加到应用程序,记住仅选择本机调试器,如下所示:

连接后,点击Debug->Break,然后按
[CTRL]+[ALT]+[U]
打开模块窗口(它在菜单上的某个地方,但我找不到它!)-以下是三星Kies应用程序my desktop(使用WPF)的示例快照:

在我的例子中,我也启用了托管调试器,并出于屏幕截图的目的将进程名称移动到列列表的开头

如果进程名后面有
:Native
,那么它是一个非托管DLL(我想它也可能是混合模式)

请注意,Windows中的所有进程将始终有一个很长的非托管DLL加载列表;因为Windows的核心是非托管的,是应用程序的最终宿主


但当然,您可以使用此列表作为起点并从中筛选。

谢谢,这正是我所需要的。