2015-06-19 5 views
0

Я пытаюсь получить идентификатор процесса .rdp-файла, который открывается процессом и убивает его с помощью кнопки button1_Click, но визуальная студия выдает ошибку, из-за которой идентификатор процесса не выходит. Я проверил панель задач, и файл rdp имеет другой идентификатор процесса, а не тот, который я захватил из следующего кода. Если я просто позвоню mstc.exe, он отлично работает, и я могу убить процесс без ошибок. Любой может мне помочь.Идентификатор процесса файла RDP

private void button1_Click(object sender, EventArgs e) 
{ 
    pids.Clear(); 
    Process myprocess = new Process(); 
    myprocess.StartInfo.FileName = "C:\\rdp\\RemoteIn.rdp"; 
    //notePad.StartInfo.FileName = "mstsc.exe";     
    myprocess.Start();   
    pids.Add(myprocess);   
} 

private void terminateAll() 
{   
    foreach (var i in pids) 
    { 
     // Process p = Process.GetCurrentProcess(); 
     i.Kill(); 
    } 
} 

private void button2_Click(object sender, EventArgs e) 
{ 
    terminateAll(); 
} 

ответ

0

При запуске не exe файл через Process класс будет использовать функцию ShellExecute для поиска обработчика для этого файла indireclty запустить процесс.

Fortunatly mstsc.exe будет принимать параметры командной строки, поэтому вы можете запустить mstsc.exe и напрямую.

myprocess.StartInfo.FileName = "mstsc.exe";     
myprocess.StartInfo.Arguments = "C:\\rdp\\RemoteIn.rdp"; 
myprocess.Start();