0

mstsc プロセスの特定のインスタンスを強制終了する方法はありますか。

たとえば、pc1.xyz.com.au と pc2.xyz.com.au に rdp します。

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 に答える