我已经编写了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之类的通用名称。所以我需要确保它的可执行路径。
答案 0 :(得分:0)
有一种更简单的方法,导入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" );
}
答案 1 :(得分:-1)
这是解决您问题的方法:
System.Reflection.Assembly.GetEntryAssembly()
这将返回可执行当前应用程序的完整文件夹路径。
您可以使用System.Reflection.Assembly.GetEntryAssembly().Location
查找具有完整路径的确切应用程序可执行文件。