UAC спрашивает разрешение программно - PullRequest
1 голос
/ 04 октября 2010

У меня есть приложение, которое использует файл COM. Иногда этот файл не был зарегистрирован regsvr32, и я хотел бы запрограммировать функцию, которая, если файл не может быть загружен, пытается зарегистрировать его и повторить попытку. Для этого мне потребуются права администратора, поэтому я хотел бы спросить, есть ли способ показать пользователю вопрос «Запуск от имени администратора» в то время, чтобы иметь права на регистрацию файла и затем отключить его. (если возможно, в противном случае он будет запускаться «нормально» при следующем выполнении приложения). Сейчас я просто планирую запустить еще одну программу с установленным манифестом для запуска от имени администратора, но я видел некоторые установки, которые запускаются без запроса разрешения администратора, и когда запускается индикатор выполнения, они показывают вопрос UAC пользователю, поэтому хотел бы сделать что-то подобное. Есть ли функция или библиотека Win32 API для этого?

Спасибо

1 Ответ

1 голос
/ 04 октября 2010

Ваш подход правильный. Невозможно поднять процесс. Вы запущены с повышением или нет, и вы остаетесь таким на протяжении всего процесса. Чтобы достичь того, чего вы хотите, вы должны запустить другой процесс и запустить его с повышенными правами. Ваше основное приложение остается неизменным. Запрос UAC появится при запуске второго процесса. Для удобства пользователей у вас должна быть кнопка или пункт меню для запуска, и у этого элемента должен быть щит. Таким образом, пользователь не удивлен. Если вы обнаружите программным способом, что вам нужно запустить, по крайней мере, сначала сделайте окно с сообщением «Я обнаружил, что вам нужно установить XYZ, с вами все в порядке?» и поместите щит на OK, без щита на Cancel, и если они нажмут OK, запустите проявленное приложение. Это вызовет приглашение UAC, и пользователь будет ожидать его.

...