Я пытаюсь запустить процесс с невыполненным процессом, но мне также нужно указать имя пользователя и пароль для пользователя с учетными данными администратора. Я пробовал использовать метод "runas"
для повышения, а также использовать манифест, но оба дают разные ошибки.
Например, если я делаю это (без использования манифеста, требующего повышения):
ProcessStartInfo info = new ProcessStartInfo(path);
info.UseShellExecute = false;
info.UserName = username;
info.Password = securePwd;
info.Domain = "MyDomain";
info.Verb = "runas";
var proc = Process.Start(info);
Процесс запускается без отображения диалогового окна подтверждения UAC и не удается выполнить команду, требующую прав администратора (я просто пытаюсь записать тестовый файл в каталог Program Files).
Если я добавлю манифест в целевое приложение, которое указывает, что для него требуется возвышение, я получаю Win32Exception
, заявляя, что операция требует повышения.
Кажется, что проблема заключается в настройке UseShellExecute
на false
(поскольку оба подхода работают нормально, когда это не так), но я должен установить для него значение false, чтобы запустить процесс под другой учетной записью пользователя.
Как я могу запустить повышенный процесс из процесса без повышения и вручную указать имя пользователя и пароль?
BOUNTY EDIT: В то время как пользователю не требуется вводить учетные данные администратора, вполне возможно, что диалог UAC nag вполне допустим. Я не собираюсь обойти UAC здесь.