0

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

例如,我 rdp 到 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 与任务栏中的不同。我正在使用下面的代码打开一个 .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);

                    }
4

1 回答 1

0

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

这个 stackoverflow链接解释了如何在 C# 中使用它

于 2015-06-22T03:49:29.263 回答