Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как вызвать UAC когда мне это нужно?  (Прочитано 7881 раз)
0 Пользователей и 1 Гость смотрят эту тему.
dark_rain
Помогающий

ua
Offline Offline
Пол: Мужской

« : 02-12-2011 13:59 » 

Итак, есть программный продукт, которому иногда нужно обновлять свои файлы. Проблема в том, что при обновлении файлов в %SystemDisk%:\Program Files  я получаю access denied так как процессу не хватает привилегий. Как мне программно поднять диалог UAC для поднятия привилегий?

Найденные мной варианты: 
- править манифест - <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> (не вариант, так как будет каждый раз спрашивать права)
- ShellExecute с параметром runas (не вариант это делать самому себе, так как теряеться эстетика ну и непонятно что воообще Улыбаюсь )

Помогите советом "бородатого" программиста.
Записан
zubr
Гость
« Ответ #1 : 02-12-2011 15:47 » new

Цитата
не вариант это делать самому себе, так как теряеться эстетика ну и непонятно что воообще
Не понял. Ну если для тебя этот вариант не кошерен, то можешь попробовать через COM Elevation Moniker.
Ключевое слово "Elevation:Administrator!new" для поиска в MSDN, там вроде и пример был.
Записан
dark_rain
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #2 : 05-12-2011 08:01 » 

Сенкс за подсказку, но пока недра COM-a для меня не ясны, как следствие все сложно. Как бы ты сделал? ::ShellExecute(... , ...., "runas", ... )?
Записан
zubr
Гость
« Ответ #3 : 05-12-2011 09:54 » 

Ту часть программы, которая должна выполняться с админскими привилегиями, я бы выделил в отдельный программный блок (программу) и вызывал бы его через ShellExecute(... , ...., "runas", ... )

З.Ы. есть еще хакерский вариант - убить UAC нафиг Улыбаюсь
Записан
zubr
Гость
« Ответ #4 : 05-12-2011 11:27 » 

dark_rain, кстати, если речь только о копировании файлов, то можно в самой твоей программе создать батник где нибудь в папке темп, который будет копировать нужные тебе файлы, а затем удалит себя. И вызвать его через runas. Тогда не надо отдельных программ создавать.
Записан
dark_rain
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #5 : 05-12-2011 11:45 » 

О! сенкс, это идея, и доля эстетики в это есть)) Спасибо  zubr!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines