How to cleanly spawn a process with arbitrary argument strings
<p>I'm looking to spawn a command with a given set of arguments, and these arguments can be arbitrary strings - particularly, a single argument can contain spaces, colons, etc.  I'd like to do this without having to escape the arguments string(s), mainly because I find that it almost inevitably leads to over, under, or mis-escaping at some point.</p>

<p>As far as I can tell, there's no way to do this with the <code>System.Diagnostics.Process</code> API - <code>ProcessStartInfo.Arguments</code> always splits the string on whitespace and has some special interpretation for some other characters.  What I'm doing currently is spawning <code>xargs --null</code> (I'm developing on Linux) with the command to run and feeding it the arguments via stdin.  This works, but isn't going to win any awards for most beautiful solution.</p>

<p>Is there a better .NET API to use to do what I want?</p>

<p><strong>Edit:</strong> For an example, consider wanting to pass the argument <code>“I am a filename with crazy characters "'%1!#\^*☺” fear my splitting</code>.  It's possible to escape that - <em>as far as I'm aware</em> all that needs to happen is to throw <code>"</code> around it and then escape the embedded <code>"</code> with <code>\</code>.  It's just that not having to escape it at all would be clearer, simpler, and less likely to get wrong.</p>
