我有一个在 Citrix 环境中运行的应用程序。该应用程序可以由多个用户在不同的用户 session 中同时运行。在我的应用程序中,我正在写入一个文件,该文件应该在所有用户 session 中互斥。我尝试使用 Mutex 来避免从不同的用户 session 写入文件,但使用 Mutex 失败,因为在某些情况下,不同的用户 session 无法检测到是否已创建 Mutex 对象。
谁能告诉我以下哪种方法更适合在所有用户 session 中实现互斥:
- 使用命名管道: 如果命名管道已经存在,那么应用程序将等待管道被打开它的应用程序实例关闭。否则创建命名管道以指示获取锁。
- 使用锁定文件: 在磁盘上创建一个普通文件来表示获取锁,需要解锁时删除。
最佳答案
您不需要使用锁定文件。您可以使用内置的文件系统共享机制。
当您通过调用 CreateFile()
打开文件时您确定后续尝试使用 dwShareMode
参数打开文件的共享访问权限。例如,将其设置为 0,其他进程将无法打开该文件。
关于windows - Citrix 环境中跨用户 session 的互斥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5217694/