遠端桌面rdp工具

2021-07-25 16:50:15 字數 4723 閱讀 8216

因公司業務需求需要,需要多次遠端連線到各個伺服器中進行操作,所以該軟體主要實現多遠端桌面的合併,可用選項卡切換。並可調整遠端桌面大小,解決小屏遠端之後需要頻繁拖動滾動條的不便之處。同時會通過讀取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

[system.runtime.interopservices.dllimport("kernel32")]

public static extern long writeprivateprofilestring(string section,

string key,

string val,

string filepath);

[dllimport("kernel32")]

string lpkeyname,//key名

string lpdefault,//當查詢不到相應值時返回的值

stringbuilder lpreturnedstring,//將查詢到的值返回到指定緩衝區

int nsize,//返回的最大字串長度

string lpfilename);//檔名

[dllimport("kernel32")]

string lpkeyname,

string lpdefault,

byte lpreturnedstring,

int nsize,

string lpfilename);

private string path = "c:/config.ini";//登入資訊儲存檔案

public string path

}private void button1_click(object sender, eventargs e)//連線按鈕

tryrdp.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)//如果記住密碼選項已勾選,則將相關資訊加密後寫入相應目錄

}catch

}private void windows_terminal_formclosing(object sender, formclosingeventargs e)//當窗體關閉時所有視窗斷開連線}}

catch

}private void doubleclickpage(object sender, eventargs e)//雙擊選項卡時關閉相應選項卡

}private void createpage(ref tabcontrol tc)//新建選項卡

private void tabcontrol1_click(object sender, eventargs e)//單擊新建視窗時執行新建選項卡函式

private void checkbox_checked(object sender, eventargs e)//當記住密碼選項被取消勾選時,將相應記錄刪除

}delegate void disconnectdelegate(ref axmstsclib.axmsrdpclient7 rdp);//斷開連線委託

private void disconnect(ref axmstsclib.axmsrdpclient7 rdp)//斷開相應rdp的連線

}private void redraw(ref axmstsclib.axmsrdpclient7 rdp)//重新調整rdp桌面大小,需要重新連線才能實現

rdp.width = width - 220;

rdp.height = height - 90;

rdp.desktopheight = rdp.height;

rdp.desktopwidth = rdp.width;

if(rdp.server!="")

rdp.connect();

}private void windows_terminal_sizechanged(object sender, eventargs e)//當窗體大小發生改變時,調整所有選項卡的rdp桌面大小}}

private void fullscreen(object sender, eventargs e)//全屏,將窗體最大化

private void sessiontoolstripmenuitem_click(object sender, eventargs e)//單擊選單欄會話選項時,獲取已儲存的所有記錄

int i=0;

foreach (string str in s)

}if (flag == 0)//如果該會話未在選單欄中出現,則將相應記錄新增至選單欄

sessiontoolstripmenuitem.dropdownitems.add(str +"(" + decrypt(code) + ")").name = str;

sessiontoolstripmenuitem.dropdownitems[str].click += clicksession;

i++;

}sessiontoolstripmenuitem.dropdownitems.removebykey("無");//同時刪除「無」選項} }

private void clicksession(object sender, eventargs e)//單擊選單欄中的會話記錄後執行的函式

}createpage(ref tabcontrol1);//否則,新建乙個選項卡

readsession(tmp.name); //並將相關記錄讀取值窗體中

button1_click(sender,e); //模擬執行連線按鈕,進行連線

}private void readsession(string sessionname)//讀取會話相關資料

tabcontrol1.selectedtab.controls["panel"].controls[str].text = decrypt(code);//將解密後的資料賦值到相應控制項中

}tabcontrol1.selectedtab.controls["panel"].controls["ip"].text = sessionname;//將選項卡的標題修改為會話名

checkbox checkbox = (checkbox)tabcontrol1.selectedtab.controls["panel"].controls["isremember"];

checkbox.checked = true;

}private string encrypt(string str)//使用rsa加密字串

private string decrypt(string str)//解密字串

private void tabcontrol1_selectedindexchanged(object sender, eventargs e)//當選項卡切換至,非啟用選項卡全部斷開連線,減少資源使用

else}}

}public string getallsection()//獲取配置檔案中所有section

else

}string final = new string[i];//返回乙個長度與實際總數相等的字串陣列

final = (string)list.take(i).toarray();

return final;

}public string getallkey(string section_name)//獲取相應section中所有key

else

}string final = new string[i];

final = (string)list.take(i).toarray();

return final;}}

}

RDP遠端桌面協議

1 概況 目前常用的遠端桌面協議有vnc spice rdp三種。2 rdp,remote desktop protocol,遠端桌面協議,是乙個多通道 multi channel 的協議,讓使用者 客戶端或稱 本地電腦 連上提供微軟終端機服務的電腦 伺服器端或稱 遠端電腦 大部分的windows ...

linux操作 遠端桌面RDP

遠端桌面rdp 相同的操作 注意在客戶端中 domain 需 為 空,否則黑屏。閃退問題是無桌面。如果灰屏,很大可能是 沒有正確連線linux桌面功能 無桌面。fluxbox 輕量級桌面 apt y install fluxbox xfce 輕量級桌面 apt y install xfce4 xfc...

獲取Windows遠端桌面 RDP 連線記錄

再使用mstsc連線的是時候,管理員勾選了自動儲存密碼連線的選項,還有就是有管理員許可權.首先檢視該計算機上的連線記錄cmdkey list 得到以下內容 guidmasterkey是我們需要的 使用 dpapi 根據我們記錄的guidmasterkey得到masterkey 加密金鑰 最後就差解密...