如何唯一地标识进程

时间:2016-07-26 07:28:00

标签: c# process

我有一个带有exe名称TestTool的.net wpf应用程序。

我想从一个单独的应用程序中获取此过程。我曾经得到过 使用进程名称的进程。代码snipet如下:

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

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

有没有办法让我唯一地识别我的TestTool流程?

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

您可以检查文件名:

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

或者你可以这样做:

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

答案 1 :(得分:0)

尝试使用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");
            }