Command Line Parse Code Fragment
internal class CommandLine { /// <summary> /// get process command line info /// </summary> /// <param name="processId"></param> /// <returns>command line info, array length is 2, ex: ["C:\Windows\system32\svchost.exe","-k LocalService"]</returns> public static String[] GetCommandLineInfo(int processId) { String[] info = new string[2]; info[0] = ""; info[1] = ""; // var commandLine = Wmi.GetCommandLine(processId); if (commandLine != "") { info = ParseCommandLine(commandLine); } return info; } /// <summary> /// get process command line info /// </summary> /// <param name="commandLine"></param> /// <returns>command line info, array length is 2, ex: ["C:\Windows\system32\svchost.exe","-k LocalService"]</returns> public static string[] ParseCommandLine(string commandLine) { string[] info = new String[2]; //C:\Windows\system32\svchost.exe -k LocalService //"C:\Program Files (x86)\Avira\AntiVir Desktop\avgnt.exe" /min if (commandLine[0] == '"') { int end = commandLine.IndexOf('"', 1); if (end == -1) { info[0] = commandLine; info[1] = ""; } else if (end + 1 < commandLine.Length) { info[0] = commandLine.Substring(1, end + 1); info[1] = commandLine.Substring(end + 1).TrimStart(' '); } else { info[0] = commandLine; info[1] = ""; } } else { int pos = commandLine.IndexOf(' '); if (pos == -1) { info[0] = commandLine; info[1] = ""; } else if (pos + 1 < commandLine.Length) { info[0] = commandLine.Substring(0, pos); info[1] = commandLine.Substring(pos + 1).TrimStart(' '); } else { info[0] = commandLine; info[1] = ""; } } return info; } }
.