пятница, 8 июня 2007 г.

Опять процесс идёт / Vista UAC

Среда и четверг немного взбодрили меня. Я опять много пишу, пробую, отлаживаю.
За эти два дня поборол следующую проблему. В всеми нами любимой Висте новая система управления аккаунтами и привелегиями пользователей UAC. Помогла мне немного понять её эта статья. Задача банальная была. Пользователь состоит в группе администраторов и моё приложение должно им запускаться с правами админа. По умолчанию в Висте оно запускается с минимальными (или какими-то нормальными) правами. Можно правда делать правый клик и выбирать Run As Administrator. Но это не хорошо, понятно думаю.
Я привожу далее решение, которое работает у меня. Может оно и не самое правильное. Но оно работает.
  1. Создаём в корне проетка файл с манифестом, пример которого есть в статье. Исправим там имя exe и его описание.
  2. В VS пишем путь к бинарникам из последнего Platform SDK (для Висты). Среди этих бинарников есть файл mt.exe, который и будет внедрять манифест в exe.
  3. В постбилд событиях для проекта пишем что-то типа

    mt.exe –manifest MyApp.exe.manifest -outputresource:$(TargetPath);1


Смотрим теперь в Висте (огромное спасибо VMware) и видим этот маленький щит на иконке файла приложения. Запускаем дабл-кликом и але-оп - окно с предложением предоставить права админа.
В этот же манифест добавляйте всё, что нужно. Например, я сперва забыл туда дописать, что приложению нужны comctrls минимум версии 6.0 (для отслеживания нажатия кнопок на PropertySheet). Долго искал в чём бок, пока не понял, что бок в манифесте.
Немного ссылок:

Комментариев нет: