Мне кажется, я не понимаю, что вы пытаетесь сделать, глядя на ваш код.
Вы, кажется, создаете пустой процесс с одной стороны (process1), но затем запускаете другой вручную (путем непосредственного вызова статического метода Process.Start). Ссылка на process1 ничего не делает.
Попробуйте полностью стереть код, ссылающийся на process1, и оставить только часть, создающую командную строку и вызывающую Process.Start:
var leftPath = @"c:\codereview\" + curDateTime + @"\left\";
var rightPath = @"c:\codereview\" + curDateTime + @"\right\";
var execPath = @"c:\program files\winmerge\winmergeu.exe";
var strCmdLine = "/C " + '"' + execPath + '"' + " /r " + leftPath + " " + rightPath;
System.Diagnostics.Process.Start("CMD.exe", strCmdLine);
Обратите внимание, что процесс запускается асинхронно. Ваш код будет продолжать работать сразу после создания процесса cmd, он не будет ждать завершения этого процесса.