杀死某些MSTSC流程

时间:2015-06-22 03:22:25

标签: c# winforms process mstsc

有没有办法杀死mstsc进程的某些实例。

例如,我转到pc1.xyz.com.au和pc2.xyz.com.au。

现在来自c#,我想杀死或断开pc1.xyz.com.au。

目前,以下代码会杀死mstsc进程的所有实例。 有什么办法我只能断开某些mstsc实例。

 private void terminateRDP()
        {
            foreach (var process in Process.GetProcessesByName("mstsc"))
            {
                process.Kill();
            }
        }

我尝试保存已打开的进程的pid,但我捕获的捕获pid与任务栏中的pid不同。我正在使用下面的代码打开.rdp文件。

Process rdcProcess = new Process();
                    rdcProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                    rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\cmdkey.exe");
                    rdcProcess.StartInfo.Arguments = "/generic:TERMSRV/" + server + " /user:" + username + " /pass:" + password;
                    rdcProcess.Start();
                    rdcProcess.WaitForExit();

                    changeServerRDP(serverAddress);
                    if (getApplicationPath(serverList.SelectedItem.ToString()) != String.Empty)
                    {
                        changeServerRDPPath(getApplicationPath(serverList.SelectedItem.ToString()));
                        rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\mstsc.exe");                      
                        rdcProcess.StartInfo.Arguments = "C:\\rdp\\my.rdp";
                        rdcProcess.Start();
                        rdcProcess.WaitForExit();

                        //pids.Add(rdcProcess.Id);
                        //int procID = rdcProcess.Id;
                        //MessageBox.Show(procID.ToString());
                        //opened.Add(rdcProcess);

                    }

1 个答案:

答案 0 :(得分:0)

如果您需要终止RDP会话,可以尝试:WTSDisconnectSession API

This stackoverflow 链接说明了如何在C#

中使用它