【问题标题】:How to run an exe file using C# in console application如何在控制台应用程序中使用 C# 运行 exe 文件
【发布时间】:2020-11-30 17:35:58
【问题描述】:

我正在尝试在位于网络驱动器上的控制台应用程序中运行一个 exe 文件。 所以需要发生的是应用程序需要使用以下代码将网络驱动器映射到驱动器号:

 private static void MapDrive()
    {
        System.Diagnostics.Process process = new System.Diagnostics.Process();
        System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
        startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        startInfo.FileName = "net.exe";
        startInfo.Arguments = @"use w: \\<server>\CompanyData\W10 /user:Administrator Password";
        process.StartInfo = startInfo;
        process.Start();
    }

这很好用,并且驱动器号已映射。 现在我面临的问题是在这个映射的驱动器中运行 exe 文件。 我尝试了以下方法,但似乎不起作用:

 private static void RunSetup()
    {
        System.Diagnostics.Process process = new System.Diagnostics.Process();
        System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
        startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        startInfo.FileName = "cmd.exe";
        startInfo.Arguments = @"w:\setup.exe";
        process.StartInfo = startInfo;
        process.Start();;
    }

在启动 exe 文件方面似乎没有任何反应。
我需要知道我在这里做错了什么?

谢谢

【问题讨论】:

  • 尝试将FileName 直接设置到安装程序。此外,除非安装程序会自动运行静默安装,否则您可能会考虑不为安装程序使用隐藏窗口样式。
  • 运行 setup.exe,而不是 cmd.exe。
  • System.Diagnostics.ProcessWindowStyle.Hidden 是什么意思 @Keith?

标签: c# console


【解决方案1】:

要么包含“/c”参数

startInfo.FileName = "cmd.exe";
startInfo.Arguments = @"/c w:\setup.exe";

或者直接设置FileName到setup.exe

startInfo.FileName = "w:\setup.exe";

如 cmets 中所述

【讨论】:

  • 不鼓励前者。人们运行cmd.exe 的这种习惯很奇怪,除非确实需要,否则不应鼓励(这种情况很少见,这里不是这种情况)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-30
  • 2013-06-30
  • 1970-01-01
相关资源
最近更新 更多