获取给定进程的文件句柄

6
我需要一种方法来获取给定进程的所有文件句柄。
例如,给定 winword.exe 进程句柄,我想要获取该进程的文件句柄列表(例如 doc 文件等)。
我正在使用 C#/pInvoke 通过 Win32 API 实现。
谢谢!
2个回答

8

一种简单的解决方案是使用 handle.exe 并读取其输出。另一种解决方案是使用P/Invoke调用 NtQuerySystemInformation 函数 。SysInternals 论坛上的这个这个 论坛帖子以及 CodeProject 上的 这篇文章 中都有更多详细信息。在托管代码中进行此操作可能会非常困难,因为您需要编写驱动程序来读取内核地址空间。

我建议您将所需功能公开为 Win32 函数,以便从托管代码中调用。


能够处理.exe视图的STDERR和STDOUT吗?当我执行handle.exe -a -p 1234时,输出的最低句柄号是4,但STDERR是#2,对吗? - Alexander Bird

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接