2015-08-13 2 views
0

я получил это в моем главном классе (программа является патчер ехе ..):не могу убить процесс с именем с пробелами

private void Form1_Load(object sender, EventArgs e) 
{ 

    // in the exe.dat is written this(the name of the running exe file): KF2 DSM.exe 
    string FileName = File.ReadAllText("exe.dat"); 

    // this SHOULD kill the process BUT it doesn't! btw i also treid this: Process.Start("taskkill", "/F /IM " + '"' + FileName + '"');, and still nothing 
    Process.Start("taskkill", "/F /IM " + FileName); 

    File.Delete(FileName); 

    using (var client = new WebClient()) 
    { 
     client.DownloadFile("https://onedrive.live.com/download?resid=763D7D60E7D1759D!328&authkey=!AArR3IwAehnZ3gc&ithint=file%2cexe", FileName); 

     while(client.IsBusy) 
     { 
      Thread.Sleep(500); 
     } 
    } 

    File.Delete("exe.dat"); 

    Process.Start(FileName); 
} 

Я добавил некоторые примечания в коде для вас.

Я пробовал почти все синтаксисы/коды для убийства процесса, но никто из них не работал!

Есть ли другой способ убить процесс, который будет работать для меня?

+2

Вам нужно бежать пространства. В противном случае это выглядит как два аргумента для taskkill. Кроме того, не выкладывайте команду taskkill. Посмотрите на другие методы класса Process. –

+0

Я пробовал все это до –

+0

Возможный дубликат [Убить некоторые процессы с помощью .exe-файла] (http://stackoverflow.com/questions/3345363/kill-some-processes-by-exe-file-name) –

ответ

1

Использование Process.GetProcessesByName и Process.Kill:

foreach (var process in Process.GetProcessesByName(FileName)) { 
    process.Kill(); 
} 
+1

Uh-huh. Каким образом это не работает? Ошибка? Не находит процесс? Не убивает процесс? – Blorgbeard

Смежные вопросы