如何发现哪个进程在使用一个文件的句柄?具体来说,如何以编程方式实现这一点?
可能有一个API可以解决这个问题,但我不确定。如果有的话,它可能是内核中的API。
另一个可能性(抱歉我回答得有点含糊,但我现在回答是因为如果没有其他人发表更好的答案),就是没有(记录的)API,并且执行此操作的程序是通过使用对句柄内容和/或句柄(当作指针处理时)指向的内存的未记录知识来完成的:例如,我找到了进程内核对象句柄表,我记得几年前在Softice手册中读到的是这个(人们说他们已经反向工程了未记录的内存结构)。
寻找更多信息的地方可能是文件系统过滤驱动程序。
另一种(也许更好的)方法是使用depends
或dumpbin /imports
来尝试查看相关Sysinternals程序正在使用哪些API。
Sysinternals 的进程资源管理器可以告诉你这个信息。