我需要启动一个例如在此路径中的流程:
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。
我做错了什么?可以帮助我吗?
编辑:
经过一些测试后,我检查了问题是在启动的应用程序中。工作目录的过程运行正常。
答案 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的问题。