我正在尝试弹出(虚拟)可移动驱动器,但它失败了,因为打开了一些文件句柄,可能是资源管理器窗口。获取该驱动器上文件的所有打开句柄并关闭它们的最佳方法是什么?
查找从该驱动器运行的任何进程是否也可行(在用户模式下),所以我可以用进程名称警告用户?
理想情况下,我想在用户模式应用程序中执行此操作,而不是需要管理员权限。
我在 Visual Studio 2005 中的 MFC 应用程序中使用 VC++,但欢迎使用任何语言的示例!
我正在尝试弹出(虚拟)可移动驱动器,但它失败了,因为打开了一些文件句柄,可能是资源管理器窗口。获取该驱动器上文件的所有打开句柄并关闭它们的最佳方法是什么?
查找从该驱动器运行的任何进程是否也可行(在用户模式下),所以我可以用进程名称警告用户?
理想情况下,我想在用户模式应用程序中执行此操作,而不是需要管理员权限。
我在 Visual Studio 2005 中的 MFC 应用程序中使用 VC++,但欢迎使用任何语言的示例!
Process Explorer实用程序可以搜索打开的句柄,但我不知道它是否可以在没有提升权限的情况下这样做。从我收集到的信息来看,它使用“性能计数器”API 来做到这一点。
我认为本文可以满足您的需要,枚举正在运行的进程,枚举每个进程的句柄,查找引用相关驱动器上的路径的文件句柄: