2010-08-03 3 views
2

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

+0

Возможно, это невозможно. Можете ли вы изменить дочернее приложение? – adf88

ответ

2

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

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

Смежные вопросы