prakash9057 Ответов: 1

Процесс подъема привилегии не работает


Что не так со следующим кодом?
ProcessStartInfo startInfo = default(ProcessStartInfo);

     startInfo = new ProcessStartInfo(SetupProgramPath)
     {
         UseShellExecute = true,
         Verb = "runas",
         WindowStyle = ProcessWindowStyle.Normal,
         CreateNoWindow = false
     };

     Process.Start(startInfo);

Ожидается, что он запросит учетные данные, но ничего не появится. Система имеет включенный UAC и не должна быть изменена.
Я ценю вашу помощь в этом деле. Заранее спасибо.

Что я уже пробовал:

Пробовали устанавливать
UseShellExecute = False
Кроме того, попробовал удалить WindowStyle и CreateNoWindow

Richard MacCutchan

Там нет ничего, что требовало бы повышенных разрешений.

1 Ответов

Рейтинг:
0

Dave Kreskowiak

Дочерний процесс наследует среду процесса, который его запустил. Если этот опубликованный вами код уже выполняется от имени администратора, то запущенный вами дочерний процесс унаследует его. Не было бы необходимости спрашивать разрешения, потому что они у него уже есть.

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


prakash9057

Это обычная учетная запись пользователя

Dave Kreskowiak

Хорошо, в этом случае вы должны запросить у пользователя учетные данные для входа в учетную запись, которую вам нужно использовать, а затем передать эти учетные данные в созданный вами экземпляр ProcessStartInfo, свойства имени пользователя и пароля. Вам вообще не нужна строка глагола "runas".