2009-11-21 44 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

相關問題