2009-06-17 69 views
4

你如何發現哪個進程在文件上有打開的句柄?具體來說,你如何在程序上做到這一點?誰在Windows中擁有文件句柄?

+0

鑑於他想知道如何以編程方式執行此操作,此*爲*與編程相關,* *不屬於服務器故障。 – ChrisW 2009-06-17 18:31:46

回答

-1

Sysinternals的進程管理器會告訴你這一點。

+0

究竟,它是如何做到的? – fryguybob 2009-06-17 18:21:09

1

有可能是API,我不知道。如果有的話,它可能是內核中的一個API。

另一種可能性(抱歉含糊不清,但我現在正在回答這個問題,以防其他人發佈一個更好的答案)是沒有(記錄)API,並且這樣做的程序是這樣做的使用句柄內容的無證知識和/或句柄(當作爲指針處理時)所指向的內存:例如,我發現A Process' Kernel Object Handle Table,我認爲(那些人說他們有反向操作,設計的無證記憶結構)是我記得多年前在Softice手冊中讀到的。

一個地方尋找更多的信息可能是File System Filter Drivers

另一個(也許更好的)方法可能是使用dependsdumpbin /imports來試圖查看相關Sysinternals程序正在使用的API。