我已經編寫了C#控制檯應用程序。當我lauch應用程序(不使用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這樣的常用名稱。所以我需要確保它的可執行路徑。
相反,你應該使用進程間通信,以棘手的過程枚舉。例如。使用全局互斥鎖(請參閱[this](http://stackoverflow.com/q/93989/1997232))。 – Sinatr