Java - 连接到Windows中的RDP服务器
问题描述:
我试图自动化一些身份验证,我通过RDP进行连接,并使用从PROPERTIES文件中获取的凭据对特定服务器进行身份验证。Java - 连接到Windows中的RDP服务器
在Windows上,内置的RDP客户端是mstsc.exe,但它似乎不像通过命令行提供登录凭证,就像在Linux和Mac上一样。
在Windows上是否有任何解决方法,使用mstsc.exe,我可以自动进行身份验证,而无需用户进行任何交互?
谢谢。
答
您可以使用自定义连接文件吗?然后将它传递到MSTSC E.G:
mstsc customfile.RDP
下面是一个RDP文件的样子,我保存的凭证,记满地址字段和用户名字段。
screen mode id:i:2
use multimon:i:0
desktopwidth:i:1680
desktopheight:i:1050
session bpp:i:32
winposstr:s:0,3,0,0,800,600
compression:i:1
keyboardhook:i:2
audiocapturemode:i:0
videoplaybackmode:i:1
connection type:i:2
displayconnectionbar:i:1
disable wallpaper:i:1
allow font smoothing:i:0
allow desktop composition:i:0
disable full window drag:i:1
disable menu anims:i:1
disable themes:i:0
disable cursor setting:i:0
bitmapcachepersistenable:i:1
full address:s:###.###.###.###:####
audiomode:i:0
redirectprinters:i:1
redirectcomports:i:0
redirectsmartcards:i:1
redirectclipboard:i:1
redirectposdevices:i:0
redirectdirectx:i:1
autoreconnection enabled:i:1
authentication level:i:2
prompt for credentials:i:0
negotiate security layer:i:1
remoteapplicationmode:i:0
alternate shell:s:
shell working directory:s:
gatewayhostname:s:
gatewayusagemethod:i:4
gatewaycredentialssource:i:4
gatewayprofileusagemethod:i:0
promptcredentialonce:i:1
use redirection server name:i:0
username:s:<USERNAME>
传递给mstsc.exe调用。我会尝试查看密码的存储位置。
我不会称这个超级安全。我认为密码是以加密的方式存储的,直到我弄清楚为止,只需几分钟。
你想要完成什么? MSTSC不会基于身份验证返回值。所以,我不确定你打算如何捕捉。
答
可以使用输入的cmdkey工具
cmdkey.exe /generic:servername /user:username /pass:pass
一旦运行该存储RDP凭据,您MSTSC通话将能够自动登录:
mstsc.exe /v:servername
感谢您的答复。我正在编写软件以通过RDP自动执行SPNEGO身份验证。我正在查看.RDP文件,但我正在编写软件,供测试人员使用,以测试不同用户/传递组合下的操作。这些凭证很可能存储在.PROPERTIES文件中。在从.PROPERTIES文件中提取凭据后,我必须为每个用户创建一个.RDP文件。 – eoinzy 2012-04-03 20:19:49
@eoinzy这是真的,你必须每次创建一个文件,但它可能是暂时的。除UN,PW和IP地址外,文件内容可能保持不变。每次处理文件时,您都可以销毁或覆盖该文件。我认为用户每次都会控制这个Java程序?我试图理解编程的好处。谢谢 – kevingreen 2012-04-03 20:22:54
用户将成为一名软件测试员。目前,当他们运行自动化脚本时,他们必须停止并登录到RDP。我试图通过告诉他们提供证书列表来实现自动化,剩下的事情我会做。他们所要做的就是调用像'myclass.loginNextUser()'。 – eoinzy 2012-04-03 20:44:03