1

我有一个在 Citrix 环境中运行的应用程序。该应用程序可以由不同用户会话中的多个用户同时运行。在我的应用程序中,我正在写入一个应该在所有用户会话中互斥的文件。我尝试了 Mutex 以避免从不同的用户会话写入文件,但是使用 Mutex 失败了,因为在某些情况下不同的用户会话无法检测到 Mutex 对象是否已经创建。

谁能告诉我以下哪种方法可以更好地实现所有用户会话的互斥:

  1. 使用命名管道:如果命名管道已经存在,那么应用程序将等待管道被打开它的应用程序实例关闭。否则创建命名管道以指示获取锁。
  2. 使用锁定文件:在磁盘上创建一个普通文件,用于指示获取锁定并在需要解锁时删除。
4

1 回答 1

3

您不需要使用锁定文件。您可以使用内置的文件系统共享机制。

当您通过调用打开文件时,CreateFile()您将确定后续尝试使用dwShareMode参数打开文件的共享访问权限。例如,将此设置为 0,其他进程将无法打开该文件。

于 2011-03-07T09:14:39.920 回答