Одна очевидная проблема заключается в том, что для UseShellExecute установлено значение false. Это означает, что вы запускаете блокнот напрямую, не передавая командную оболочку cmd.exe. Поэтому переменные окружения не раскрываются.
Я не уверен, чего вы пытаетесь достичь (зачем вам нужно добавлять переменную окружения?), Но сработало бы следующее:
System.Diagnostics.Process proc =
new System.Diagnostics.Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.EnvironmentVariables.Add("file", "c:\\text.txt");
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "cmd.exe";
proc.StartInfo.Arguments = "/c notepad %file%";
proc.Start();
proc.WaitForExit();