Можно ли показать диалог UAC для одного потока в приложении? - PullRequest
2 голосов
/ 29 октября 2011

У меня есть метод, и я хочу запустить его с новым потоком с правами администратора,

[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
    void Install()
    {
      //do some thing
    }

Я запускаю его таким образом,

installerTh = new Thread(new ThreadStart(Install));
        installerTh.Name = "Installer";
        installerTh.Start();

, но выдает ошибку

Исключение System.Security.SecurityException не обработано

Сообщение = Запрос разрешения участника не выполнен.

Есть ли какие-либо идеи, чтобы показать окно UAC перед запуском этого потока?(или в середине выполнения процесса)

1 Ответ

4 голосов
/ 29 октября 2011

UAC - это все или ничего.Вы не можете применить приглашение UAC к одному потоку, только к процессу.Что вам нужно сделать, это запустить ваше приложение с помощью специальной командной строки, используя UAC, и командная строка позволит вам узнать, какой поток вы хотите запустить.Это не обязательно должна быть командная строка, вы можете использовать любой тип IPC, чтобы уведомить порожденный процесс о запуске потока.Я написал ответ о запуске процесса под UAC здесь .

Возможно, вы также захотите получить сертификат подписи кода, чтобы диалоговое окно UAC не повторяло «Неизвестно»publisher.

Обновление: На основании приведенного выше комментария вы также не можете применить UAC к текущему процессу, только к новому процессу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...