0

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

保留句柄并以独占模式打开它是微不足道的。

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

例如:

_fsopen(m_ClipboardFilename, "wb", _SH_DENYWR);

或者

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

其中任何一个都以独占写入访问权限打开给定文件(或失败并显示错误指示是否存在共享冲突或其他问题)。

但是我想要做的是发现“谁”锁定了文件,如果它是共享冲突,那么我可以向当前用户报告

Sam 在 PC-007 上已锁定此文件,您只能以只读模式打开它。你要继续吗?

我见过一些实用程序,它们会告诉你谁锁定了文件——还有更多会强制解锁锁,以便可以操作文件(sys-admin 类型的实用程序)。因此,似乎必须有一种方法可以查询此信息。

4

1 回答 1

1

Raymond Chen最近解释了如何使用Restart Manager来做到这一点

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

于 2012-03-06T17:41:55.207 回答