【发布时间】:2023-03-26 21:37:02
【问题描述】:
如何找到打开了特定文件的进程,以及它们的打开、访问和共享模式?此外,是否可以更改流程的这些值?或者如果文件已经被另一个进程以独占方式打开,是否可以打开文件进行读取?
请注意,我不想使打开文件的进程句柄无效。我只是希望能够访问该文件(如果可能的话)。
(我主要询问的是 Windows,但欢迎其他平台的解决方案,因为它们有助于社区的知识。)
编辑:我为我的第一个问题 here 和 there 找到了一些答案。
编辑 2:感谢大家提供您提到的工具,但我主要是在寻找编程技术(例如使用 Win32 API)。
【问题讨论】:
-
@Hosam Aly:“但我主要是在寻找编程技术”:也许你下次应该把它放在前面的问题中?
-
@Mitch,谢谢。对此我很抱歉。下次我会更小心的。
-
显然restart manager 可以在 Windows Vista 及更高版本中做到这一点
-
您可以使用 ntdll.dll 来获取所有打开的句柄和 NTQueryFileInformation 来获取路径,而不是 starat 管理器:stackoverflow.com/questions/26082122/… 查看链接代码的 cmets。