我正在使用带有 C# 的 .NET。
我想阻止同一可执行文件的两个实例同时运行,但我不想阻止从另一个文件夹运行的同一进程。
例如,我有一个位于两个不同位置的可执行文件:
C:\MyProject\Master\Program.exe
C:\MyProject\Slave\Program.exe
这些是相同的 .exe 文件,但位于两个不同的位置。
我想允许一个从主文件夹运行的 Program.exe 实例和一个从从文件夹运行的实例,但没有两个实例。
我试图通过检查具有相同名称(Process.GetProcessesByName)的进程数来做到这一点,但是我无法区分两者。
我发现最接近的是从流程中获取模块。
列表中的第一个是 exe 的 ProcessModule。但我不确定这是否永远是列表中的第一个。对此有任何保证,还是对解释的问题有更好的解决方案?