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 に答える