C# 如何使用参数运行外部命令?

C# 如何使用参数运行外部命令?,c#,command-line,C#,Command Line,皈依 我试过了,但没用 %systemroot%\system32\dism.exe /Online /Add-Package /PackagePath:%systemdrive%\temp\IE-Win7.CAB /quiet /norestart 下面是我正在使用的一个示例程序,其中有一行也记录了它 runProgram("dism.exe", "\"" + workingDir + "/Online /Add-Package \\IE-Win7.CAB\" /quiet /noresta

皈依

我试过了,但没用

%systemroot%\system32\dism.exe /Online /Add-Package /PackagePath:%systemdrive%\temp\IE-Win7.CAB /quiet /norestart
下面是我正在使用的一个示例程序,其中有一行也记录了它

runProgram("dism.exe", "\"" + workingDir + "/Online /Add-Package \\IE-Win7.CAB\" /quiet /norestart /log:\"" + LogFolder + "\\IE-Win7.CAB.evtx\"");
背景

程序基本上调用要安装的.msu文件并记录事件

runProgram("wusa.exe", "\"" + workingDir + "\\Windows6.1-KB2882822-x86.msu\" /quiet /norestart /log:\"" + LogFolder + "\\Windows6.1-KB2882822-x86.evtx\"");
这将扩展您在原始调用中使用的环境变量,使用C#6插值语法将它们插入两个字符串中,这些字符串可以传递给Process.Start(string,string),以执行该行。当然,我不想亲自测试

var sys_root = Environment.ExpandEnvironmentVariables("systemroot");
var dism_path = $"{sys_root}\system32\dism.exe";

var sys_drive = Environment.ExpandEnvironmentVariables("systemdrive");

var args = $"/Online /Add-Package /PackagePath:\"{sys_drive}\temp\IE-Win7.CAB\" /quiet /norestart"

var proc = Process.Start(dism_path, args);