C#如何运行一个不同用户的msi安装包

C# How can I run an msi installation package as a different user

我需要能够在最终用户计算机上安装 crystal 报告,但网络安全不允许在普通用户登录时安装它,因此必须 'run as a different user' 才能在每台计算机上安装桌面。

我正在尝试创建一个允许任何用户安装 crystal 报告的小应用程序.. 到目前为止我有:

        Process p = new Process();
        p.StartInfo.FileName =   @"C:\cabs\CRRuntime_32bit_13_0_5.msi";
        p.StartInfo.Arguments = "/i \"C:\Application.msi\"/qn";
        p.StartInfo.UserName = uname;
        p.StartInfo.Password = pword;
        p.StartInfo.Domain = domain;
        p.StartInfo.UseShellExecute = false;


        try
        {
            p.Start();
        }
        catch(Exception er)
        {
            MessageBox.Show(er.Message);
        }

当我尝试 运行 此代码时,我看到消息 "The specified executable is not a valid application for this OS platform"

我是不是漏掉了什么?

干杯

MSI 在windows 中不是可执行文件。您应该使用您的 msi 文件作为参数调用 msiexec

Process p = new Process();
p.StartInfo.FileName =   @"C:\Windows\System32\msiexec.exe";
p.StartInfo.Arguments = @"C:\cabs\CRRuntime_32bit_13_0_5.msi";
p.StartInfo.UserName = uname;
p.StartInfo.Password = pword;
p.StartInfo.Domain = domain;
p.StartInfo.UseShellExecute = false;