我的托管.net应用程序使用第三方.net库,它们使用(通过PInvoke)非托管dll。我想知道哪些dll被加载了。我尝试使用“Process Explorer”和“Dependency Walker”,但我只能看到托管的DLL。
答案 0 :(得分:10)
任何调试器都可以这样做(例如windbg
) - 但是因为你很有可能打包Visual Studio我会谈论如何在那个 p>
将Visual Studio调试器附加到应用程序,记住只选择Native调试器,如下所示:
连接后,点击Debug - >中断,然后按[CTRL] + [ALT] + [U]
打开模块窗口(它在菜单上的某处,但我找不到它!) - 这是三星Kies应用程序我的桌面(使用WPF)的示例:
在我的情况下,我也启用了托管调试器,并将进程名称移动到列列表的开头,以用于该屏幕截图。
如果进程名称后面有: Native
,那么它就是一个非托管DLL(好吧,我猜它也可能是混合模式)。
请注意,Windows中的所有进程始终都有很长的非托管DLL加载列表;因为Windows不受管理,是应用程序的最终主机。
但当然你可以使用这个列表作为起点并从那里过滤掉。