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

时间:2012-08-30 09:49:33

标签: .net dll unmanaged

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

1 个答案:

答案 0 :(得分:10)

任何调试器都可以这样做(例如windbg) - 但是因为你很有可能打包Visual Studio我会谈论如何在那个 p>

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

How to set debugger type to Native

连接后,点击Debug - >中断,然后按[CTRL] + [ALT] + [U]打开模块窗口(它在菜单上的某处,但我找不到它!) - 这是三星Kies应用程序我的桌面(使用WPF)的示例:

The modules list

在我的情况下,我也启用了托管调试器,并将进程名称移动到列列表的开头,以用于该屏幕截图。

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

请注意,Windows中的所有进程始终都有很长的非托管DLL加载列表;因为Windows不受管理,是应用程序的最终主机。

但当然你可以使用这个列表作为起点并从那里过滤掉。