程序在共享网络驱动器的多台计算机上运行。它可以使用
... = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read);
锁定文件。然后所有其他实例只能读取它并显示警告,该文件不可写。
如何找出谁(即哪台机器)锁定文件,以便在警告中显示?
答案 0 :(得分:3)
我见过的唯一方法是打开文件的程序留下标记文件(.lock)或类似文件。这个.lock文件显然可以包含你想要的任何东西(用户名,机器等),可以单独阅读。
这假设您可以控制在另一台PC上读取的软件。
答案 1 :(得分:1)
这是一篇包含C#源代码的帖子,其中包含如何查看进程列表并检查每个进程锁定的文件的示例。
How does one figure out what process locked a file using C#
下一步是在每台计算机上的服务中使用此功能,以便进程可以发送特定文件名的查询,然后接收有关该计算机上的进程是否已将其锁定的响应。
数据可能包括进程名称,用户ID以及进程列表中提供的其他信息。
这种方法工作更多,但它的作用是提供一种访问信息的方法,而不需要应用程序锁定文件来做一些特别的事情。
另一方面,如果您感兴趣的文件在您的控制范围内,并且您可以确定文件访问权限,那么这可能是过度的。