Как убить фоновый процесс на C#

#c# #process #rdp

#c# #процесс #rdp

Вопрос:

Я хочу создавать свои собственные программы Rdp с помощью c #. Вот почему я создал экран страницы входа в систему и ввел данные для входа от пользователя. После этого, чтобы запустить процесс rdp, я использовал этот код.

  Process rdcProcess = new Process();
        rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%system32cmdkey.exe");
        rdcProcess.StartInfo.Arguments = $"/generic:TERMSRV/{ipaddressbox.Text} /user: {usernamebox.Text} /pass: {passwordbox.Text}";

        rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%system32mstsc.exe");
        rdcProcess.StartInfo.Arguments = $"/v {ipaddressbox.Text}"; // ip or name of computer to connect
        rdcProcess.Start();
 

Когда я вхожу в систему, используя свои пользовательские данные, открывается форма, и программа rdp работает без каких-либо проблем. Однако, когда я закрываю этот экран формы, подключение к удаленному рабочему столу не прерывается, оно продолжает работать в фоновом режиме. Моя просьба заключается в том, что когда я закрываю форму, подключение к удаленному рабочему столу отключается и завершает процесс rdp. Как я могу этого добиться?

Комментарии:

1. Чтобы убить процесс, который вы можете использовать Process.GetProcessesByName("rdp...").FirstOrDefault().Kill(); , я не уверен, можно ли корректно отключить RDP.

2. Вы правы, но я хочу сделать это программно, я имею в виду, что уничтожение процесса должно произойти, когда форма закрыта

3. tsdiscon sessionid и, LOGOFF sessionid похоже, работает. Смотрите: sourcedaddy.com/windows-7/disconnecting-sessions.html

4. я попробую, большое спасибо

Ответ №1:

Я решил проблему. Когда я закрыл экран rdp, процесс mstsc умирал. Я написал блок if, который проверяет это, и вышел из программы, если процесс mststc не был запущен.

     Process[] pname = Process.GetProcessesByName("mstsc.exe");
    if (pname.Length == 0)
    {
        Application.Exit();
    }