2009-11-21 37 views
6

我需要一种获取给定进程的所有文件句柄的方法。获取给定进程的文件句柄

例如,给定一个winword.exe进程句柄,我想获得该进程的文件句柄列表(doc文件等)。

我通过C#/ pInvoke使用Win32 api。

谢谢!

回答

8

一个简单的解决方案是使用handle.exe并读取其输出。另一个解决方案是使用P/Invoke和NtQuerySystemInformation函数。 Thisthis SysInternals上的论坛帖子有更多的细节,以及CodeProject上的article。在托管代码中执行它可能非常困难,因为您需要编写驱动程序来读取内核地址空间。

我建议你在可以从托管代码调用的Win32函数中公开所需的功能。

+0

可以handle.exe视图STDERR和STDOUT?当我执行'handle.exe -a -p 1234'时,输出的最低句柄数是4,但STDERR是#2是否正确? – 2013-07-08 14:42:31

相关问题