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

本文关键字:启动 进程 一个 可执行文件 | 更新日期: 2023-09-27 18:04:24

我需要启动一个进程,例如在这个路径中:

c:'A'ApplicationToBeLaunched.exe

我希望这个进程运行在它们的可执行文件的不同路径上。另一个文件夹将包含applicationtolaunched .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。

我做错了什么?有人能帮我吗?

编辑:

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

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

我做了一个小测试,在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不工作,但我自己在过去遇到过这种情况。

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

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