如何唯一标识流程

本文关键字:标识 唯一 何唯一 | 更新日期: 2023-09-27 17:58:48

我有一个名为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");
            }