Да, есть много статей, связанных с повышением разрешений при установке пакетов MSI. У меня есть поворот в вопросе, что я не могу найти хороший ответ. Если я вошел в систему как пользователь, и я запустил мой код повышения MSI (ниже), пакет устанавливает, но текущие действия пользователя выполняются на пользователе, с которым я поднял установщик.
Например, если MSI добавляет файл на рабочий стол CURRENT USER. Результат повышения (работает как «Joe Admin») - это файл, который помещается на рабочий стол Joe Admin - не в настоящее время зарегистрированный пользователь («Пользователь Sally»). У меня есть программное обеспечение, которое поднимается как Joe, но помещает файл на рабочий стол Sally, как если бы он установил его. -Я хотел бы написать свое. Это на машине Windows 7, UAC выключен.Повысьте установку MSI при разрешении действий пользователя
Ниже приведен код нерабочего кода. (Салли вошла в систему, Поднимите, когда Joe -File переходит на рабочий стол Joe's Desktop) (свойство LoadUserProfile было попыткой решить эту проблему - не работает).
Process watchThis = ImpersonateInstaller(@"c:\temp\Test.msi", "SuperJoePassword");
watchThis.WaitForExit();
private static Process ImpersonateInstaller(string msiPath, string Password)
{
Domain d = Domain.GetCurrentDomain();
Process process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.LoadUserProfile = true;
process.StartInfo.FileName = @"C:\Windows\System32\msiexec.exe";
process.StartInfo.Arguments = string.Format(@"/i {0} REBOOT=ReallySuppress /qb-", msiPath);
process.StartInfo.WorkingDirectory = Environment.GetEnvironmentVariable("WINDIR");
process.StartInfo.UserName = "JoeAdmin";
process.StartInfo.Password = new SecureString();
process.StartInfo.Domain = d.ToString();
foreach (char c in Password.ToCharArray())
{
process.StartInfo.Password.AppendChar(c);
}
process.Start();
return process;
}
Спасибо. Итак, я звоню с/jm вместо/i? –
Это двухэтапный процесс. Вы вызываете его один раз, используя/jm из повышенного процесса, а затем вы вызываете его снова, используя/i из процесса без повышения. Имеют смысл? –
Не особенно :), но я собираюсь сделать снимок. –