using System.Collections.Generic;
public static void Main()
string cmdLine = "\"c:\\program files\\svchost.exe\" -k -s svcName -t \"some text\"";
string[] sa = cmdLine.Split('"').Where(s => !string.IsNullOrEmpty(s)).ToArray();
Console.WriteLine("exePath=" + sa[0]);
Console.WriteLine("argString=" + String.Join("", sa.Skip(1)));
string argString = String.Join("", sa.Skip(1).Select(s => !s.TrimStart(' ').StartsWith("-") ? "\"" + s + "\"" : s.TrimStart(' ')));
Console.WriteLine("argString=" + argString);
List<String> args = argString.Split('-').Where(s => !string.IsNullOrEmpty(s)).Select(a => "-" + a).ToList();
foreach(String arg in args) {
Dictionary<string,string> dict = new Dictionary<string, string>(args.Count);
for (int i = 0; i < args.Count(); i++)
string key = args[i].TrimStart(' ').Split(' ').Take(1).ToString();
string val = args[i].Replace(key, "");
foreach(KeyValuePair<String, String> kv in dict) {
Console.WriteLine("k=" + kv.Key + " v=" + kv.Value) ;