如何唯一标识一个进程

How to uniquely identify a process

我有一个名为 TestTool 的 .net wpf 应用程序。

我想从一个单独的应用程序中掌握这个过程。我曾经得到 使用进程名称的进程。下面的代码片段:

  var process = Process.GetProcessesByName("TestTool");

现在,我担心的是,如果有其他一些与我同名的 exe 运行 遇到我得到错误过程的场景。

有没有一种方法可以唯一标识我的 TestTool 进程?

感谢您的帮助

您可以检查文件名:

Process.GetProcessesByName("TestTool").MainModule.FileName;

或者你可以这样做:

  • CRC 校验
  • 检查文件的版本信息。
  • 检查同一路径中的额外文件

尝试使用 Linq 确定进程是否 运行 基于进程 exe 文件位置,如下例:

var process = Process.GetProcessesByName("Dns_management");

bool pIsRunning = Process.GetProcessesByName("Dns_Management")
                .FirstOrDefault(p => p.MainModule.FileName.StartsWith(@"F:\VS_2015_WorkSpace\Projects\DNS_Management\DNS_Management\bin\Debug")) 
                != default(Process);

            if (pIsRunning == true)
            {
                foreach (Process p in process)
                {
                    Console.WriteLine(p.ProcessName + " Is Running");
                }
                            }
            else
            {
                Console.WriteLine("The process is not available");
            }