找出谁在C#中锁定网络驱动器上的文件

时间:2012-08-15 14:10:04

标签: c# windows

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

这是一篇包含C#源代码的帖子,其中包含如何查看进程列表并检查每个进程锁定的文件的示例。

How does one figure out what process locked a file using C#

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

数据可能包括进程名称,用户ID以及进程列表中提供的其他信息。

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

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