如何找到&关闭可移动驱动器上的所有打开文件句柄(弹出之前)

时间:2009-12-07 18:43:26

标签: visual-c++ vc6 filehandle openprocess

我正在尝试弹出(虚拟)可移动驱动器,但它失败了,因为有一些文件句柄打开,可能是资源管理器窗口。获取该驱动器上文件的所有打开句柄并关闭它们的最佳方法是什么?

是否可以(在用户模式下)找到运行该驱动器的任何进程,因此我可以使用进程名称警告用户?

理想情况下,我想在用户模式应用中执行此操作,而不是需要管理员权限。

我在Visual Studio 2005中使用VC ++,在MFC应用程序中,但欢迎使用任何语言的样本!

1 个答案:

答案 0 :(得分:1)

Process Explorer实用程序可以搜索打开的句柄,但我不知道它是否可以在没有提升权限的情况下执行此操作。从我能够收集的内容来看,它使用“性能计数器”API来实现这一点。

我认为这篇文章可以满足您的需求,枚举正在运行的进程,枚举每个进程的句柄,查找引用相关驱动器路径的文件句柄:

How to enumerate process' handles?