使用 RDP 的 C# 远程桌面应用程序。如何生成证书?

2023-12-09

我在使用 MSTSCLib 从一台 PC 连接到另一台 PC 时遇到一些问题。

它可以与服务器一起使用,但不能与普通工作站一起使用......

    private void btn_connect_Click(object sender, EventArgs e)
    {
        try
        {
            rdp_control.Server = tbx_servername.Text;
            rdp_control.Connect();
            tabPage1.Text = "Connected";
        }
        catch (Exception exp)
        {
            MessageBox.Show(exp.ToString());
        }
    }

    private void btn_disconnect_Click(object sender, EventArgs e)
    {
        if (rdp_control.Connected.ToString() == "1")
        {
            rdp_control.Disconnect();
        }
    }

客户端和服务器应用程序都位于同一 NAT 下的同一网络中。问题是证书,...我需要找到一种方法来包含证书。使用 Windows 中的普通远程桌面,您会看到一个消息框,其中包含以下问题:“您想使用此证书吗.... blablabla”但这并不是 C# 中的 RDP 功能的结果

有任何想法吗? 谢谢 B.R.


以下代码显示了一个简单的 RDP 客户端和服务器。

RDP服务器

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using RDPCOMAPILib;
using AxMSTSCLib;
using System.Runtime.InteropServices;

namespace TCP_to_RDP_Converter
{
    public partial class Form1 : Form
    {
        public static RDPSession currentSession = null;
        public static void createSession()
        {
            currentSession = new RDPSession();
        }

        public static void Connect(RDPSession session)
        {
            session.OnAttendeeConnected += Incoming;
            session.Open();
        }

        public static void Disconnect(RDPSession session)
        {
            session.Close();
        }

        public static string getConnectionString(RDPSession session, String authString, 
            string group, string password, int clientLimit)
        {
            IRDPSRAPIInvitation invitation =
                session.Invitations.CreateInvitation
                (authString, group, password, clientLimit);
                        return invitation.ConnectionString;
        }

        private static void Incoming(object Guest)
        {
            IRDPSRAPIAttendee MyGuest = (IRDPSRAPIAttendee)Guest;
            MyGuest.ControlLevel = CTRL_LEVEL.CTRL_LEVEL_INTERACTIVE;
        }

        /// <summary>
        /// Handle the form items
        /// </summary>
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            createSession();
            Connect(currentSession);
            textConnectionString.Text = getConnectionString(currentSession,
                "Test","Group","",5);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Disconnect(currentSession);
        }


    }
}

为了使用 RDP 通信库,您需要添加 rdpcompapi 和 Microsoft Windows 终端服务,形成 COM 引用。

RDP客户端

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using RDPCOMAPILib;
using AxRDPCOMAPILib;

namespace Simple_RDP_Client
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public static void Connect(string invitation, AxRDPViewer display, string userName, string password)
        {
            display.Connect(invitation, userName, password);
        }

        public static void disconnect(AxRDPViewer display)
       {
            display.Disconnect();
        }

        private void button1_Click(object sender, EventArgs e)
        {
             try
            {
                 Connect(textConnectionString.Text, this.axRDPViewer, "", "");
            }
            catch (Exception)
            {
                MessageBox.Show("Unable to connect to the Server");
            }
        }
    }
}

您可以通过将 RDP 查看器类组件导入到主窗体来添加对 AxRDPCOMAPILib 的引用。

完整的项目可以从这里下载[下载]:http://sandaruwmp.blogspot.com/2014/05/remote-desktop-application-with-rdp.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 RDP 的 C# 远程桌面应用程序。如何生成证书? 的相关文章

随机推荐

  • CSS 选择器中的逗号是什么意思? [复制]

    这个问题在这里已经有答案了 当我拥有时这意味着什么 A B A C some styles 这是否意味着B类没有样式定义 这意味着两者 A B and A C共享相同的声明块 逗号表示将该块中的声明应用于这两个选择器 而逗号后面的换行符并不
  • 在我的应用程序中使用锁屏?

    我想让我的应用程序在多任务处理时使用锁定屏幕上的音频按钮 是的 就像潘多拉一样 我想要使 用什么 API See the 多媒体远程控制文档 基本上 你只需要调用 beginReceivingRemoteControlEvents在您的共享
  • 通过迁移向列添加默认值

    如何通过迁移向已存在的列添加默认值 我能找到的所有文档都会向您展示如何在该列尚不存在的情况下执行此操作 但在本例中它确实存在 您应该这样做 change column users admin boolean default gt false
  • 反引号作为语法运算符

    刚刚遇到了一些对我来说似乎很奇怪的事情 反引号的功能类似于语法运算符 applyOp Int gt Int gt Int gt Int gt Int gt Int applyOp x op y x op y gt applyOp 2 5 7
  • 无法对多个 GWT 应用程序使用相同的 cookie

    我正在开发一个应用程序网络 我想向我的用户提供多个应用程序 他们只需注册 登录一次 并通过同一登录名使用所有应用程序 为了实现这一点 我创建了一个 cookie 在其中存储用户的会话 ID 他在登录时收到 每次用户打开应用程序时 启动模块都
  • Microsoft Graph:将文件上传到共享库而不是用户库?

    在有关的文档中Upload 列出了这些请求选项 PUT me drive items parent id filename content PUT me drive root parent path filename content PUT
  • 高图表中的不同标记大小?

    对于高图中的散点图 我希望不同的系列具有不同的标记半径 这可能吗 plotOptions series marker enabled true symbol circle radius 15 使用以下方法不起作用 plotOptions s
  • 如何获取使用 UrlFetchApp.fetch(photoLink) 获得的 jpeg 图像的大小(以像素为单位)?

    在以 HTML 格式发送电子邮件的脚本中 我添加了存储在公共共享文件夹中的图像 我使用得到的斑点UrlFetchApp fetch photoLink 但图像不一定具有正确的尺寸 因此在 html 代码中我使用宽度和高度属性 目前使用固定值
  • 检索 WordPress 根目录路径?

    如何检索 WordPress CMS 中根目录的路径 查看 WordPress 根目录中的 wp config php 文件底部 您会发现如下内容 if defined ABSPATH define ABSPATH dirname FILE
  • 已发布的 https://docs.google.com/spreadsheets 重定向到其他网址(CSV 数据)

    我们自动发布 Google 文档电子表格 一个选项卡为 CSV Google 文档提供了引用 CSV 的固定 URL 我们将此 CSV 导入到另一个用于产品数据导入的工具中 突然 这个 URL 被 Google Spreadsheet 重定
  • REMOTE_ADDR 为空,不包含在 SERVER 数组中

    搬到新服务器后我遇到了一个奇怪的问题 用于获取邮件的 cron 会检查授权 IP 其中之一默认为 127 0 0 1 移动后它停止工作 因为 REMOTE ADDR 变量未填充 它是从浏览器调用时调用的 但不是从 cron 内部运行或使用
  • 正确关闭 WebSocket(HTML5、Javascript)

    我正在研究 HTML5 WebSockets 我想知道如何优雅地关闭连接 例如 如果用户刷新页面或只是关闭浏览器会发生什么 当用户只是刷新页面而不调用时 会出现奇怪的行为websocket close 当他们在刷新后返回时 它会击中webs
  • 如何找到图像中包含的图像?

    我目前正在构建基本上相当于搜索引擎和网络漫画画廊之间的交叉点 其重点是引用来源和给予作者信用 我正在尝试找出一种方法来搜索图像以查找其中的字符 例如 假设我将红色字符和绿色字符保存为红人和绿人 如何确定图像是否包含其中之一 这不需要 100
  • 实体框架:按属性值过滤嵌套集合

    我有如下模型 class MyClass public int Id get set public List
  • 为什么项目中心对齐不起作用?

    这是我尝试创建图像网格的 HTML 代码 来源 https www w3schools com howto howto css image grid responsive asp 我想设置屏幕的图像显示中心 但align items或ali
  • 如何更改 Lollipop 之前版本和 Lollipop 版本的工具栏菜单项文本颜色

    我在应用程序中使用工具栏来进行材料设计 一切工作正常 但除了更改菜单项文本颜色时 我完全坚持该解决方案 我还发布了应拍摄的文本的屏幕截图以及我在应用程序中使用的代码 以供您参考 我尝试了几种替代方法 例如分配如下
  • Python Pandas:在 DataFrame 中查找模式

    我有以下数据框 120 万行 df test 2 pd DataFrame A end beginn end end beginn beginn end end end beginn end B 1 10 50 60 70 80 90 10
  • HTML5 视频什么时候应该回退到 Flash 播放器?

    我正在致力于为 HTML5 视频播放器实现后备机制 我有办法用 swfobject Flash 播放器替换它 但我应该如何检测是否出现任何问题 换句话说 如果我们使用以下可以抛出的错误事件列表 哪一个应该触发 Flash 播放器替换 或者如
  • 如何获取有关错误 500 - 内部服务器错误的更多信息?

    I use ajax我的 PHP 网站的许多部分的请求一切都运行良好 直到几天前我的所有 ajax请求开始给予error 500 internal server error 我可以在控制台中看到该错误 并且我还使用错误处理程序来获取有关该错
  • 使用 RDP 的 C# 远程桌面应用程序。如何生成证书?

    我在使用 MSTSCLib 从一台 PC 连接到另一台 PC 时遇到一些问题 它可以与服务器一起使用 但不能与普通工作站一起使用 private void btn connect Click object sender EventArgs