6

一个程序在共享网络驱动器的多台机器上运行。它可以使用

... = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read);

锁定文件以防止写入。然后所有其他实例只能读取它并显示一个警告,即该文件不可写。

如何找出谁(即哪台机器)锁定了文件,并在警告中显示?

4

2 回答 2

3

我见过的唯一方法是让打开文件的程序留下标记文件(.lock)或类似文件。这个 .lock 文件显然可以包含您想要的任何内容(用户名、机器等),并且可以单独读取。

这假设您可以控制正在另一台 PC 上读取它的软件。

于 2012-08-15T14:37:01.857 回答
1

这是一个带有 C# 源代码的帖子,其中举例说明了如何查看进程列表并检查每个进程锁定的文件。

如何找出使用 C# 锁定文件的进程

下一步是在每台机器上的服务中使用此功能,以便进程可以发送对特定文件名的查询,然后接收关于该机器上的进程是否已锁定的响应。

数据可能包括进程名称、用户 ID 和进程列表中可用的其他信息。

这种方法工作量更大,但是它提供了一种访问信息的方法,而无需应用程序锁定文件来做一些特殊的事情。

另一方面,如果您感兴趣的文件在您的控制范围内并且您可以确定文件访问权限,那么这可能是矫枉过正。

于 2012-08-15T14:29:51.163 回答