8

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

不是这样!

using System.Diagnostics;

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

3 回答 3

10

尝试类似这种方法,它使用以下GetProcessesByName方法

public string GetProcessPath(string name)
{
    Process[] processes = Process.GetProcessesByName(name);

    if (processes.Length > 0)
    {
        return processes[0].MainModule.FileName;
    }
    else
    {
        return string.Empty;
    }
}

但请记住,多个进程可以具有相同的名称,因此您仍然可能需要进行一些挖掘。我总是在这里返回第一个路径。

于 2012-08-14T21:43:53.163 回答
4

.Net 2.0 中有一个GetProcessesByName方法:

foreach (Process PPath in Process.GetProcessesByName("notepad"))
{
    string fullpath = PPath.MainModule.FileName;
    Console.WriteLine(fullpath);
}
于 2012-08-14T21:44:42.903 回答
2

您可以采取两种方法。

您可以按名称进行处理:

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

或者你可以做你所做的,但使用 linq

Process element = ( from p in Process.GetProcesses()
                    where p.ProcessName == "Notepad.exe"
                    select p ).FirstOrDefault( );
于 2012-08-14T21:54:11.610 回答