调用process.start时为什么StartInfo.stuff不起作用但Process.start在C#中工作正常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调用process.start时为什么StartInfo.stuff不起作用但Process.start在C#中工作正常相关的知识,希望对你有一定的参考价值。

我正在尝试从C#程序中卸载一些可再发行组件,因此我查看存储在app.config中的程序ID值,然后尝试运行msiexec以卸载它们。如果我将参数存储在ProcessStartInfo对象中,则调用不起作用,但如果我调用Process.Start("stuff")它可以正常工作。这是为什么?我想使用ProcessStartInfo,以便我可以更好地控制弹出的窗口。

这不起作用:

Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
int numberOfKeys = ConfigurationManager.AppSettings.Count;

for (int i = 0;  i < numberOfKeys; i++)
{
   string[] guid = ConfigurationManager.AppSettings.GetValues(i);
   startInfo.Arguments = "/X " + guid[0] + " /l*vx log" + i.ToString() + ".txt";
   startInfo.CreateNoWindow = true;
   startInfo.FileName = "msiexec.exe";
   process.StartInfo = startInfo;
   var result = process.Start();
}

但这样做:

int numberOfKeys = ConfigurationManager.AppSettings.Count;

for (int i = 0; i < numberOfKeys; i++)
{
    string[] guid = ConfigurationManager.AppSettings.GetValues(i);
    var result = Process.Start("msiexec.exe", "/X " + guid[0] + " /l*vx log" + i.ToString() + ".txt");
}

有谁能解释为什么?

答案

我通过在通话后放入睡眠(10000)来使其工作。谢谢你的建议!

以上是关于调用process.start时为什么StartInfo.stuff不起作用但Process.start在C#中工作正常的主要内容,如果未能解决你的问题,请参考以下文章

System.Diagnostics.Process.Start() 从 Windows 服务调用时无法启动进程

当我调用 process.start() 时,Python 多处理进程只会停止我的代码运行

Process.Start() 啥都不做

安装程序在使用 Process.Start() 启动时失败,但在双击时工作

Process.Start 为什么会引发“系统找不到指定的文件”异常

当我使用Process.Start运行python程序时,我的python程序中的日志不起作用?