如何检查每个用户会话正在运行的进程?

2023-11-23

我有一个 .NET 应用程序,我只允许一次运行一个进程,但是该应用程序有时会在 Citrix 机器上使用,因此可以由同一台计算机上的多个用户运行。

我想检查并确保该应用程序在每个用户会话中仅运行一次,因为现在如果用户 A 正在运行该应用程序,则用户 B 会收到“应用程序已在使用中”消息,而不应该。

这就是我现在检查正在运行的进程的内容:

Process[] p = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);
            if (p.Length > 1)
            {
#if !DEBUG
                allowedToOpen &= false;
                errorMessage +=
                    string.Format("{0} is already running.{1}", Constants.AssemblyTitle, Environment.NewLine);
#endif
            }

EDIT:根据改进答案这个CW问题 ...

您可以使用互斥体来检查应用程序是否已经运行:

using( var mutex = new Mutex( false, AppGuid ) )
{
    try
    {
        try
        {
            if( !mutex.WaitOne( 0, false ) )
            {
                MessageBox.Show( "Another instance is already running." );
                return;
            }
        }
        catch( AbandonedMutexException )
        {
            // Log the fact the mutex was abandoned in another process,
            // it will still get aquired
        }

        Application.Run(new Form1());
    }
    finally
    {
        mutex.ReleaseMutex();
    }
}

重要的是AppGuid- 你可以让它取决于用户。

也许您喜欢阅读这篇文章:被误解的互斥体

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查每个用户会话正在运行的进程? 的相关文章

  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 枚举扩展方法

    在vs2008中 是否可以编写适用于任何枚举的扩展方法 我知道您可以针对特定枚举编写扩展方法 但我希望能够使用单个扩展方法对每个枚举进行处理 这可能吗 是的 只需针对基础进行编码Enum类型 例如 public static void So
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • Spring Boot + Thymeleaf 找不到消息属性

    我正在尝试使用 Spring Boot 和 Thymeleaf 创建一个 Web 应用程序 但在让模板使用属性文件中定义的消息时遇到问题 它不是显示属性文件中定义的消息 而是显示 form welcome en GB 控制台没有记录任何错误
  • 如何知道 JavaScript 中的计时器是否被清除或超时?

    好吧 非常简单的问题 我正在参加 javascript 速成课程 如果我使用timer setTimeout 500 设置计时器 然后clearTimeout timer 要清除计时器 计时器的整数值不会改变 所以我的问题是如何知道计时器是
  • 初始化/重置结构为零/空

    struct x char a 10 char b 20 int i char c char d 10 我正在填充这个结构 然后使用这些值 在下一次迭代中 我想将所有字段重置为0 or null在我开始重用它之前 我怎样才能做到这一点 我可
  • Java:如何在 Swing 中进行双缓冲?

    EDIT TWO 为了防止尖锐的评论和一行回答没有抓住要点 IFF就像打电话一样简单设置双缓冲 真 那么我如何访问当前的离线缓冲区 以便我可以开始弄乱 BufferedImage 的底层像素数据缓冲区 我花时间写了一段正在运行的代码 看起来
  • 在不同情况下使用不同的 Hibernate 用户类型

    我使用 Hibernate JPA 作为我的 ORM 解决方案 我使用 HSQL 进行单元测试 使用 PostgreSQL 作为真正的数据库 我希望能够使用 Postgres 的原生UUID使用 Hibernate 键入 并在 HSQL 的
  • 在 pycharm/pydev 中调试 pytest 事后异常

    我想将 PyCharm 的内置 Pytest 运行器与调试器一起使用 而无需预先配置断点 问题是我的测试中的异常被 Pytest 捕获 因此 PyCharm 的事后调试器无法处理该异常 我知道使用断点是有效的 但我不想运行两次测试 在 Un
  • IOS5 setBrightness 不适用于 applicationWillResignActive

    I use UIScreen mainScreen setBrightness 在 sdk 5 0 中 更改我的应用程序中的系统背景光 以下步骤适用于我的应用程序 激活应用程序 将系统亮度设置为默认值 然后另存为sysBright 使用我的
  • 混合触发器与 WPF 触发器

    在我看来 Blend 风格和 Blend 风格之间有很大的区别 Trigger可以在 Interactivity 命名空间中找到 经典的Trigger可通过样式获得 ControlTemplates 等 在 WPF 中 我想这可能也适用于
  • 刷新缓冲区是什么意思?

    我正在学习C 我发现一些我无法理解的东西 可以显式刷新输出缓冲区以强制缓冲区 书面 默认情况下 读取cin脸红cout cout也被冲得通红 当程序正常结束时 因此 刷新缓冲区 例如输出缓冲区 是通过删除缓冲区中的所有内容来清除缓冲区 还是
  • 如何查看运行状态并停止耐用功能

    我想按需处理数百万条记录 处理时间大约需要 2 3 小时 我想要无服务器 这就是为什么尝试持久功能 第一次 我想检查一下 我可以运行持久函数多长时间 所以我创建了 3 个函数 用于启动 Orchestrator 功能的 Http 函数 Or
  • 在 Spark/Jetty-server 中重新加载静态文件

    我在这里描述了一个有点类似的问题 刷新 SparkJava 提供的静态文件 在我的应用程序中 用户可以将内容上传到一个文件夹 该文件夹也提供给用户 Spark staticFileLocation public 特征 据我所知 SparkJ
  • Github webhooks - 预推送挂钩

    我的要求是 每当开发人员推送到 github 时 在推送之前应该在 Jenkins 服务器上触发 CI 构建 如果构建失败 则应拒绝推送到 github 我需要为此编写挂钩 但我不想编写客户端挂钩 因为开发人员可以禁用它们 我想要服务器端
  • PHP - error_reporting 不起作用

    我的网络托管提供商不提供启用错误报告的选项 所以尝试使用 error reporting E ALL 但这也行不通 我尝试了以下脚本 如果我正确阅读了手册 那么这应该会生成错误通知 但这也行不通 我是否做错了什么 或者这是获得新的网络托管提
  • 在 Scala 中重载通用事件处理程序

    如果我定义以下通用事件处理程序 trait Handles E lt Event def handle event E 事件类型如下 trait Event class InventoryItemDeactivated val id UUI
  • 使用自定义标头获取 GET 请求?

    我正在尝试向 API 发送 GET 请求 但是当我在代码中添加自定义标头时 会发生一些奇怪的事情 当请求方法到达 Web 服务器时 某个地方会更改为 OPTIONS 但是当我在没有标头的情况下执行相同操作时 它将是 GET 类型 当我使用应
  • 使用 Pdf.js 突出显示 pdf 中的一个部分

    我目前在我的项目中使用 pdf js 来渲染 PDF 现在有一项棘手的任务 即在给定坐标的情况下突出显示 PDF 页面的一部分 Example 给定一个边界部分 例如 31 35 40 35 40 40 31 40 我应该用任何选择的原色来
  • Rails 3 和 Devise:注册后重定向到页面(可确认)

    我有一个带有 Devise 的 Rails 3 项目 启用了可确认功能 因此用户必须在注册后通过电子邮件确认其帐户 目前该项目将用户返回到登录页面并抛出 您已成功注册 通知 我想做的是将他们重定向到 谢谢 页面 并提供进一步的说明 检查您的
  • 您将如何将站点从 Prototype 切换到 jQuery

    我已经用 Prototype 编写了一个网站 但想切换到 jQuery 关于如何最好地进行转换有什么想法吗 就我个人而言 我喜欢分步进行 所以我会从使用两者开始 如下所示 jQuery noConflict Put all your cod
  • 在 Kotlin 中,如何使属性只能由特定类型访问

    假设我有一个与此类似的 Kotlin 类 class MyKotlinExample val mMyString MutableLiveData
  • 如何检查每个用户会话正在运行的进程?

    我有一个 NET 应用程序 我只允许一次运行一个进程 但是该应用程序有时会在 Citrix 机器上使用 因此可以由同一台计算机上的多个用户运行 我想检查并确保该应用程序在每个用户会话中仅运行一次 因为现在如果用户 A 正在运行该应用程序 则