1

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

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

4

2 回答 2

4

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

于 2010-05-20T00:21:33.803 回答
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());
于 2010-05-20T03:58:31.057 回答