找到流程的完整路径

本文关键字:路径 | 更新日期: 2023-09-27 18:00:29

我已经编写了c#控制台应用程序。当我启动应用程序时(不使用cmd)。我可以看到它列在任务管理器的进程列表中,现在我需要编写另一个应用程序,我需要在其中查找以前的应用程序是否正在运行,我知道应用程序的名称和路径,所以我编写了管理对象搜索器查询以获取进程列表,并且我正在使用该路径将其与其可执行路径进行比较,代码在下面给出

            var  name="test.exe"
            var path="D:'test"
            var processCollection = new ManagementObjectSearcher("SELECT * " + "FROM Win32_Process " + "WHERE Name='" + name + "'").Get();
            if (processCollection.Count > 0)
            {
                foreach(var process in processCollection)
                {
                    var executablePath=process["ExecutablePath"];
                    if(executablePath.equals(path))
                    {
                        return true;
                    }
                }
            }

但可执行路径始终为空。

如何获取其可执行路径?。

我不能只使用进程名称,因为我在应用程序中使用了诸如startserver和stopserver之类的通用名称。所以我需要确保它的可执行路径。

找到流程的完整路径

有一种更简单的方法,导入System.Diagnostics,然后编写以下代码,

public bool ProcessIsRun()
{
    Process[] proc = Process.GetProcesses();
    Return proc.Any(m => m.ProcessName.Contains("Your process name") && m.Modules[0].FileName == "Your File Path" );
}

这是您的问题的解决方案:

System.Reflection.Assembly.GetEntryAssembly()

这将返回可执行的当前应用程序的完整文件夹路径。

您可以使用System.Reflection.Assembly.GetEntryAssembly().Location查找具有完整路径的确切应用程序可执行文件。