繁体   English   中英

Process.Start,WorkingDirectory,从另一个启动一个exe

[英]Process.Start, WorkingDirectory, start one exe from another

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

情况:

  • 文件夹结构: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

问题:

  • 我想在/ Sub2中包含xml文件
  • 如果我这样做,然后以正常方式启动SecondProg.exe,则双击它,一切正常
  • 如果我尝试通过MainProg.exe中的按钮启动SecondProg.exe,则会从Windows中收到“ SecondProg不再起作用”的信息。
  • 如果我将xml文件复制到MainFolder,则其工作正常。

因此,我仍在学习C#,但是workdirectory可能有问题吗? 我很困惑,因为MainProg.exe与我的xml文件无关,它甚至不知道它在那儿,唯一的一点,我使用它的地方是在将值加载到SecondProg.exe中时...

在我的.cs文件中,我通过以下方式启动SecondProg

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

就像MainProg一样,在我的.cs文件中有按钮,我告诉他onClick。 好..很难描述您是否不使用母语,但我希望您明白我的意思;)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM