假设我有一个用 C# 编写的名为 EquipCtrl.exe 的应用程序,它作为 PC 上的本地进程运行以控制一台设备。
显然,我希望每台 PC 上只运行一个 Equipctrl 实例。如果我有两个设备可以控制每台 PC,那么我会将其限制为每台 PC 两个实例。
我所做的方式是 1. 进程名称之一。我将进程命名为 EqCtrl,在进程启动时,它会计算名称为“EqCtrl”的进程数。2. 执行名称。在启动时计算执行名称为 EquipCtrl.exe 的进程数。3. 登记记录。4. SQL Server 数据库记录。
对我来说,进程名称或执行名称检测是最简单的,也是我经常(如果不是全部)做的最多的事情。但是,它们容易受到名称冲突的影响。即使我进一步找出执行路径,也可以通过将执行文件复制到另一个文件夹来规避限制。
在 .NET 上执行执行限制的最佳方法是什么?为什么?注册表记录是最好的方法吗?