Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2013, 10:16   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию UAC, автозагрузка и ПО

Доброго времени суток!

Есть программа, которой требуется запуск с правами администратора.
Через манифест, оно их и так просит.

Если поставить ПО в автозагрузку, то ПО не запускается. Сталкивался кто-либо с этим?
ПО ставлю в текущий профиль юзера.

Последний раз редактировалось Человек_Борща; 11.10.2013 в 10:19.
Человек_Борща вне форума Ответить с цитированием
Старый 11.10.2013, 10:42   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Напрямую, насколько мне известно - никак.
Сделайте ваше приложение службой (service) а в автозагрузку ставьте клиент, который будет слать заявки этой службе.
Либо запускайте ваше приложение как обычное а после запуска оно само перезапускается с требованием привилегий. Конечно, будет досадно, ибо при каждом логине будет вылезать UAC.
Ну и третий вариант - сделайте ваше приложение обычным а привилегии требуйте только когда понадобится.
waleri вне форума Ответить с цитированием
Старый 11.10.2013, 11:05   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Цитата:
Ну и третий вариант - сделайте ваше приложение обычным а привилегии требуйте только когда понадобится.
Самый оптимальный вариант, мне не нужны привилегии везде. Можно подробнее, как это делать?
Человек_Борща вне форума Ответить с цитированием
Старый 11.10.2013, 11:22   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Запускать вторую копию процесса с требованием привилегий.
ShellExecute или ShellExecuteEx с командой runas.

Либо можно сделать два ЕХЕ файла с разными манифестами.

Ну а передачу параметров делайте как вам удобно...
waleri вне форума Ответить с цитированием
Старый 11.10.2013, 13:43   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

waleri, нет-нет, можно как-то дляпотока в момент X, на время Y получить привелегии, а затем вернуть их.
Человек_Борща вне форума Ответить с цитированием
Старый 11.10.2013, 14:12   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Нет.
Для этого нужно получить access token с нужными правами а его негде взять.
В теории LogonUser() дает primary token но под UAC он тоже ограничен. Кроме того, для этого надо знать пароль администратора, что не есть гут.
А для чего нужны привилегии? Может это можно решить другим способом - назначением прав доступа например.
waleri вне форума Ответить с цитированием
Старый 11.10.2013, 15:16   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Нет.
Для этого нужно получить access token с нужными правами а его негде взять.
В теории LogonUser() дает primary token но под UAC он тоже ограничен. Кроме того, для этого надо знать пароль администратора, что не есть гут.
А для чего нужны привилегии? Может это можно решить другим способом - назначением прав доступа например.
можно получать привилегии на время, это делается через какой то COM-объект.
сейчас порою инфу по этому.

----------------------------------------------------

порыл, на данный момент вижу лишь все варианты с отдельным файлом(exe или COM-dll)
http://mda-delphi.blogspot.ru/2009/0...-delphi-3.html
http://msdn.microsoft.com/en-us/library/bb756922.aspx
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 11.10.2013 в 15:25.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.10.2013, 15:44   #8
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Да, можно, через out of proc COM объект, который зарегистрирован как сервис.
Иными словами, нужно будет либо второй ЕХЕ файл, либо как минимум вторая копия процесса (которая запустится как сервис).
waleri вне форума Ответить с цитированием
Старый 27.10.2013, 03:22   #9
fucil
Форумчанин
 
Регистрация: 24.02.2010
Сообщений: 148
По умолчанию выход есть

Вижу 2 возможных варианта:
1) Сбросить UAC
2) инжек либы в процес с правами админа и работать там !
fucil вне форума Ответить с цитированием
Старый 27.10.2013, 11:51   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Вижу 2 возможных варианта:
Эти варианты опасны.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CreateProcess и UAC XeruH Общие вопросы Delphi 0 02.04.2013 22:16
uac manifest fucil Общие вопросы Delphi 3 10.05.2012 02:02
Автозагрузка, каталог "Автозагрузка" создается повторно (Win7 x32) MyIE Общие вопросы Delphi 10 29.03.2012 07:49
Delphi vs UAC dyonysos Общие вопросы Delphi 0 02.05.2010 20:02