的过程.开始,工作目录,从一个exe启动另一个

本文关键字:一个 exe 启动 另一个 开始 过程 工作 | 更新日期: 2023-09-27 18:02:30

我希望你能明白我的问题,不知道我是否能用英语恰当地描述它,但我会尝试:)

:

    目录结构: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不再工作"。
  • 如果我复制xml文件到MainFolder,它的工作。

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

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

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

所以就像,MainProg有按钮,在我的。cs文件中我告诉他要onClick什么。嗯. .如果你不是用你的母语,这很难描述,但我希望你明白我的意思;)

的过程.开始,工作目录,从一个exe启动另一个

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