windows - Citrix 环境中跨用户 session 的互斥

标签 windows citrix mutual-exclusion

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

谁能告诉我以下哪种方法更适合在所有用户 session 中实现互斥:

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

最佳答案

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

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

关于windows - Citrix 环境中跨用户 session 的互斥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5217694/

相关文章:

vsto - 将 Outlook 插件部署到 Citrix XenApp 安装

multithreading - 如果保证互斥,例如使用信号量,程序是否无死锁?

c++ - std::unique_lock<std::mutex> 还是 std::lock_guard<std::mutex>?

linux - 检查上次更改密码的时间

c++ - COM 函数产生不会消失的线程

python - 检查套接字是否在python中使用

.net - 通过 .NET 中的 Citrix session 获取本地计算机名称

c# - 如何在 C# 中获取 Citrix 客户端接收器版本号

concurrency - 二叉树中的彼得森锁

windows - 当一个类由于某种设计原因没有实现方法时返回哪个 HRESULT?