Process.Start 与开始 > 运行有何不同?

Rac*_*hel 1 c# process

如果我去开始>运行并输入

C:\文件夹\程序.exe A=1

我的程序有效。

如果我创建 .exe 的快捷方式并编辑属性以附加A=1到目标路径,它也可以工作。

但是,如果我尝试运行

var p = new Process();
p.StartInfo.FileName = @"C:\folder\Program.exe";
p.StartInfo.Arguments = "A=1"
p.Start();
Run Code Online (Sandbox Code Playgroud)

或者

Process.Start(@"C:\folder\Program.exe, "A=1");
Run Code Online (Sandbox Code Playgroud)

它没有。

这两个调用之间有什么区别,我该如何更改代码调用,使其运行方式与在“开始”>“运行”中键入值时的运行方式完全相同?

LB2*_*LB2 5

重新发布评论作为答案(并重新措辞):

与资源管理器 shell 的开始->运行不同,它会自动将当前工作目录设置为目标可执行文件所在的同一文件夹,.NETProcess.Start不会这样做。在这种情况下,可执行文件尝试加载相对于当前工作文件夹的资源,并期望它与可执行文件所在的位置相同(例如加载配置文件、DLL 和库等),从而导致崩溃或其他故障。

使用StartInfo.WorkingDirectory指定工作文件夹的可执行文件所在,和9个10倍,那将是它!

是的,我不止一次踩过这个耙子......