Citrix环境中跨用户会话的相互排斥

时间:2011-03-07 09:01:41

标签: windows citrix mutual-exclusion

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

任何人都可以告诉我以下哪种方法更适合在所有用户会话中实现互斥:

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

1 个答案:

答案 0 :(得分:3)

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

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