如何按名称获取正在运行的进程的路径?例如,我知道有一个名为“notepad”的进程正在运行,我希望得到它的路径。如何在不循环所有其他进程的情况下获取路径?
不是这样!
using System.Diagnostics;
foreach (Process PPath in Process.GetProcesses())
{
if (PPath.ProcessName.ToString() == "notepad")
{
string fullpath = PPath.MainModule.FileName;
Console.WriteLine(fullpath);
}
}
答案 0 :(得分:8)
尝试使用此方法,使用GetProcessesByName
method:
public string GetProcessPath(string name)
{
Process[] processes = Process.GetProcessesByName(name);
if (processes.Length > 0)
{
return processes[0].MainModule.FileName;
}
else
{
return string.Empty;
}
}
请记住,多个进程可以具有相同的名称,因此您仍可能需要进行一些挖掘。我总是在这里回到第一个路径。
答案 1 :(得分:3)
.Net 2.0中存在一种方法GetProcessesByName:
foreach (Process PPath in Process.GetProcessesByName("notepad"))
{
string fullpath = PPath.MainModule.FileName;
Console.WriteLine(fullpath);
}
答案 2 :(得分:1)
你可以采取两种方法。
您可以按名称进行处理:
Process result = Process.GetProcessesByName( "Notepad.exe" ).FirstOrDefault( );
或者你可以做你做的但是使用linq
Process element = ( from p in Process.GetProcesses()
where p.ProcessName == "Notepad.exe"
select p ).FirstOrDefault( );