Process.Start,WorkingDirectory,从另一个开始一个exe

时间:2014-05-08 03:55:13

标签: c# process.start working-directory

我希望你能解决我的问题,不知道我是否可以用英语正确描述它,但我会尝试:)

情况:

  • 文件夹结构:MainFolder / Sub1 / Sub2
  • 2个exe文件:MainFolder / MainProg.exe和/Sub2/SecondProg.exe
  • MainProg.exe不是来自我,我在/ Sub1中写了一个.cs文件,一种插件。 (我认为MainProg.exe类似于编译器,因为它有一个日志窗口,我可以看到我的.cs文件中的错误..我觉得作者在某处提到过JIT编译器?!)
  • 启动MainProg.exe - >点击按钮 - >启动SecondProg.exe
  • SecondProg.exe从xml文件中读取值
  • 两者都是.NET 4.5

问题:

  • 我想将/ xml文件放在/ Sub2
  • 如果我这样做并以正常方式启动SecondProg.exe,双击它,一切正常
  • 如果我尝试通过MainProg.exe中的按钮启动SecondProg.exe,我会得到" SecondProg不再工作"来自windows。
  • 如果我将xml文件复制到MainFolder,它的工作..

所以,我还在学习C#,但是工作目录可能存在问题吗?我很困惑,因为MainProg.exe与我的xml文件无关,它甚至不知道它在那里,唯一的一点,我使用它是在将值加载到SecondProg.exe时...

在我的.cs文件中,我通过

启动SecondProg
public override void Button()
{
Process.Start("Sub1\\Sub2\\SecondProg.exe");
}

就像它一样,MainProg有了按钮,在我的.cs文件中我告诉他要点击什么。 好吧..如果你不使用你的母语,很难描述,但我希望你明白我的意思;)

1 个答案:

答案 0 :(得分:1)

SecondProg.exe显然在其工作目录中查找该文件,如果找不到则会失败。因此,您必须设置新进程的工作目录。为此,请创建一个ProcessStartInfo对象,将FileName设置为EXE文件的路径,将WorkingDirectory设置为包含该EXE的文件夹的路径。然后在调用Process.Start时将该对象作为参数传递。