Способ 1 (используя пространство имен Environment):
string[] arguments = Environment.GetCommandLineArgs();
foreach (string arg_str in arguments) {
MessageBox.Show(arg_str);
}
Способ 2 (используя параметры точки входа в программу):
[STAThread] static void Main(string[] args) {
foreach (string arg_str in args) {
MessageBox.Show(arg_str);
}
Замечу особенность поведения этих способов.
В первом случае первым элементом массива будет имя запущенной программы, а потом - аргументы командной строки. В итоге - массив всегда содержит хотя бы один элемент.
Во втором случае - сразу идут аргументы.
Далее - если несколько параметров заключить в двойные кавычки, то они будет обработан как один параметр. К одинарным кавычкам это не относится.
Так же из результирующих строк удаляются все пробелы, если они не заключены в двойные кавычки.

Аргументы командной строки
