2017-06-02 82 views
1

我已经创建了一个小工具,我想通过mstsc.exe连接到远程桌面。使用进程通过mstsc.exe失败

我发现了很多样品,显然他们都工作。但对于一些重复我不是! :(

其实它是一个小的代码

private void RunRDP(object sender, EventArgs e) 
{ 
    Process rdcProcess = new Process(); 
    //Add/Change Credentials 
    /** 
     rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\cmdkey.exe"); 
     rdcProcess.StartInfo.Arguments = String.Format(@"/generic:TERMSRV/{0} /user:{1} /pass:{2}", tbServer.Text, tbUsername.Text, tbPassword.Text); 
     rdcProcess.Start(); 
    */ 

    //Perform mstsc 
    rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\mstsc.exe"); 
    rdcProcess.StartInfo.Arguments = string.Format(@"/v {0}", tbServer.Text); 
    rdcProcess.Start(); 
} 

我拿出添加凭据只是为了测试连接...仍然失败。

当我发表意见线

rdcProcess.StartInfo.Arguments = string.Format(@"/v {0}", tbServer.Text); 

它至少打开mstsc.exe

在任何其他情况下,我收到错误

无效的连接文件

错误必须有一些这样的。将此从德语翻译为英语不会带来任何类似的错误说明:D

为什么我的程序失败?

+0

请告诉我'tbServer'的价值? –

+0

服务器名称例如'myCustomerNumber.myHoster.xyz'...但我删除了很多...让我纠正这一点... – Dwza

回答

2

运行'mstsc /?'给我:

/v:<server[:port]> -- Specifies the remote computer to which you want to connect. 

所以我想你应该把它改为:

rdcProcess.StartInfo.Arguments = string.Format(@"/v:{0}", tbServer.Text); 
+0

从命令行,它完美的作品没有: –

+0

很奇怪...我改变了这个..现在它作品。我再次删除它,突然我的发布代码工作以及...尝试左右,因为1 houre和.... wtf? :无论如何......它显然现在工作.... – Dwza

+0

确实很奇怪。出于好奇,什么是'mstsc /?'给你的系统? – Johan