Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Process.Start,WorkingDirectory,从一个exe启动另一个exe_C#_Process.start_Working Directory - Fatal编程技术网

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

C# Process.Start,WorkingDirectory,从一个exe启动另一个exe,c#,process.start,working-directory,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.

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

情况:

  • 文件夹结构: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文件读取值
  • 两者都是.NET4.5
问题:

  • 我想把xml文件放在/Sub2中
  • 如果我这样做并以正常方式启动SecondProg.exe,双击它,一切都会正常工作
  • 如果我试图通过MainProg.exe中的按钮启动SecondProg.exe,我会从windows获得“SecondProg不再工作”
  • 如果我将xml文件复制到MainFolder,它将正常工作
因此,我仍在学习C#,但workingdirectory是否有问题?我很困惑,因为MainProg.exe与我的xml文件无关,它甚至不知道它在哪里,唯一的一点,我在将值加载到SecondProg.exe时使用它

在.cs文件中,我通过

public override void Button()
{
Process.Start("Sub1\\Sub2\\SecondProg.exe");
}
所以它就像,MainProg有一个按钮,在我的.cs文件中,我告诉他要点击什么。
好。。如果你不使用母语,这很难描述,但我希望你明白我的意思;)

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

?这对我不起作用。。。没有更多的错误,但它只是没有开始。。(在WorkingDirectory中也没有last\\n)。。我认为问题是,SecondProg.exe正在取消MainProg.exe的工作目录,原因是什么…试图将SecondProg.exe中的xml路径编辑为Sub1\\Sub2\\file.xml,但这不起作用,没有错误,只是什么都没做。。我可以直接在SecondProg.exe的源代码中更改其工作目录吗??因为这就是我可以更改XML文件的代码的原因。XML文件是否与SecondProg.exe位于同一文件夹中?你原来的问题就是这么说的。如果是这样,那么您可以尝试按照我实际说的做,即将
WorkingDirectory
设置为包含SecondProg.exe的文件夹的路径。这正是双击一个EXE文件时所发生的情况,因此,如果它起作用,那么这似乎就是你应该做的,这就是为什么我一开始就说要这么做。我就是这么做的,问题是,MainProg.EXE似乎将SecondProg.EXE的工作目录从“Sub1/Sub2/”覆盖到“MainFolder”。我可以通过在SecondProg.exe的源代码中编辑xml文件的路径来修复它。因此,如果我使用“Sub1/Sub2/file.xml”而不是“file.xml”,它就可以工作了