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

时间:2015-09-21 16:41:14

标签: 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 /norestart /log:\"" + LogFolder + "\\IE-Win7.CAB.evtx\"");

以下是我正在使用的示例程序,该行也会记录它。

runProgram("wusa.exe", "\"" + workingDir + "\\Windows6.1-KB2882822-x86.msu\" /quiet /norestart /log:\"" + LogFolder + "\\Windows6.1-KB2882822-x86.evtx\"");

背景

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

1 个答案:

答案 0 :(得分:0)

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

这会扩展您在原始调用中使用的环境变量,使用C#6插值语法将它们插入到可以传递给Process.Start(string,string)的两个字符串中,以执行该行。当然,不想自己亲自测试一下。