如何找到打开特定文件的进程及其打开,访问和共享模式?此外,是否可以更改流程的这些值?或者甚至可以打开一个文件进行阅读,如果它已被打开以供另一个进程独占访问?
请注意,我不想让打开文件的进程句柄无效。我只是想能够访问该文件(如果可能的话)。
(我主要询问Windows,但欢迎其他平台的解决方案,因为它们有助于社区的知识。)
编辑2:感谢大家提供的工具,但我主要是寻找程序技术(例如使用Win32 API)。
答案 0 :(得分:5)
答案 1 :(得分:3)
对于Windows,我知道Sysinternal的一个工具(www.sysinternals.com):handle.exe。
答案 2 :(得分:2)
有一个名为Unlocker的实用程序可以告诉您哪个进程已锁定资源。
答案 3 :(得分:1)
对于unix,您可以使用fuser
:
lnx0:i386_linux26> fuser -v a.cpp
USER PID ACCESS COMMAND
a.cpp nabcdefg 3952 f.... less
答案 4 :(得分:1)
这是Linux系统下的 lsof 命令。
答案 5 :(得分:-1)
我不确定是否有办法完全按照你的意愿行事,但我知道使用System.Diagnostics.Process类(至少在.Net中)你可以打开进程并监视某些属性:
System.Diagnostics.Process[] procArray = System.Diagnostics.Process.GetProcessesByName("notepad");
foreach (System.Diagnostics.Process proc in procArray) {
//do something with the process...
}
查看Process类,可能有一个属性或集合来获取您要查找的数据。