Python實作自動生成遠端桌面RDP登入檔案(免輸密碼,實時算出密鑰,解決了密鑰隻能在本機使用、在其他機使用時還是需要輸入密碼的問題),并自動登入,執行指令(啟動時運作程式)。
import win32crypt
import binascii
import os
def Rdp(passwd, rdpFileName): #定義RDP檔案中資料内容
pwdHash = win32crypt.CryptProtectData(passwd, u'psw', None, None, None, 0) #算出密碼Hash值
pwdHash_ok = binascii.hexlify(pwdHash)
str1 = str(pwdHash_ok).split("'")[1] #轉換為字元串并使用切割法去掉内容前面的'b',保留資料本體内容
rdpFileStr = u'''screen mode id:i:1(顯示方式,1代表視窗顯示,2代表全屏顯示)
desktopwidth:i:1440(遠端桌面的實際寬度)
desktopheight:i:900(遠端桌面的實際高度)
session bpp:i:24
winposstr:s:1,1,800,200,1000,400(遠端桌面的顯示位置(後4個參數):水準方向從位置800到1000,垂直方向從200到400)
full address:s:10.8.6.194:3389
compression:i:1
keyboardhook:i:2
audiomode:i:0
redirectdrives:i:0
redirectprinters:i:0
redirectcomports:i:0
redirectsmartcards:i:1
displayconnectionbar:i:0
autoreconnection enabled:i:1
username:s:Administrator #使用者名
domain:s:MyDomain #域名
alternate shell:s:{route} #初始化啟動程式
shell working directory:s:
password 51:b:{pwdHash_ok} #密鑰
disable wallpaper:i:1
disable full window drag:i:1
disable menu anims:i:1
disable themes:i:0
disable cursor setting:i:0
bitmapcachepersistenable:i:1
'''.format(route=route,pwdHash_ok=str1)
with open(rdpFileName, 'w',encoding='utf-8') as f:
f.write(rdpFileStr)
passwd = '12345678'.encode('utf-16-le')
route ='C:\Documents and Settings\Administrator\桌面\Rentor\批處理.bat' #設定初始化啟動程式
rdpFileName = '111.rdp' # 設定生成的RDP檔案名
Rdp(passwd, rdpFileName)
os.system("mstsc ./111.rdp /console /v: 10.8.6.194:3389") #調用CMD指令運作遠端桌面程式