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远程桌面 的相关文章

  • 怎样使用RDP远程桌面连接到Azure ubuntu虚拟机

    最近在研究Azure部署虚拟机的问题 xff0c 我是Windows7系统 xff0c 在Azure申请创建了一个Linux虚拟机 xff0c 按照官网的教程 xff08 https portal azure com xff09 创建完毕后
  • 远程桌面RDP C#使用Microsoft RDP Client Control 演示

    系统环境 xff1a window10 visual studio 2019 net framework 4 0 Microsoft RDP Client Control redistributable version 7 步骤 xff1a
  • Windows远程连接Ubuntu (远程桌面和XDMCP)

    从 RHEL CentOS 转过来 xff0c 几乎所有的编码都在 windows 下 xff0c 不习惯原生 linux 开发 总结了远程连接的两种方式 xff0c 一种用 Windows 自带的 rdp 协议 xff0c 另外一种用 x
  • 开启rdp_远程桌面协议服务(RDP)

    远程桌面开启并使用步骤 xff1a 1 首先将配置网络 xff0c 并实现客户机与服务器可以互通 客户机与服务器可以ping通 2 服务器开启允许被远程控制 xff1a 桌面右键属性 远程设置 选择允许 确定 开启RDP 开启后 xff0c
  • 树莓派4B安装Ubuntu18.04 + vnc远程桌面

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

    Xrdp 是 Microsoft 远程桌面协议 RDP 的开源实现 允许您以图形方式控制远程系统 使用 RDP 您可以登录到远程计算机并创建真实的桌面会话 就像登录到本地计算机一样 本教程介绍如何在 Debian 10 Linux 上安装和
  • 树莓派4B Ubuntu 远程桌面 步骤

    文章目录 准备 更换国内源 更新软件列表和软件 安装SSH 安装ubuntu desktop xrdp方法 VNC方法 问题故障解决 花屏 蓝屏 黑屏 无法修正错误 因为您要求某些软件包保持现状 就是它们破坏了软件包间的依赖关系 参考 准备
  • 远程计算机已加入AAD凭据不工作

    解决方法 计算机需要加入AAD Azure Active Directory 设置 账户 其他用户 连接工作或学校用户 连接 在下方的 替代操作 中选择 将此设备加入 Azure Active Directory 输入用户名和密码 点击加入
  • Windows10访问Ubuntu子系统(WSL)的桌面环境

    Windows10访问Ubuntu子系统 WSL 的桌面环境 文章目录 Windows10访问Ubuntu子系统 WSL 的桌面环境 Why Linux Why WSL 开启WSL Ubuntu换源 更新与升级 安装桌面环境xubuntu
  • rdesktop连接windows主机提示被拒绝的解决方法

    1 在待连接的Windows主机上依次 右击 我的电脑 gt 属性 gt 高级系统设置 gt 远程设置 gt 在远程桌面选项中 选择允许运行任意版本远程桌面的连接 2 检查linux主机和待连接的Windows 主机是否可以相互ping通
  • Ubuntu-22.04通过RDP协议连接远程桌面

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 RDP是什么 二 配置 1 打开远程桌面功能 2 验证服务 3 防火墙配置 4 测试效果 总结 前言 由于一些特殊需要 我需要通过远程桌面连接到Ubunt
  • 南溪的远程桌面软件使用笔记

    1 介绍 远程桌面软件可以让我们远程操作另一个主机的用户界面 Note TeamViewer付费一次后 就会强制自动续费一年 如果取消订阅需要提前续订日期前至少28天 28天的提前期实在太长了 TeamViewer这个公司十分黑心 以后注意
  • windows10配置远程桌面多用户同时登录

    目录 一 单用户同时登录 二 多用户同时登录 一 单用户同时登录 系统属性 gt 远程 勾选以下选项 运行 gpedit msc 选择 计算机配置 gt 管理模板 gt Windows组件 gt 远程桌面服务 gt 远程桌面会话主机 gt
  • RDP远程桌面密码凭证获取

    前言 在渗透过程中获取到一台Windows服务器后 可以尝试获取当前机器保存的RDP远程桌面密码凭证 进而在内网横向渗透中进一步扩大战果 0x01 密码凭证获取 查看当前主机本地连接过的目标机器记录 reg query HKEY CURRE
  • 如何生成 RDP 文件

    在我的应用程序中 我需要能够导入 RDP 文件 将它们存储在设置中 并从应用程序内运行它们 基本上是 RDP 管理功能 但第二个要求是我不知道如何解决这个问题 基本上我想让用户创建一个新的 RDP 输入主机名 然后剩下的将通过 RDP 程序
  • 如何在Linux主机上运行Windows docker容器?

    我们可以在 Linux 主机上运行 Windows docker 容器吗 还可以从同一网络中的其他 Windows 计算机通过 RDP 访问 Linux 上托管的 Windows docker 容器吗 今天 这显然是可能的 我最近使用 QE
  • 使用 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 文件 该文件将自动连接生成时提供
  • 通过 RDP 的 Azure VM 仅显示黑屏和 cmd

    我有一个 Azure 虚拟机 当我通过 RDP 登录时 我只能看到黑屏 并且 CMD 控制台已打开 难道没有探索者吗 VM OS spec Operating system Windows Publisher MicrosoftWindow

随机推荐

  • (综合)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文件