2016-05-12 1 views
0

je almost the same problemexécutable en cours d'exécution

J'ai deux fichiers a.exe dans le dossier c: \ et un a.exe dans c: \ deux, les deux sont en cours d'exécution, mais je veux supprimer uniquement le fichier dans le premier dossier

(Si pas cette condition, je pouvais utiliser

foreach (var process in Process.GetProcessesByName("a.exe")) 
       process.Kill(); 

puis supprimez le fichier )

Pour almost the same problem a été la réponse Runo nce clé de registre, mais je m'en fous si l'utilisateur se connecte ou non, je veux juste le supprimer maintenant. Pouvez-vous m'aider?

+2

Je ne suis pas sûr que les liens sont les bons, vous ne pensez pas? –

+0

if (! Process.ProcessStartInfo.FileName.Contains ("one")) process.Kill(); Peut être? –

+1

@CallumBradbury Cela tuerait d'autres processus avec le mot '" one "' dans eux. – DGibbs

Répondre

2

Il semble que vous essayez de comprendre quel processus correspond à quelle instance d'un.exe?

On dirait que vous pouvez le faire avec la propriété Process.MainModule.FileName:

var exeToDelete = "..."; 
var exeProcess = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(exeToDelete)) 
    .SingleOrDefault(p => StringComparer.OrdinalIgnoreCase.Equals(p.MainModule.FileName, exeToDelete)); 
if (exeProcess != null) { exeProcess.Kill(); } 

File.Delete(exeToDelete); 
+0

fonctionne! merci beaucoup, mais j'ai utilisé Path.GetFileNameWithoutExtension – PolyProgrammist

+0

@PolyProgrammist merci j'ai mis à jour le poste – ChaseMedallion