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

时间:2010-05-20 00:19:02

标签: c# .net windows process.start

我想在我的程序中模仿Windows中的Run命令。换句话说,我想让用户能够“运行”任意一段文本,就像他们在运行框中输入一样。

虽然System.Diagnostics.Process.Start()让我接近,但我似乎无法获得某些事情,例如%AppData%等环境变量。我只是不断收到消息“Windows无法找到'%AppData%'...”

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

根据您要执行的操作,您还可以调用CMD.EXE,它将自动扩展您的环境变量。下面的示例将执行%appdata%文件夹的DIR,并将stdOut重定向到调试:

        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());