找到流程的完整路径
本文关键字:路径 | 更新日期: 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
查找具有完整路径的确切应用程序可执行文件。