1

我需要以管理员身份安装一些东西。由于无法授予用户管理员权限,我需要指定一个管理员帐户。我当前的代码:

var info = new ProcessStartInfo(pathToSomeFileMsiFile.msi)
            {
                Arguments = " /q "
            };
info.UserName = "usernamer";
info.Domain = "dm";
info.Password = securePasswordString;
info.LoadUserProfile = false;
info.UseShellExecute = false;
info.Verb = "runas";
Process.Start(info);

我得到错误:

{"The specified executable is not a valid application for this OS platform."}

似乎如果我设置 UseShellExecute = true,我可以以管理员身份启动,如果我将其设置为 false,我可以以其他用户身份启动。

有什么帮助吗?

4

2 回答 2

2

您需要使用msi 文件msiexec.exe命令行参数运行。

msiexec.exe /i /q somepackage.msi

所以你更新的代码将是:

var info = new ProcessStartInfo(@"C:\windows\system32\msiexec.exe")
        {
            Arguments = " /i " + varableWithSomeMSIFilename + " /q"
        };
于 2013-09-13T13:01:02.957 回答
0

设置:info.UseShellExecute = true;

一个例子 :

    ProcessStartInfo proc = new ProcessStartInfo();

  proc.UserName = "usernamer";
proc.Domain = "dm";
proc.Password = securePasswordString;
proc.LoadUserProfile = false;

    proc.UseShellExecute = false;
    proc.WorkingDirectory = Environment.CurrentDirectory;
    proc.FileName = Application.ExecutablePath;
    proc.Verb = "runas";

            try
            {
                Process.Start(proc);
            }
            catch

            {
                // The user refused the elevation.
                // Do nothing and return directly ...
                return;
            }

            Application.Exit();  // Quit itself
于 2013-09-13T12:57:31.403 回答