我想在我的程序中模仿Windows中的Run命令。换句话说,我想让用户能够“运行”任意一段文本,就像他们在运行框中输入一样。
虽然System.Diagnostics.Process.Start()
让我接近,但我似乎无法获得某些事情,例如%AppData%等环境变量。我只是不断收到消息“Windows无法找到'%AppData%'...”
答案 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());