C#使用RDP远程桌面

2023-05-16

由于本人是做数据库维护经常使用到远程桌面,但是windows自带的远程桌面难以区分很不方便,所以我自己写了一个RDP。
RDP一共修改了两次。
第一种思路就是使用windows自带的RDP,保存成RDP文件,然后写个程序调用即可,但是这样有个弊端,在没有登录过的计算机上,需要重新输入用户名密码,十分苦恼。

try
            {
                System.Diagnostics.Process.Start("mstsc.exe", address + ".rdp");
            }
            catch (Exception)
            {
                MessageBox.Show("启动失败,可能没有远程文件");
            }

于是摒弃了第一种思路,开始写第二种方法,自己可以手动添加RDP远程信息,然后调用COM组件来远程,这就涉及到数据存储,选择XML吧
这是在百度找的XML操作文档,个人感觉相当好用

public static class XmlHelper
    {
        public static string XmlSerialize(object o, Encoding encoding)
        {
            using (MemoryStream stream = new MemoryStream())
            {
                XmlSerializeInternal(stream, o, encoding);

                stream.Position = 0;
                using (StreamReader reader = new StreamReader(stream, encoding))
                {
                    return reader.ReadToEnd();
                }
            }
        }

        ///
        /// 从XML字符串中反序列化对象
        ///
        /// 结果对象类型
        /// 包含对象的XML字符串 /// 编码方式 /// 反序列化得到的对象
        public static List<RDP> XmlDeserialize(string s, Encoding encoding)
        {
            if (string.IsNullOrEmpty(s))
                throw new ArgumentNullException("s");
            if (encoding == null)
                throw new ArgumentNullException("encoding");

            XmlSerializer mySerializer = new XmlSerializer(typeof(List<RDP>));
            using (MemoryStream ms = new MemoryStream(encoding.GetBytes(s)))
            {
                using (StreamReader sr = new StreamReader(ms, encoding))
                {
                    return (List<RDP>)mySerializer.Deserialize(sr);
                }
            }
        }

        private static void XmlSerializeInternal(Stream stream, object o, Encoding encoding)
        {
            if (o == null)
                throw new ArgumentNullException("o");
            if (encoding == null)
                throw new ArgumentNullException("encoding");

            XmlSerializer serializer = new XmlSerializer(o.GetType());

            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;
            settings.NewLineChars = "\r\n";
            settings.Encoding = encoding;
            settings.IndentChars = " ";

            using (XmlWriter writer = XmlWriter.Create(stream, settings))
            {
                serializer.Serialize(writer, o);
                writer.Close();
            }
        }

        ///
        /// 将一个对象按XML序列化的方式写入到一个文件
        ///
        /// 要序列化的对象 /// 保存文件路径 /// 编码方式 
        public static void XmlSerializeToFile(object o, string path, Encoding encoding)
        {
            if (string.IsNullOrEmpty(path))
                throw new ArgumentNullException("path");

            using (FileStream file = new FileStream(path, FileMode.Create, FileAccess.Write))
            {
                XmlSerializeInternal(file, o, encoding);
            }
        }

        ///
        /// 读入一个文件,并按XML的方式反序列化对象。
        ///
        /// 结果对象类型
        /// 文件路径 /// 编码方式 /// 反序列化得到的对象
        public static List<RDP> XmlDeserializeFromFile(string path, Encoding encoding)
        {
            if (string.IsNullOrEmpty(path))
                throw new ArgumentNullException("path");
            if (encoding == null)
                throw new ArgumentNullException("encoding");
            string xml = File.ReadAllText(path, encoding);
            return XmlDeserialize(xml, encoding);
        }

    }

这是设计的界面
我是将所有的RDP信息放在LIST里面,然后写在XML中,再读取出来。

下面就是RDP一些设置,我的思想上,用tabcontral,一个远程就动态构造一个tabpege但是没有关闭啊!于是我在百度上找了一个在tabpage上面绘画关闭按钮的代码,总之很多很多啊这是c#添加远程控件的方法
这里也很简单,就是一些设置前期怎么也找不到,后来发现并不是在构造的实例里面设置的。

IMsRdpClientAdvancedSettings7 AdvancedSettings7 = (IMsRdpClientAdvancedSettings7)RDP.AdvancedSettings;
            AdvancedSettings7.RedirectClipboard = rdp.Clipbrd;
            AdvancedSettings7.RedirectDrives = rdp.Disk;
            if (rdp.Port != null && rdp.Port != "")
                AdvancedSettings7.RDPPort = int.Parse(rdp.Port);
            AdvancedSettings7.ClearTextPassword = rdp.PassWord;
            AdvancedSettings7.ConnectToServerConsole = true;
            AdvancedSettings7.ConnectToAdministerServer = true;
            RDP.Connect();
            tab_rdp.SelectedTab = tp;

原来还有个AdvancedSettings7 里面可以设置剪切板,磁盘映射之类的。

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

C#使用RDP远程桌面 的相关文章

  • ubuntu开启rdp服务

    概要 ssh登录用于终端 xff0c 如果需要GUI的远程登陆ubuntu 我了解到大概3中方案 vncxrdp第三方软件 向日葵 TeamViewer之类的 因为vnc我一直配置不好 xff0c 所以试了一下xrdp xff0c 这样wi
  • 【vnc远程桌面】未联网状态下使用离线包配置vnc

    系统为ubuntu18 04 amd64版本 本教程使用vino配置远程服务器 首先 xff0c 离线安装vino包后远程传输给待控制服务器 xff1a sudo apt update sudo apt get download apt c
  • CentOS7配置VNC远程桌面

    桌面还是有很多方便的地方 xff0c 在用U盘给电脑安装了centos7 xff08 带gnome xff09 后 xff0c 接着就需要弄远程桌面 xff08 1 xff09 安装vncserver yum y install tiger
  • 使用Xmanager 7连接centos7远程桌面

    有时候使用命令行在服务器上进行一些操作真的很不方便 xff0c 所以我就想搞个图形界面来解决一些不好操作的事情 一 客户端下载安装Xmanager 7 https www xshellcn com 二 服务器端进行如下操作 1 安装epel
  • windows server2019数据中心桌面版多远程桌面RDP方案

    Windows Server 默认远程桌面连接数是2个用户 xff0c 如果多于两个用户进行远程桌面连接时 xff0c 系统会提示需要挤掉一个用户的连接 如果需要实现多用户远程登录则需要通过添加远程桌面授权或者修改底层代码 安装以下服务 打
  • 【服务器】远程连接选SSH(PUTTY、Finalshell、WinSCP) 还是 远程桌面(RDP、VNC、Xmanager)

    如果你手上没有实体服务器 xff0c 那就可能需要租用服务器提供商的各种类型的服务器 当租用服务器时 xff0c 不可避免的一个问题就是服务器的远程连接 通常 我们会使用SSH协议进行连接 xff0c 对应的软件有Finalshell PU
  • Ubuntu18 远程桌面 VNC-Server 配置[亲测]

    安装vino sudo apt update sudo apt install vino 设Enable VNC 服务 sudo ln span class token operator span s span class token pu
  • 树莓派4B安装Ubuntu18.04 + vnc远程桌面

    在实验室对写程序的欲望越来越低下的时候 xff0c 学长给了一个树莓派4B xff0c 让我研究一下 xff0c 因为机器人的上位机就靠它运行 一说新东西我就来劲了 xff0c 可惜实验室里没有SD卡 xff08 旧的断掉了 xff09 x
  • Ubuntu 11.10 远程桌面Windows设置

    升级到Ubuntu 11 10时原来远程客户端tsclient不能用了 xff0c 那么怎么办 xff1f 两个途径可以 xff1a 1 Remmina远程桌面客户端 xff0c 如果在互联网下没有 xff0c 在新立得下安装即可 设定几乎
  • 远程桌面很卡

    很多人使用windows自带的远程桌面连接的时候 会觉得很卡 这很可能是你网速慢的原因 你可以试试用提高网速的方法来解决这个问题 下面我教大家调整一下远程桌面连接的显示 可能是你把远程的画质设置得过高 占用了宽带 所以导致了在远程的时候变得
  • 树莓派4B Ubuntu 远程桌面 步骤

    文章目录 准备 更换国内源 更新软件列表和软件 安装SSH 安装ubuntu desktop xrdp方法 VNC方法 问题故障解决 花屏 蓝屏 黑屏 无法修正错误 因为您要求某些软件包保持现状 就是它们破坏了软件包间的依赖关系 参考 准备
  • rdesktop连接windows主机提示被拒绝的解决方法

    1 在待连接的Windows主机上依次 右击 我的电脑 gt 属性 gt 高级系统设置 gt 远程设置 gt 在远程桌面选项中 选择允许运行任意版本远程桌面的连接 2 检查linux主机和待连接的Windows 主机是否可以相互ping通
  • 如何在 Ubuntu 18.04 上安装 Xrdp 服务器(远程桌面)

    Xrdp 是 Microsoft 远程桌面协议 RDP 的开源实现 允许您以图形方式控制远程系统 使用 RDP 您可以登录到远程计算机并创建真实的桌面会话 就像登录到本地计算机一样 本教程介绍如何在 Ubuntu 18 04 上安装和配置
  • 如何查看和修改Windows远程桌面端口

    Windows远程桌面的默认端口为3389 基于安全性考虑 部分用户有修改默认端口的需要 以减少通过远程桌面恶意攻击和扫描主机的次数 因此今天带大家一起学习下 如何查看和修改Windows远程桌面的默认端口 一 查看Windows远程桌面端
  • 使用 Python 的 P2P RDP

    我想用 Python 编写一个简单的 P2P RDP 客户端和服务器 这就是我绘制草图的方式 短时间截屏 压缩它们并发送到服务器应用程序 从服务器应用程序获取键盘 鼠标事件 将它们序列化并发送给客户端 客户端将反序列化它们并使用 SendI
  • AltGr 键不起作用,我必须使用 Ctrl+AltGr [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 I encountered this problem several times I want to use a character ac
  • 生成 RDP 配置文件问题

    edit弄清楚了 我没有尝试通过 mstsc exe file rdp 启动它 而是启动 file rdp 并且它工作得很好 end edit 好的 我正在开发一个 C 程序 其中一部分是生成自己的 rdp 文件 该文件将自动连接生成时提供
  • 通过远程桌面开发[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有人对通过远程桌面进行团队工作有任何成功的评论吗 在许多工作场所 我们通过 Citrix 将最终用户和应用程序放置在功能强大的中央服务器上 有时
  • 使用指定的用户名和密码运行 mstsc.exe

    我意识到在 Windows 7 中 不可能为同一主机保存不同的凭据 但我需要一些解决方法 我可以在代码中手动提供用户名和密码吗 将它们存储在临时 rdp 文件中 Process rdcProcess new Process rdcProce
  • 无法在 Mac OS X 上 rdp 到 Azure

    我正在尝试从 Mac OS X 远程桌面到 Azure 实例 但找不到允许我执行此操作的工具 地址和用户名很好 但客户端似乎都没有能力包含实例信息 到目前为止 我已经尝试过 Microsoft RDC 和 CoRD 但没有成功 有人在 Ma

随机推荐

  • (综合)xorg-xserver相关完全解析

    本文主要是从以下几个方面介绍xorg xserver 相关的知识 1 linux系统图形界面框架 2 xserver 和x client启动过程 3 图形2d xff0c 3d加速原理简介 4 xserver主分支代码解析 5 xserve
  • 小新 Pro 13‘ 2020 macOS 安装教程

    小新 Pro 13 2020 macOS 安装教程 电脑配置 CPU xff1a Intel Core i5 10210U CPU 64 1 60GHz 4C8T RAM xff1a 板载 16 GB 2666 MHz DDR4 硬盘 xf
  • IDEA社区版创建spring boot项目的安装插件

    由于最近idea的官方查的有点严 xff0c pojie的企业版idea总失效 xff0c 现在给大家说一下社区版idea创建spring项目的一个方法 xff01 xff01 xff01 在项目实战中了解到的IDEA创建springboo
  • 软件工程论述题:衡量模块独立性的两个标准是什么?各表示什么含义?

    8 衡量模块独立性的两个标准是什么 各表示什么含义 内聚和耦合 内聚 又称为块内联系 指模块内部各成分之间相互关联的程度 以高内聚为设计目标 耦合 也称块间联系 模块之间相互联系程度的度量 联系越紧密 耦合性越强 独立性越差 以低耦合为设计
  • linux如何查看wifi信号强弱

    在linux中观察wifi信号强弱 xff0c 可以通过dBm数值来判断 现在来看这个所谓的dBm xff0c 数值范围在 XX 0之间 这个数越大 xff0c 信号强度越高 50dBm 0dBm范围内 xff0c 恭喜你 xff0c 你的
  • Edge浏览器的书签(收藏夹)文件夹地址在哪?

    最近因为工作电脑经常重装系统 xff0c 所以每次重装系统之前都要备份一些数据 xff0c Edge浏览器这两年突然香了起来 xff0c 插件yyds xff01 所以平时生活还是使用Edge会多一点 xff0c 但是收藏夹备份却吃了大亏
  • CCS5.4+Proteus8的F28027实践课二、定时器0控制LED流水灯

    刚游泳回来 xff0c 看到昨晚那篇博客访问量比较高 xff0c 对我是莫大的鼓励 xff0c 所以马不停蹄的去找了相关的手册准备我们今天的课程 今天我们要说的是用定时器0产生的定时中断让LED闪烁 大家都是大部分都是工科出身 xff0c
  • dns2tcp搭建DNS隧道绕过校园网

    1 问题场景 在学校是如果校园网没钱了 xff0c 难道就不能上网了 xff1f xff1f xff1f xff1f 对于从事技术的人来说尤其是学计算机出身的人来说这是不能容忍的 我们看下面场景 xff1a 当我们校园网没有认证时 xff0
  • 关闭浏览器的跨域

    无损关闭浏览器的跨域 关闭浏览器的安全模式 注意 xff01 这样会导致一些网站无法访问 xff0c 比如谷歌无法登录等 所以建议使用一个非主要的浏览器开启 编辑桌面的chrome 或者 edge 浏览器快捷方式 右键快捷方式 xff0c
  • CentOS安装MySQL(YUM源安装)

    安装mysql主要分为两种方式 xff0c 本次简单介绍使用YUM源进行安装mysql xff0c 如果不是使用docker xff0c 可以跳过步骤1 2 1 docker环境准备 在安装mysql之前 xff0c 请先确认使用的cent
  • 将门禁卡写入到手机、手环,加密卡也能写

    前言 准备材料 IC卡操作 读取IC卡数据 xff08 必看 xff09 写入到小米手环 写入到带有NFC的手机 复制IC卡 ID卡操作 读取ID卡数据 复制ID卡 前言 门禁卡大多以IC卡 ID卡为主IC卡又分为UID CUID等等只有I
  • Ubuntu中开启ssh服务的方法

    我们可以在网上看到很多关于Ubuntu开启SSH服务的文章 xff0c 但是介绍的有很多方法都是不够理想的 xff0c 这些方法都无法实现远程登录到Ubuntu上 xff0c 那么下面就让小编为大家分享Ubuntu中开启ssh服务的方法 s
  • fedora 的kde桌面无法输入中文问题

    简单三步 xff1a xff08 1 xff09 xff1a sudo yum y install ibus 安装ibus拼音库 xff08 2 xff09 xff1a sudo yum y install im chooser 安装拼音切
  • go切片常见错误

    x1f447 下面代码会输出什么 xff1f slices span class token operator 61 span span class token function make span span class token pun
  • OpenVINO的部署和使用

    现在几乎每家硬件或互联网公司都推出了自家的机器学习框架 xff0c 小米的mace 谷歌的TensorFlow Facebook的Torch等等 今天要介绍的是Inter公司出品的OpenVINO OpenVINO主要分为Model Opt
  • Mybatis-Plus分页插件

    引言 xff1a MyBatis Plus自带分页插件 xff0c 只要简单的配置即可实现分页功能 1 添加Configuration配置类 64 Configuration 64 MapperScan 34 com atguigu myb
  • 关于manjaro命令行界面方块乱码

    通常情况下这些方块乱码是中文 xff0c 其实这篇文档讲的很清楚 xff0c 如果 etc locale conf中有设置LANG 61 zh CN UTF 8就会导致tty乱码 解决办法也如文档所说有两个 xff1a 首先是修改 etc
  • 如何安装arm交叉工具链及问题解决

    在进行基于arm的嵌入式linux开发时 xff0c 首先要安装交叉工具链 要按照交叉工具链首先要获得交叉工具链的压缩包 xff0c 我这里用的是开发板上自带的压缩包 xff1a arm linux gcc 4 5 1 v6 vfp tgz
  • 04)go语言使用优化 启动时不打开CMD控制台,后台运行

    一 生成没有cmd窗口的exe程序 1 目前go语言生成exe我是在goland运行时设置了输出路径 xff0c 运行时就会产生exe可执行文件 2 默认是执行的go bulid指令 xff0c 生成的ext双击打开是有CMD窗口的 xff
  • C#使用RDP远程桌面

    由于本人是做数据库维护经常使用到远程桌面 xff0c 但是windows自带的远程桌面难以区分很不方便 xff0c 所以我自己写了一个RDP RDP一共修改了两次 第一种思路就是使用windows自带的RDP xff0c 保存成RDP文件