2016-02-04 167 views
1

我已經創建了一個asp.net網頁,並從網頁中使用下面的代碼建立遠程桌面連接。使用process.startinfo的遠程桌面連接

rdp.exe是一個外部文件

這裏是我的代碼

Protected Sub BtnRemote_Click(ByVal sender As Object, ByVal e As EventArgs) Handles BtnRemote.Click 
    Dim Process As New System.Diagnostics.Process  
    Dim startinfo As New System.Diagnostics.ProcessStartInfo 
    startinfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal 
    startinfo.FileName = "C:\WINDOWS\system32\cmd.exe" 
    Dim path = "D:\rdp.exe" 
    startinfo.Arguments = path + "/v:" + txtTerminal.Text + " " + "/u:" + txtTerUser.Text + " " + "/p:" + txtTerPassword.Text 
    startinfo.UseShellExecute = False 
    Process.Start(startinfo) 
End Sub 

一切都很好,當我調試,但系統將無法建立遠程連接。

但是,如果我從命令提示符使用以下命令,我能夠建立一個遠程連接。

E:\rdp /v:"IPAddress" /domain:"domain" /u:"username" /p:"password" 

回答

0

一個問題,我可以用這個看到的是這條線內(還要注意它得到了路徑用戶密碼,並IP失蹤域名參數):

startinfo.Arguments = path + "/v:" + txtTerminal.Text + " " + "/u:" + txtTerUser.Text + " " + "/p:" + txtTerPassword.Text 

在你的CMD參數說,它需要適應這種格式:如果您發現您的startinfo.arguments不包含在目錄和IP地址行所以之間的空間

E:\rdp /v:"IPAddress" /domain:"domain" /u:"username" /p:"password" 

然而而不是讀它是這樣的:

E:\rdp /v:"IPAddress" /u:"username" /p:"password" 

它的閱讀這樣的:

E:\rdp/v:"IPAddress" /u:"username" /p:"password" 

只是簡單地修復線路是這樣的:

startinfo.Arguments = path + " /v:" + txtTerminal.Text + " /u:""" + txtTerUser.Text + """ /p:" + txtTerPassword.Text 

我也刪除+的串連「」 +,因爲你真正需要的是一個 空間前/人的,它仍然會正常工作。另外通知我已經添加了額外的引號,因爲如果用戶名支持空格,那麼當它去設置參數,如果用戶名包含一個空格,那麼它會計算它們作爲兩個單獨的參數引號圍繞它防止它被分成兩個不同的參數

,而不是使用CMD也是爲什麼不直接

Dim p As Process 
    p.startinfo.FileName = "D:\rdp.exe" 
    p.StartInfo.WorkingDirectory = "D:\" 
    startinfo.Arguments = path + " /v:" + txtTerminal.Text + " /u:""" + txtTerUser.Text + """ /p:" + txtTerPassword.Text 
    p.Start() 
啓動exe程序