如何在 C# 中从路径运行 .exe

Posted

技术标签:

【中文标题】如何在 C# 中从路径运行 .exe【英文标题】:How to run a .exe in C# from a path 【发布时间】:2014-04-02 03:54:58 【问题描述】:

我在从路径执行 .exe 时遇到问题。我已经搜索了谷歌并检查了有关此主题的推荐内容,但是它们不起作用...

我正在尝试从某个路径运行 .exe,但它只是说找不到文件?

我正在尝试这个:

const string ex1 = "C:\\";
const string ex2 = "C:\\Desktop\\3D Survival\\3\\Test\\";

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "3D Survival.exe";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = "-f j -o \"" + ex1 + "\" -z 1.0 -s y " + ex2;

try


    using (Process exeProcess = Process.Start(startInfo))
    
        exeProcess.WaitForExit();
    

catch

    // Log error.

这也让我找不到文件,我也尝试过 Process.Start("3D Survival.exe");它仍然说找不到文件。是的,文件确实存在。

有人解决了吗?

【问题讨论】:

3D Survival.exe 是否可供正在执行的应用程序访问?它可能存在于其他路径上,Windows 无法将其解析到任何默认位置。 3D Survival.exe 程序是否在启动应用程序的同一文件夹中? 我可以将.exe添加到同一个文件夹,但是我需要从某个目录执行。 【参考方案1】:

您的代码假定“3D Survival.exe”存在于当前工作目录中。您需要提供绝对路径,或相对于工作目录的路径。

如果您希望它与您正在执行的程序相关,请使用:

Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), pathToExe);

要获取当前工作目录,只需使用:

Directory.GetCurrentDirectory();

您的工作目录可能与您想象的不同,这将肯定地告诉您..

要做一个绝对路径,只需将整个路径放入Process.Start,或放入StartInfo.FileName

【讨论】:

很高兴您发现我的回答很有帮助。

以上是关于如何在 C# 中从路径运行 .exe的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 代码中从 GAC 卸载

如何在 C# 中从 DB (*.mdb) 中删除一行

如何在 C# 中从 cosmos db 获取准确的最新 5 分钟数据

如何将外部 .exe 添加到我的 C# 项目中?

在 C# 中从 XML Schema 生成代码的限制是啥?

C#获取项目的路径