我想在我的程序中模仿 Windows 中的运行命令。换句话说,我想让用户能够“运行”任意一段文本,就像他们在运行框中键入它时会发生的那样。
虽然System.Diagnostics.Process.Start()
让我很接近,但我似乎无法让某些事情,如 %AppData% 工作的环境变量。我只是不断收到消息“Windows 找不到 '%AppData%'...”
我想在我的程序中模仿 Windows 中的运行命令。换句话说,我想让用户能够“运行”任意一段文本,就像他们在运行框中键入它时会发生的那样。
虽然System.Diagnostics.Process.Start()
让我很接近,但我似乎无法让某些事情,如 %AppData% 工作的环境变量。我只是不断收到消息“Windows 找不到 '%AppData%'...”
您可以使用Environment.ExpandEnvironmentVariables方法将 %AppData% 转换为它实际对应的任何内容。
根据您要执行的操作,您还可以调用 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());