如何找到哪个进程打开了特定文件?

Hos*_*Aly 2 winapi file

如何找到打开特定文件的进程及其打开,访问和共享模式?此外,是否可以更改流程的这些值?或者甚至可以打开一个文件进行阅读,如果它已被打开以供另一个进程独占访问?

请注意,我不想使打开文件的进程的句柄无效.我只是想能够访问该文件(如果可能的话).

(我主要询问Windows,但欢迎其他平台的解决方案,因为它们有助于社区的知识.)

编辑:我在这里那里找到了第一个问题的答案.

编辑2:感谢大家提供的工具,但我主要是寻找程序技术(例如使用Win32 API).