【问题标题】:How To Kill Background Process on C#如何在 C# 上杀死后台进程
【发布时间】:2021-12-02 12:28:23
【问题描述】:

我想用 c# 构建我自己的 Rdp 程序。这就是为什么我制作了一个登录页面屏幕并从用户那里获取登录输入。之后为了启动 rdp 进程,我使用了这段代码。

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

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

当我使用我的用户信息登录时,会打开一个表单,并且 rdp 程序可以正常运行。但是,当我关闭该表单屏幕时,远程桌面连接并没有结束,它继续在后台工作。我的要求是,当我关闭表单时,远程桌面连接断开并终止 rdp 进程。我怎样才能做到这一点?

【问题讨论】:

  • 要终止进程,您可以使用Process.GetProcessesByName("rdp...").FirstOrDefault().Kill(); 我不确定是否可以正常断开 RDP。
  • 你是对的,但我想以编程方式进行,我的意思是当表单关闭时应该发生进程终止
  • tsdiscon sessionid 和 LOGOFF sessionid 似乎有效。见:sourcedaddy.com/windows-7/disconnecting-sessions.html
  • 我会试试的,非常感谢

标签: c# process rdp


【解决方案1】:

我解决了这个问题。当我关闭 rdp 屏幕时,mstsc 进程正在死去。我写了一个 if 块来检查这个并在 mststc 进程没有运行时退出程序。

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

【讨论】:

    猜你喜欢
    • 2017-06-15
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    相关资源
    最近更新 更多