Установка MSI от имени администратора без вывода сообщений - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь создать приложение, которое установит MSI из приложения c# windows, здесь я хочу получить данные от пользователя для имени пользователя, домена и пароля, чтобы я мог запустить приложение в этой учетной записи пользователя , в приведенном ниже коде, если я только даю startInfo.Verb = "runas" его работу, но я хочу предоставить имя пользователя и пароль администратора и запустить его. Можете ли вы помочь мне.

private void InstallProbe()
{
    try
    {
      bool gdfg=  IsRunAsAdmin();
        //processObj.InitializeProcess(txtUserName.Text, txtPassword.Text);
        string installcmd = "/c msiexec /i \"{0}\" /quiet TARGETDIR=\"{1}\" HOST=\"{2}\" PORT=\"{3}\" USEHTTPS=\"{4}\"  STEALTHMODE=\"{5}\"  ORGCODE=\"{6}\"";
        installcmd = string.Format(installcmd, txtFilePath.Text, @"%PROGRAMFILES%\ProHance Mate", "services.jamochatech.com", "8080", false, 0, "PHSALE");
        string uname, domain = string.Empty;
        //RunCommand("cmd", installcmd, processObj);
        if (txtUserName.Text.IndexOf("\\") > 0)
        {
            string[] strarr = txtUserName.Text.Split('\\');
            uname = strarr[1];
            domain = strarr[0];
        }
        else
        {
            uname = txtUserName.Text;
            domain = ".";
        }

        Process process = new Process();
        ProcessStartInfo startInfo = new ProcessStartInfo();
        //startInfo.Verb = "runas";

        startInfo.Domain = domain;
        startInfo.UserName = uname;
        startInfo.Password = ToSecureString(txtPassword.Text);
        startInfo.FileName = "cmd";
        startInfo.Arguments = installcmd;
        startInfo.CreateNoWindow = true;
        startInfo.UseShellExecute = false;
        startInfo.LoadUserProfile = true;
        MessageBox.Show(installcmd);
        process.StartInfo = startInfo;
        process.Start();
        process.WaitForExit(60000);
    }
    catch (Exception ex)
    {
        MessageBox.Show("Exception occured while installing the ProHance Mate " + ex.Message);
    }
}

1 Ответ

0 голосов
/ 02 апреля 2020

Независимо от контекста MSI, вы просто пытаетесь запустить новый процесс (msiexe c .exe) в заданном c пользовательском контексте. Проверьте ветку ниже и другие подобные.

В Windows: Как программно запустить процесс в режиме администратора в контексте другого пользователя?

...