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

Ger*_*ard 6 .net dll unmanaged

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

And*_*tan 10

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

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

如何将调试器类型设置为Native

一旦你连接,点击Debug - > Break然后按下[CTRL] + [ALT] + [U]以显示模块窗口(它在某个地方的菜单上,但我找不到它!) - 这是从我的桌面三星Kies应用程序拍摄的示例(使用WPF):

模块列表

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

如果进程名称: Native在它之后,则它是一个非托管DLL(好吧,它也可能是混合模式).

请注意,Windows 中的所有进程始终都会有很长的非托管DLL加载列表; 因为Windows的核心是无法管理的,并且是应用程序的最终主机.

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