远程桌面rdp工具

本文介绍了一个用于多远程桌面连接的工具,采用C#开发,能合并远程桌面并在选项卡间切换,适应不同屏幕大小,避免频繁滚动。代码包含后端和前端部分,读取ini配置文件保存远程连接数据,欢迎交流指导。

2022.3.3 更新:附上前端代码

BTW:由于这些代码是刚出来工作时写的代码,所以代码质量可能比较差。也懒得去改了。现在主要用.net 6了。

-------------------------------分割线---------------------------------------

因公司业务需求需要,需要多次远程连接到各个服务器中进行操作,所以该软件主要实现多远程桌面的合并,可用选项卡切换。并可调整远程桌面大小,解决小屏远程之后需要频繁拖动滚动条的不便之处。同时会通过读取ini配置文件对远程桌面连接的相关数据进行保存。

详情请看代码,欢迎指导与交流。

后端代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.NetworkInformation;
using System.Management;
using System.Threading;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Security;

namespace maintainance
{
    public partial class windows_terminal : Form
    {
        public windows_terminal()
        {
            InitializeComponent();
        }

        [System.Runtime.InteropServices.DllImport("kernel32")]
        public static extern long WritePrivateProfileString(string section,
                                                             string key,
                                                             string val,
                                                             string filePath);
        [DllImport("kernel32")]
        public static extern int GetPrivateProfileString(string lpAppName,//section名
                                                          string lpKeyName,//key名
                                                          string lpDefault,//当查找不到相应值时返回的值
                                                          StringBuilder lpReturnedString,//将查找到的值返回到指定缓冲区
                                                          int nSize,//返回的最大字符串长度
                                                          string lpFileName);//文件名
        [DllImport("kernel32")]
        public static extern int GetPrivateProfileString(string lpAppName,
                                                          string lpKeyName,
                                                          string lpDefault,
                                                          byte[] lpReturnedString,
                                                          int nSize,
                                                          string lpFileName);
        private string path = "c:/config.ini";//登录信息保存文件
        public string Path
        {
            get { return path; }
        }

        private void button1_Click(object sender, EventArgs e)//连接按钮
        {
            TabPage SelectPage = tabControl1.TabPages[tabControl1.SelectedIndex];
            AxMSTSCLib.AxMsRdpClient7 rdp = (AxMSTSCLib.AxMsRdpClient7)(tabControl1.TabPages[tabControl1.SelectedIndex].Controls["rdp"]);
            if (rdp.Connected != 0)//若该窗体已连接,则断开连接
            {
                DisconnectDelegate dd = new DisconnectDelegate(disconnect);
                dd.Invoke(ref rdp);
            }
            try
            {
                if (SelectPage.Controls["panel"].Controls["ip"].Text == "")
                {
                    MessageBox.Show("请输入IP地址");
                    return;
                }
                rdp.Server = SelectPage.Controls["panel"].Controls["ip"].Text;
                rdp.UserName = SelectPage.Controls["panel"].Controls["username"].Text;
                rdp.AdvancedSettings2.ClearTextPassword = SelectPage.Controls["panel"].Controls["password"].Text;
                rdp.Connect();
                SelectPage.Text = SelectPage.Controls["panel"].Controls["ip"].Text + "("+SelectPage.Controls["panel"].Controls["nickname"].Text+")";
                CheckBox c = (CheckBox)SelectPage.Controls["panel"].Controls["isRemember"];
                if(c.Checked)//如果记住密码选项已勾选,则将相关信息加密后写入相应目录
                {
                    WritePrivateProfileString(rdp.Server, "username",encrypt(rdp.UserName), Path);
                    WritePrivateProfileString(rdp.Server, "password", encrypt(SelectPage.Controls["panel"].Controls["password"].Text), Path);
                    WritePrivateProfileString(rdp.Server,"nickname",encrypt(SelectPage.Controls["panel"].Controls["nickname"].Text),Path);
                }
            }
            catch
            {
                MessageBox.Show("连接失败");
            }
        }

        private void windows_terminal_FormClosing(object sender, FormClosingEventArgs e)//当窗体关闭
RDP(Remote Desktop Protocol)终端用户权限的管理和设置工具,用于管理和设置Windows远程桌面连接中的用户权限,有效防止RDP远程连接过程中的用户权限漏洞。 具体功能如下: 1、禁止关机、注销、禁用命令行、任务管理器、控制面板等。 2、设置用户帐号的登录时间限制,过期时间限制。例如只允许周一至周五的9:00~18:00登录。 3、隐藏或禁用磁盘内容,只允许运行特定的应用程序或禁止运行指定的应用程序。 该软件需要 Microsoft .NET Framework 2.0 运行环境。 Windows再爆超高危漏洞 黑客一个指令看光用户隐私 3月13日晚间,微软发布了今年3月份的安全公告,共更新了6个漏洞。其中一个名为MS12-020的漏洞为超高危漏洞,黑客可利用该漏洞特别构造RDP协议包来远程控制用户电脑或服务器,该漏洞影响Windows XP、Vista、2003、win7和2008等主流操作系统。考虑到远程桌面服务在系统中默认打开,大量用户正在使用此服务,瑞星特此发布紧急提示,告知用户尽快安装此漏洞补丁。目前,瑞星安全助手(http://tool.ikaka.com/)已经对此次微软更新的漏洞列表提供了自动安装修复功能据介绍,MS12-020漏洞存在于Windows的远程桌面协议中,如果攻击者向开启远程桌面的计算机发送一个特别构造的RDP协议包请求,那么就能对其进行远程代码执行,也就是通常上说的可对电脑进行远程控制。 瑞星安全专家表示,与以往黑客通过病毒来实现对用户电脑控制的方式不同,此次漏洞导致黑客只需要发送一个协议数据包,便可以获得未安装此漏洞补丁电脑的本地最高权限,进而获取用户电脑上存储的所有资料。用户虽然可以通过关闭远程桌面服务来暂时避免受攻击,但最彻底的解决办法仍是第一时间安装微软的相关漏洞补丁。 附: 微软2012年3月份安全公告地址:http://technet.microsoft.com/en-us/security/bulletin/ms12-mar MS12-020漏洞说明:http://technet.microsoft.com/en-us/security/bulletin/ms12-020 解决方案,可以通过RDP终端安全设置工具 搞定安全问题!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值