CreateProcess для запуска от имени администратора - PullRequest
2 голосов
/ 03 августа 2010

В моем приложении Win32 у меня есть возможность запускать дочерние процессы с перенаправленным вводом и выводом в анонимные каналы, которые я создаю и управляю - все это работает с функцией CreateProcess ().Однако на Win7 (и, вероятно, Vista), если этот процесс требуется для запуска с правами администратора, это не удается.Итак, я ищу способ сделать эквивалентную команду «Запуск от имени администратора» в проводнике, которая вызовет стандартное приглашение UAC и затем создаст процесс с повышенными разрешениями.Я видел статьи, в которых говорится об использовании опции «runas» для ShellExecute, но, как я понимаю, у меня нет элемента управления, который мне нужен для перенаправления ввода и вывода std в мои каналы.Есть предложения?

1 Ответ

2 голосов
/ 04 августа 2010

Если вы поместите манифест в дочернее приложение, и если вы используете ShellExecute для запуска, оно будет использовать манифест и появится приглашение UAC. (Я предпочитаю это подходу «runas» в большинстве случаев.) Это может позволить вам запустить приложение так, как вам нравится, не беспокоясь об UAC, и получить повышение от манифеста.

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

...