【问题标题】:Defining a working directory for executing a program (C#)定义用于执行程序的工作目录 (C#)
【发布时间】:2011-07-16 18:17:57
【问题描述】:

我目前正在尝试从特定文件夹启动可执行文件。

我下面的代码奇怪地使应用程序崩溃:

Process p = new Process();
p.StartInfo.WorkingDirectory = "dump";
p.StartInfo.FileName = s;
p.Start();

我调试了它,它说找不到要启动的文件,但是文件/文件夹确实存在,是我的语法错误吗?

下面的代码可以工作,但是没有定义工作目录,所以找不到可执行文件

Process.Start(@"dump\", s);

【问题讨论】:

    标签: c# .net windows


    【解决方案1】:

    您设置的工作目录(“dump”)是相对于当前工作目录的。您可能需要检查当前的工作目录。

    您应该能够使用此代码将工作目录设置为正在执行的程序集目录...

    string exeDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
    Directory.SetCurrentDirectory(exeDir);
    

    或者,更好的是,不要使用相对路径,将 p.StartInfo.WorkingDirectory 设置为绝对路径。

    【讨论】:

    • 正确,我当前的 orking 目录中有一个转储文件夹
    • 您是否缺少使用方法?我找不到Directory.SetCurrentDirectory(path) 的方法……你的意思是System.IO.Directory.SetCurrentDirectory(path) 吗?
    【解决方案2】:

    如果文件夹不存在,则无法从文件夹启动可执行文件。您必须将可执行文件复制到此文件夹,然后才能为该可执行文件启动 Process

    【讨论】:

    • 工作目录独立于启动的可执行文件的位置。这是一个重要的区别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多