情况
我正在尝试以编程方式运行命令行工具 DISM.exe。当我手动运行它时,它可以工作,但是当我尝试使用以下命令生成它时:
var systemPath = Environment.GetFolderPath(Environment.SpecialFolder.System);
var dism = new Process();
dism.StartInfo.FileName = Path.Combine(systemPath, "Dism.exe");
dism.StartInfo.Arguments = "/Online /Get-Features /Format:Table";
dism.StartInfo.Verb = "runas";
dism.StartInfo.UseShellExecute = false;
dism.StartInfo.RedirectStandardOutput = true;
dism.Start();
var result = dism.StandardOutput.ReadToEnd();
dism.WaitForExit();
然后我result
的出来是:
错误:11
您无法使用 32 位版本的 DISM 为正在运行的 64 位操作系统提供服务。请使用与您的计算机体系结构相对应的 DISM 版本。
问题
我实际上已经知道是什么原因造成的:我的项目设置为针对 x86 平台进行编译。(例如,请参阅this question ,尽管没有一个答案提到这一点)。然而,不幸的是,目前我们需要继续针对这个平台,我无法通过切换到任何 CPU 来解决这个问题。
所以我的问题是如何以独立于其父平台的方式以编程方式生成一个进程 - 即保持我的项目针对 x86,但启动一个进程,该进程将针对它所在的机器的正确平台。