C# - 在可执行文件的不同目录中启动进程

时间:2014-05-20 10:51:09

标签: c# visual-studio process

我需要启动一个例如在此路径中的流程:

c:\A\ApplicationToBeLaunched.exe

我希望此进程在其可执行文件的不同路径中运行。此其他文件夹将包含ApplicationToBeLaunched.exe应用程序的所有配置文件。例如,路径可以是:

c:\B\

我试图用这个c#代码执行此操作:

System.Diagnostics.Process prProcess = new System.Diagnostics.Process();
prProcess.StartInfo.FileName = "c:\\A\\ApplicationToBeLaunched.exe";
prProcess.StartInfo.UserName = "";
prProcess.StartInfo.UseShellExecute = false;
prProcess.StartInfo.WorkingDirectory = "c:\\B\\";
prProcess.Start();

但该过程始终在应用程序目录(c:\A\)中执行。我也尝试将属性UseShellExecute设置为true。

我做错了什么?可以帮助我吗?

编辑:

经过一些测试后,我检查了问题是在启动的应用程序中。工作目录的过程运行正常。

2 个答案:

答案 0 :(得分:0)

我不知道为什么WorkingDirectory无效,但过去我自己也遇到过这种情况。

尝试在开始新进程之前更改当前工作目录:

Directory.SetCurrentDirectory("c:\\B\\");

答案 1 :(得分:0)

我做了一点测试,用Main方法创建了一个小程序:

        System.Diagnostics.Process prProcess = new System.Diagnostics.Process();
        prProcess.StartInfo.FileName = @"C:\src\Test\ObjectTest\ObjectTest\bin\Release\ObjectTest.exe";
        prProcess.StartInfo.UserName = "";
        prProcess.StartInfo.UseShellExecute = false;
        prProcess.StartInfo.WorkingDirectory = @"c:\temp\";
        prProcess.Start();

并在ObjectTest.exe

Console.WriteLine(Directory.GetCurrentDirectory());

输出结果:

c:\temp\

所以我认为你的程序存在其他问题,而不是WorkingDirectory的问题。