在.NET中模仿Windows的“运行”窗口

我想在我的程序中模仿Windows中的运行命令。 换句话说,我想给用户“运行”任意一段文本的能力,就像将它们键入到运行框中一样。

虽然System.Diagnostics.Process.Start()让我closures,我似乎无法像环境variables,如%AppData%工作。 我只是不断收到消息“Windows无法find'%AppData%'…”

您可以使用Environment.ExpandEnvironmentVariables方法将%AppData%转换为实际对应的值。

根据你想要做什么,你也可以调用CMD.EXE,它会自动扩展你的环境变量。 下面的示例将执行%appdata%文件夹的DIR,并将stdOut重定向到debug:

  StreamReader stdOut; Process proc1 = new Process(); ProcessStartInfo psi = new ProcessStartInfo("CMD.EXE", "/C dir %appdata%"); psi.RedirectStandardOutput = true; psi.UseShellExecute = false; proc1.StartInfo = psi; proc1.Start(); stdOut = proc1.StandardOutput; System.Diagnostics.Debug.Write(stdOut.ReadToEnd());