2012-08-14 79 views
5

如何根据名称获取正在运行的进程的路径?例如,我知道有一个名为“notepad”的进程正在运行,我想要获取它的路径。如何在没有循环所有其他进程的情况下获得路径?按名称获取正在运行的进程的路径

不是这样!

using System.Diagnostics; 

foreach (Process PPath in Process.GetProcesses()) 
{ 
    if (PPath.ProcessName.ToString() == "notepad") 
    { 
     string fullpath = PPath.MainModule.FileName; 
     Console.WriteLine(fullpath); 
    } 
} 

回答

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; 
    } 
} 

但是要记住,多个进程可以有相同的名字,所以你仍然可能需要做一些挖掘。我只是在这里回到第一个人的路上。

+0

你的意思是这样(字符串FULLPATH = System.Diagnostics.Process.GetProcessesByName (“notepad”)。ToString();)不,我没有。谢谢 – 2012-08-14 21:47:23

+0

我修改了我的答案,使其更清楚我的意思。 – FishBasketGordo 2012-08-14 21:51:52

2

有一种方法GetProcessesByName是.NET 2.0中存在:

foreach (Process PPath in Process.GetProcessesByName("notepad")) 
{ 
    string fullpath = PPath.MainModule.FileName; 
    Console.WriteLine(fullpath); 
} 
1

有真的,你可以采取两种方法。

您可以通过名字做的过程:

Process result = Process.GetProcessesByName("Notepad.exe").FirstOrDefault(); 

,或者你可以做你做什么,但使用LINQ

Process element = (from p in Process.GetProcesses() 
        where p.ProcessName == "Notepad.exe" 
        select p).FirstOrDefault(); 
+0

.NET 2.0没有LINQ。 – FishBasketGordo 2012-08-14 22:01:14

相关问题