我试图在C#中的Winform .NET 4.0中编写多个远程桌面连接的脚本。
给出_serverList中的服务器名称列表,
var startInfo = new ProcessStartInfo
{
FileName = "cmd.exe",
RedirectStandardInput = true,
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = false
};
var process = new Process { StartInfo = startInfo };
process.Start();
foreach (string server in _serverList)
{
process.StandardInput.WriteLine(@"mstsc.exe /v:" + server);
}
当我在本地桌面(Windows 7)上运行它时,它运行得非常好:所有服务器都已启动,但是一旦我将应用程序移植到服务器上(Windows Server 2003 r 2,发生触发此事件的事件, 我收到了错误
"使用Mstsc.exe"未被识别为内部或外部命令,可操作程序或批处理文件
我试图提供mstsc.exe的完整路径,更改FileName =" mstsc.exe"并将服务器名称作为参数提供,但都不起作用。
当我在服务器上启动cmd.exe并手动输入" mstsc.exe / v:someservername"时,行为符合预期,并启动了正确的服务器。
对于出现问题的任何见解将不胜感激
答案 0 :(得分:0)
当UseShellExecute
设置为false时,您必须在设置FileName属性时提供可执行文件的完整路径,但环境变量无法正常运行。在Windows Server 2003 R2上搜索“mstsc.exe”的位置。对Windows 7执行相同的操作。这些路径可能不同,这可以解释问题。
使用辅助类(如OperatingSystem)根据OS,处理器(EG x86目录),%systemroot%
环境差异等差异选择正确的路径。然后可以设置正确的路径app.config中的值。
答案 1 :(得分:0)
我能够在Windows Server 2012 R2上运行您提供的代码。可能的是,操作系统中可能存在一些安全机制。您是否尝试过手动提升可执行文件的权限?
如果有效,你可以查看这篇文章: