如何唯一标识一个进程
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");
}
我有一个名为 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");
}