如果我去开始>运行并输入
C:\ folder \ Program.exe A = 1
我的计划有效。
如果我创建.exe的快捷方式并编辑属性以将A=1
附加到目标路径,它也可以。
但是,如果我尝试运行
var p = new Process();
p.StartInfo.FileName = @"C:\folder\Program.exe";
p.StartInfo.Arguments = "A=1"
p.Start();
或
Process.Start(@"C:\folder\Program.exe, "A=1");
它没有。
这两个调用之间有什么区别,如何更改我的代码调用,使其运行方式与在Start>中键入值的方式完全相同。运行
答案 0 :(得分:3)
重新发布评论作为回答(和改写):
与explorer shell的Start-> Run不同,后者自动将当前工作目录设置为目标可执行文件所在的同一文件夹,.NET Process.Start
不会这样做。这通常是可执行文件尝试加载相对于当前工作文件夹的资源并期望它与可执行文件所在的相同(例如加载配置文件,DLL和库等)导致崩溃或其他失败的情况。
使用StartInfo.WorkingDirectory
指定可执行文件所在位置的工作文件夹,以及10次中有9次,这就是它!
是的,我是stepped on this rake more than once ...