【发布时间】:2014-07-29 12:11:49
【问题描述】:
我需要一种方法来获取给定进程的所有文件句柄。
例如,给定一个 winword.exe 进程句柄,我想获取该进程的文件句柄列表(doc 文件等)。
我通过 C#/pInvoke 使用 Win32 api。
谢谢!
【问题讨论】:
我需要一种方法来获取给定进程的所有文件句柄。
例如,给定一个 winword.exe 进程句柄,我想获取该进程的文件句柄列表(doc 文件等)。
我通过 C#/pInvoke 使用 Win32 api。
谢谢!
【问题讨论】:
一个简单的解决方案是使用handle.exe 并读取其输出。另一种解决方案是使用带有NtQuerySystemInformation 函数的P/Invoke。 SysInternals 上的This 和this 论坛帖子有更多详细信息以及 CodeProject 上的article。在托管代码中执行此操作可能非常困难,因为您需要编写驱动程序来读取内核地址空间。
我建议您在可以从托管代码调用的 Win32 函数中公开所需的功能。
【讨论】:
handle.exe -a -p 1234时,输出的最低句柄数是4,但STDERR是#2正确吗?
作为对 Darin 答案的补充,另请参阅 this codeguru page 和 this sysinternal forum post
【讨论】: