<p dir="ltr">FWIW, you actually just need to double quote each argument and escape double quotes so you can very easily write a helper to do this in a way that works on both Mono and .NET:</p>
<p dir="ltr">static Process StartProcess (string name, params string[] args)<br>
{<br>
    string a = null;<br>
    if (args != null && args.Length > 0)<br>
        a = "\"" + string.Join (args.Select (s => s.Replace ("\"", "\\\"")).ToArray (), "\" \"") + "\"";<br>
    return Process.Start (<br>
        new ProcessStartInfo (name, a) {<br>
            ShellExecute = false,<br>
        }<br>
    );<br>
}</p>
<p dir="ltr">Obviously this could be done more efficiently with a StringBuilder.</p>
<p dir="ltr">Apologies for any errors, I'm writing this on my phone...</p>
<p dir="ltr">- Michael</p>
<div class="gmail_quote">On Jun 6, 2013 1:18 PM, "Ian Norton" <<a href="mailto:inorton@gmail.com">inorton@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Hiya, I'm aware that I can use Process.Start() but I'd really really like to be able to directly pass a list of strings to my child process as arguments rather than having to escape shell characters and spaces etc.<div>

<br></div><div>Ie, In perl or C I'd do:</div><div><br></div><div>system("df","-m","/home/foo/Documents/Pictures/My Holiday");</div><div><br></div><div>Where in c# I'm forced to escape the space -> "My\ Holiday"</div>

<div><br></div><div>Ian</div></div>
<br>_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
<br></blockquote></div>