2009-06-17 47 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。