我需要一种方法来获取给定进程的所有文件句柄。
例如,给定 winword.exe 进程句柄,我想要获取该进程的文件句柄列表(例如 doc 文件等)。
我正在使用 C#/pInvoke 通过 Win32 API 实现。
谢谢!
例如,给定 winword.exe 进程句柄,我想要获取该进程的文件句柄列表(例如 doc 文件等)。
我正在使用 C#/pInvoke 通过 Win32 API 实现。
谢谢!
一种简单的解决方案是使用 handle.exe 并读取其输出。另一种解决方案是使用P/Invoke调用 NtQuerySystemInformation 函数 。SysInternals 论坛上的这个 和 这个 论坛帖子以及 CodeProject 上的 这篇文章 中都有更多详细信息。在托管代码中进行此操作可能会非常困难,因为您需要编写驱动程序来读取内核地址空间。
我建议您将所需功能公开为 Win32 函数,以便从托管代码中调用。
handle.exe -a -p 1234
时,输出的最低句柄号是4,但STDERR是#2,对吗? - Alexander Bird