【问题标题】:How can I run an RDP file with VBScript?如何使用 VBScript 运行 RDP 文件?
【发布时间】:2010-11-15 13:07:22
【问题描述】:

到目前为止我有:

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("""C:\Server01.rdp""")

但是当我运行它时,什么也没有发生。甚至可以使用 VBScript 运行 RDP 文件吗?如果是这样,那我做错了什么?

【问题讨论】:

  • 让它工作大家:objShell.Run "mstsc.exe server01.rdp" 感谢所有的帮助!

标签: vbscript scripting remote-desktop rdp


【解决方案1】:

尝试使用传入的 .rdp 文件名调用 mstsc.exe:

objShell.Run(""mstsc C:\server01.rdp"")

【讨论】:

  • 不,我得到“系统找不到指定的文件”。
  • 您需要确保您的环境路径变量指向正确(如果您可以执行 start-> run -> mstsc c:\server01.rdp 那么您应该可以接受)。还要检查我的答案中的引号 - 我没有包括您最初拥有的额外引号!
  • 顺便说一句,如果您愿意,可以使用批处理文件而不是 VBScript,因为这是一个相对简单的操作。
  • 我在尝试运行它时收到“无效的连接文件”。为什么?我确定路径是正确的。
  • 我可以使用 VBScript 运行批处理文件吗?
【解决方案2】:

我认为您需要运行 mstsc.exe 并将 rdp 文件作为参数传入。

http://technet.microsoft.com/en-us/library/cc753907%28WS.10%29.aspx

【讨论】:

  • 我对 VBScript 有点陌生,您能否更详细地解释一下,也许用一些代码。
  • 那个链接指的是命令行,我怎么能用脚本做到这一点?
【解决方案3】:

这将起作用:(在带有 VBSCRIPT 的 PHP 中):

<script type="text/vbscript" language="vbscript">
<!--
const L_FullScreenWarn1_Text = "Your current security settings do not allow automatically switching to fullscreen mode."
const L_FullScreenWarn2_Text = "You can use ctrl-alt-pause to toggle your remote desktop session to fullscreen mode"
const L_FullScreenTitle_Text = "Remote Desktop Web Connection "
const L_ErrMsg_Text         = "Error connecting to remote computer: "
const L_ClientNotSupportedWarning_Text = "Remote Desktop 6.0 does not support CredSSP over TSWeb."
const L_RemoteDesktopCaption_ErrorMessage =  "Remote Desktop Connection"
const L_InvalidServerName_ErrorMessage = "An invalid server name was specified."

sub window_onload()
   if not autoConnect() then
       msgbox("VB")
   end if
end sub

function autoConnect()

    Dim sServer
    Dim iFS, iAutoConnect

    sServer = getQS ("Server")
    iAutoConnect = getQS ("AutoConnect")
    iFS = getQS ("FS")

    if NOT IsNumeric ( iFS ) then
        iFS = 0
    else
        iFS = CInt ( iFS )
    end if

    if iAutoConnect <> 1 then
        autoConnect = false
        exit function
    else


        if IsNull ( sServer ) or sServer = "" then
            sServer = window.location.hostname
        end if

        btnConnect ()
        autoConnect = true
    end if

end function

function getQS ( sKey )
    Dim iKeyPos, iDelimPos, iEndPos
    Dim sURL, sRetVal
    iKeyPos = iDelimPos = iEndPos = 0
    sURL = window.location.href

    if sKey = "" Or Len(sKey) &lt; 1 then
        getQS = ""
        exit function
    end if

    iKeyPos = InStr ( 1, sURL, sKey )

    if iKeyPos = 0 then
        sRetVal = ""
        exit function
    end if

    iDelimPos = InStr ( iKeyPos, sURL, "=" )
    iEndPos = InStr ( iDelimPos, sURL, "&" )

    if iEndPos = 0 then
        sRetVal = Mid ( sURL, iDelimPos + 1 )
    else
        sRetVal = Mid ( sURL, iDelimPos + 1, iEndPos - iDelimPos - 1 )
    end if

    getQS = sRetVal
end function


sub OnControlLoadError
    Msgbox("You wont be able to connect trough Remote Desktop")
end sub

sub OnControlLoad
   set Control = Document.getElementById("MsRdpClient")
   if Not Control is Nothing then
      if Control.readyState = 4 then
        BtnConnect()
      else
          Msgbox("You wont be able to connect trough Remote Desktop")
      end if
   else 
       Msgbox("You wont be able to connect trough Remote Desktop")
   end if
end sub


sub BtnConnect
Dim serverName

serverName = "<?=$_POST["RDserver"]?>"
serverName = trim(serverName)

On Error Resume Next
MsRdpClient.server = serverName
If Err then
msgbox
L_InvalidServerName_ErrorMessage,0,L_RemoteDesktopCaption_ErrorMessage
Err.Clear
exit sub
end if
On Error Goto 0

Dim ClientUserName
ClientUserName = "<?=trim($_POST["RDuser"])?>"
MsRdpClient.UserName = ClientUserName
MsRdpClient.AdvancedSettings.ClearTextPassword = "<?=trim($_POST["RDpass"])?>"
MsRdpClient.FullScreen = TRUE
resWidth = screen.width
resHeight = screen.height
MsRdpClient.DesktopWidth = resWidth
MsRdpClient.DesktopHeight = resHeight
MsRdpClient.Width = resWidth
MsRdpClient.Height = resHeight
MsRdpClient.AdvancedSettings2.RedirectDrives = FALSE
MsRdpClient.AdvancedSettings2.RedirectPrinters = FALSE
MsRdpClient.AdvancedSettings2.RedirectPorts = FALSE
MsRdpClient.AdvancedSettings2.RedirectSmartCards = FALSE
MsRdpClient.FullScreenTitle = L_FullScreenTitle_Text & "-" & serverName & "-"
MsRdpClient.Connect
end sub

-->
    </script>
    <object id="MsRdpClient" language="vbscript" onreadystatechange="OnControlLoad" onerror="OnControlLoadError"  classid="CLSID:4eb89ff4-7f78-4a0f-8b8d-2bf02e94e4b2" width="800" height="600"></object>

<script language="VBScript">
<!--
sub ReturnToConnectPage()
me.close
end sub

sub MsRdpClient_OnConnected()

end sub

sub MsRdpClient_OnDisconnected(disconnectCode)
   extendedDiscReason = MsRdpClient.ExtendedDisconnectReason
   majorDiscReason = disconnectCode And &hFF

   if (disconnectCode = &hB08 or majorDiscReason = 2 or majorDiscReason = 1) and not (extendedDiscReason = 5) then
      ReturnToConnectPage
      exit sub
   end if

   errMsgText = MsRdpClient.GetErrorDescription(disconnectCode, extendedDiscReason)
   if not errMsgText = "" then
         msgbox errMsgText,0,L_RemoteDesktopCaption_ErrorMessage
   end if

   ReturnToConnectPage

end sub
-->
</script>

问题是,它只适用于 IE,仍在寻找 Firefox / Safari...运气好不好??

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 2017-06-07
    • 2012-08-07
    相关资源
    最近更新 更多