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