Как запустить новый процесс без прав администратора из процесса с правами администратора?

Я создаю программу автоматического обновления для приложения. Приложение запускается пользователем и работает без прав администратора. Автообновитель запускается с правами администратора и убивает приложение до того, как оно загрузит новые файлы.

Проблема возникает, когда я хочу запустить обновленное приложение после завершения автообновления. Если я использую обычный System.Diagnostics.Process.Start(file), приложение также запускается с правами администратора, и оно должно запускаться под текущим пользователем, чтобы работать, как задумано.

Итак, как сделать так, чтобы автоапдейтер запускал приложение от имени текущего пользователя, а не от администратора?

Я пытался использовать следующее:

var pSI = new ProcessStartInfo() { 
    UseShellExecute = false, 
    UserName = Environment.UserName, 
    FileName = file 
};
System.Diagnostics.Process.Start(pSI);

Но это выдает ошибку "Неверное имя пользователя или пароль". Я проверил правильность имени пользователя и понимаю, что пароль, вероятно, недействителен, так как я его не указал. Но это не вариант просить пользователя ввести его / ее пароль, поскольку вся причина для автоматического запуска приложения заключается в том, чтобы упростить пользователю работу.

Есть предложения?

36
задан slugster 23 June 2012 в 12:34
поделиться