2014-12-22 4 views
1

У меня есть программа simpel, которая запускает проверку уязвимости для данного порта и хоста. Теперь я должен найти способ закрыть пакетный файл, который запускается из моей формы C#. Я должен быть в состоянии закрыть пакетный файл с кнопки, даже когда он еще не закончен. И я понятия не имею, и не нашел пути где-то.Закройте командный файл, запущенный C#

EDIT: Добавлено больше кода, но все-таки дал ошибку «процесс не существует в текущем контексте»

private void button10_Click(object sender, EventArgs e) 
    { 

     if (button10.Text == "Scan") 
     { 
      int port = (int)numericUpDown2.Value; 
      string path = Directory.GetCurrentDirectory(); 
      string strCommand = path + "/SystemFiles/nikto/nikto.bat"; 
      string host = textBox5.Text; 
      Console.WriteLine(strCommand); 
      richTextBox5.Text += "Starting Nikto Vulnerability Scan On " + host + " On Port " + port + System.Environment.NewLine; 

      System.Diagnostics.Process process = new System.Diagnostics.Process(); 
      System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 

      startInfo.FileName = strCommand; 

      startInfo.Arguments = "-h " + host + " -port " + port + textBox6.Text; 
      process.StartInfo = startInfo; 
      process.Start(); 
      richTextBox5.Text += "Vulnerability Scan Started On " + host + " On Port " + port + System.Environment.NewLine; 
      button10.Text = "Cancel"; 
     } 
     else 
     { 
      process.Kill(); 
      button10.Text = "Scan"; 
     } 



    } 
+0

вы знакомы с 'методом waitforexit' .. – MethodMan

+1

Я считаю, что ОП хочет, чтобы убить процесс, пока он все еще работает, так что' waitforexit' бы неуместно. – Michael

+0

#Michael, точно;) – user2340383

ответ

1

Вы можете использовать метод убить в объекте процесса

process.Kill() 
+0

Привет, спасибо за быстрый ответ, но я не могу заставить его работать, он продолжает говорить, что процесс не существует в текущем контексте ... – user2340383

+1

Измените область действия переменной процесса put это вне выражения «if». – Oakcool

+0

@Oakcool хорошо поймать, как его код даже скомпилировать? – mxmissile

0

Здесь это полный ответ.

public partial class Form1 : Form 
{ 
    private System.Diagnostics.Process _process; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     if (_process == null || _process.HasExited) 
     { 
      _process = new Process(); 
     } 
     else 
     { 
      _process.Kill(); 
      _process = null;     
      button10.Text = "Scan"; 

      return; 
     } 

     int port = (int)numericUpDown2.Value; 
     string path = Directory.GetCurrentDirectory(); 
     string strCommand = path + "/SystemFiles/nikto/nikto.bat"; 
     string host = textBox5.Text; 
     Console.WriteLine(strCommand); 
     richTextBox5.Text += "Starting Nikto Vulnerability Scan On " + host + " On Port " + port + System.Environment.NewLine; 

     ProcessStartInfo startInfo = new ProcessStartInfo 
     { 
      FileName = strCommand, 
      Arguments = "-h " + host + " -port " + port + textBox6.Text 
     }; 

     _process.StartInfo = startInfo; 
     _process.Start(); 
     richTextBox5.Text += "Vulnerability Scan Started On " + host + " On Port " + port + System.Environment.NewLine; 
     button10.Text = "Cancel"; 
    } 
} 
+0

Спасибо за ответ, но когда я пытаюсь добавить его в свой код, это, к сожалению, полно ошибок .. – user2340383

+0

Упоминать? – Oakcool

+0

np, я исправил ошибки, мне просто пришлось добавить System.Diagnostics перед Process() и ProcessStartInfo, но когда я нажимаю, он выполняет функцию kill, но не убивает сама программа – user2340383