从Visual Studio打开的CMD提示无法在我的计算机上启动exe。为什么不?

肖恩

我有以下代码来启动cmd提示符,然后从该cmd提示符下启动putty.exe,并在末尾输入IP地址。

private void btnRouter_Click(Object sender, EventArgs e)
{
    MessageBox.Show((string)((Button)sender).Tag);
    System.Diagnostics.Process cmd = new System.Diagnostics.Process();
    cmd.StartInfo.FileName = @"C:\windows\system32\cmd.exe";
    cmd.StartInfo.UseShellExecute = true;
    cmd.Start();
    cmd.StandardInput.WriteLine("Putty.exe " + ((string)((Button)sender).Tag));
    cmd.WaitForExit();
}

问题是我不断收到错误消息“ StandardIn尚未重定向”。从Visual Studio中获取,当我尝试在启动的命令窗口中键入putty.exe时,我得到“'putty.exe'无法识别为内部或外部命令,可操作程序或批处理文件”。这真的很奇怪,因为如果我进入运行行,请键入cmd然后键入putty.exe,因为我将绝对文件夹路径添加到腻子应用程序的系统环境路径中后,它立即打开。

从Visual Studio打开的CMD不使用我的环境路径是有原因的吗?

仍然不知道为什么会发生这种情况,但是我回到了以前的代码,将putty.exe的副本放到了调试文件夹中,这次它成功启动了。

private void btnRouter_Click(Object sender, EventArgs e)
{
    MessageBox.Show((string)((Button)sender).Tag);
    System.Diagnostics.Process myProcess = new System.Diagnostics.Process();
    System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
    startInfo.FileName = "Putty.exe ";
    startInfo.Arguments = ((string)((Button)sender).Tag);
    myProcess.StartInfo = startInfo;
    myProcess.Start();
}
朱西耶

此行将导致“ StandardIn尚未重定向”。错误,因为您尝试写入stdin且该句柄未正确设置为输入:

cmd.StandardInput.WriteLine("Putty.exe " + ((string)((Button)sender).Tag));

关于这个问题:

从Visual Studio打开的CMD不使用我的环境路径是有原因的吗?

当父进程启动子进程时,该子进程将继承其父级的环境。

换句话说,您正在启动的新cmd窗口将继承Visual Studio环境,但这并不意味着Visual Studio环境与命令提示符的环境相同。

您可以通过以下方法进行测试:启动命令行提示符,从该命令行提示符运行Visual Studio,然后创建您的子cmd进程。

现在,您的cmd进程应具有与原始命令行匹配的环境,以及Visual Studio添加到其环境副本的所有更改。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Mac / Linux计算机上清除Visual Studio代码缓存?

我的计算机上的Python使用哪个版本的Visual Studio进行编译?

如何在其他计算机上部署用Visual Studio编写的简单Boost程序

为什么Visual Studio用Guid exe文件打开

为什么我的project.json / xproj项目无法在Visual Studio 15中打开(预览)?

如何在未连接到Internet的计算机上安装Visual Studio 2015的远程工具

在计算机上调试代码而不安装Visual Studio

Visual Studio解决方案(.sln)文件是否对创建它们的计算机有任何提示?

在多台计算机上安装Visual Studio 2017

如何在开发人员计算机上构建Visual Studio 2017 .NET Core .exe文件?

为什么Visual Studio 2019不编译我的代码?

为什么我在Visual Studio 2019输出与admin dev cmd提示符之间得到了不同的MSBuild行为

为什么我的Pyinstaller exe在启动Java程序的其他计算机上失败?

无法在没有Internet的计算机上更新Visual Studio 2019?

构建快速的Visual Studio计算机

在未安装Visual Studio的计算机上运行nuget.exe

Visual Studio 2013中的远程调试不针对远程计算机

使用Visual Studio 2012时计算机重新启动

Visual Studio SharePoint API代码可在其他计算机上运行,但不能在我的计算机上运行

我可以在64位计算机上的Visual Studio 32位版本中使用opencv 64位吗?

为什么我无法在特定计算机上打开特定rar文件,但在其他计算机上打开该文件?

无法在装有Visual Studio 2015的计算机上安装Visual Studio 2013

在未安装Visual Studio的远程计算机上设置群集

无法从Visual Studio Team Services(是Visual Studio Online)内部版本在远程计算机上执行IIS管理命令

带有本地计算机的Visual Studio Team Services

无法连接到远程计算机错误 - Visual Studio Web Deploy

无法启动visual studio

Visual Studio Code - 无法上传在我的计算机上本地创建的 nuget 包

为什么我无法在 Linux 上打开 Visual Studio Code?