Si dovrebbe esaminare la proprietà dei moduli di ciascun processo e, a sua volta, controllare i nomi dei file sul percorso desiderato.
Ecco un esempio:
VB.NET
Dim path As String = "C:\Program Files\Ultrapico\Expresso\Expresso.exe"
Dim matchingProcesses = New List(Of Process)
For Each process As Process In process.GetProcesses()
For Each m As ProcessModule In process.Modules
If String.Compare(m.FileName, path, StringComparison.InvariantCultureIgnoreCase) = 0 Then
matchingProcesses.Add(process)
Exit For
End If
Next
Next
For Each p As Process In matchingProcesses
p.Kill()
Next
C#
string path = @"C:\Program Files\Ultrapico\Expresso\Expresso.exe";
var matchingProcesses = new List<Process>();
foreach (Process process in Process.GetProcesses())
{
foreach (ProcessModule m in process.Modules)
{
if (String.Compare(m.FileName, path, StringComparison.InvariantCultureIgnoreCase) == 0)
{
matchingProcesses.Add(process);
break;
}
}
}
matchingProcesses.ForEach(p => p.Kill());
EDIT: aggiornato il codice per prendere la sensibilità caso in considerazione per i confronti di stringhe .
fonte
2009-09-09 21:50:43
Perché dovrei prendere sul serio un ragazzo il cui profilo dice che è di Antartica e sta facendo un MMORPG che sarà disponibile per l'acquisto al più presto. A proposito, non si terminano le applicazioni attraverso i loro percorsi di file. Invece si usa il nome del processo che di solito è il nome del file eseguibile. –
La cosa antartica è uno scherzo, MMORPG non è in vendita, ma il mio ultimo lavoro (software, non correlato al mmo) sarà presto in vendita. Perché dovrei prendere sul serio un ragazzo che non può fare un piccolo scherzo? So che non si chiudono le app attraverso i loro percorsi di file, ma sto chiedendo come fare. – Cyclone