从 Excel 连接到 RDP

Connection to RDP from Excel

我看到很多论坛都在谈论从 Excel 文件启动远程桌面连接。

我也看到了这段代码,它很好用。

Sub OpenRDP()
Dim MyRDP As Variant

MyLink = "c:\windows\system32\mstsc.exe /v:" & ActiveCell.Value

MyRDP = Shell(MyLink, 1)

End Sub

但是,在我的 Excel 文件中,有一列我有主机地址,旁边是一列密码。

我的问题是:是否可以启动 RDP 并将主机 IP 地址和密码传递给它?如果是,它是如何完成的?

谢谢!

由于您只是通过 shell 调用一个命令,您实际上并没有对以编程方式启动的应用程序(在本例中为 RDP)的句柄。所以你不能做这样的事情:

MyRDP.Password = Range("B2").value

但是,您可以使用 Application.Sendkeys 将按键发送到 windows,它将盲目地应用到您发送命令时光标恰好所在的位置。

假设您的密码存储在同一行,但在上方的列(相邻单元格):

Application.SendKeys (ActiveCell.Offset(, 1).Value & "{ENTER}")

正在发送您的密码和 "Enter" 按键以接受密码。

因为 RDP 需要一点时间才能弹出,所以您不能在调用 shell 命令后就把那行扔进去。你必须等待一些时间。 5 秒在我的电脑上运行得很好,但你的电脑可能更慢或更快,所以你可能不得不在这里胡闹一下:

Sub OpenRDP()
    Dim MyRDP As Variant
    Dim MyLink As String

    MyLink = "c:\windows\system32\mstsc.exe /v:" & ActiveCell.Value

    MyRDP = Shell(MyLink, 1)

    'wait five seconds and send password in adjacent cell of same row
    Application.Wait (Now() + TimeValue("0:00:5"))
    Application.SendKeys (ActiveCell.Offset(, 1).Value & "{ENTER}")

End Sub

我毫不怀疑,通过查询 WMI 的 运行 进程并等待 RDP 弹出来执行发送密钥,或者搜索一个库以帮助与 RDP 交互,这可能会复杂大约 10000 倍代码,但是...对于两行代码,此方法将使您走得更远。

此外,(因为值得一提),将您的密码存储在 excel 中并不是非常安全。任何有权访问您的工作簿的人都可以访问您的远程桌面。即使工作簿有密码保护,也可以一键破解。