如何在窗口中查询文件中的所有锁持有者

How to query windows for all lock holders on a file

本文关键字:持有者 查询 窗口 文件      更新时间:2023-10-16

我即将为我们的软件实现一个新功能,即在用户打开文档时锁定文档(以前我们只是为了读取或写入而打开文件,但在此期间没有打开句柄)。

保留句柄并以写独占模式打开它是很琐碎的。

我的问题是,如何查询窗口以发现给定的文件是否无法通过写访问打开,哪个用户/实体已经锁定了文件以进行写访问?

例如:

_fsopen(m_ClipboardFilename, "wb", _SH_DENYWR);

CStdioFile listFile(strLabelfile, CFile::typeText | CFile::modeRead | CFile::shareDenyWrite | CFile::modeNoInherit);

这两种方法中的任何一种都会以独占写入访问权限打开给定的文件(或者失败,错误指示是否存在共享冲突或其他问题)。

但我想做的是发现"谁"锁定了文件,如果这是共享违规,这样我就可以向当前用户报告

Sam,在PC-007上,这个文件被锁定了,你只能在只读模式。你想继续吗?

我看到的一些实用程序会告诉你谁锁定了文件,还有更多的实用程序会强制解锁锁定,这样就可以操作文件(sys-admin类型的utils)。因此,似乎必须有一种方法来查询这些信息。

Raymond Chen最近解释了如何使用Restart Manager来实现这一点。

这会告诉你哪个进程打开了文件,但如果文件是不同的服务器,我不知道它是否会告诉你什么非常有用的信息。