Форум: "WinAPI";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
ВнизЗапуск прог из сервиса Найти похожие ветки
← →
Goryn (2006-01-28 14:15) [0]После переделки в сервис, моя панель для запуска программ
перестала работать-
причина проги пускает под другим sexrity :)
описание ненашел ,чтоб добавить права Explorer
чтоб подним запускалось
Кривая идея - открыть папку с прогой ,
найти иконку приложения и программно
кликнуть мышью и прога запускится под Explorerом
в сервисе запускаю проги так
Start := CreateProcess(nil,
Exe,
nil, <-sexrity
nil,
← →
kaZaNoVa © (2006-01-28 16:41) [1]запускать или через
CreateProcessWithLogonW
(надо знать пароль пользователя) или через внедрение DLL в любой процесс, УЖЕ запущенный от имени пользователя и запуск проиграммы уже из той DLL (не рекомендуется).
← →
kaZaNoVa © (2006-01-28 16:53) [2]Goryn (28.01.06 14:15)
права Explorer
чтоб подним запускалосьExplorer
может быть запущен от имени кого угодно ..
обычно же в нормальной системе он запускается от имени текущего залогинившегося пользователя ..
как вариант можно еще попробовать сервис запускать в интерактивном режиме, но нет уверенности что это будет работать так как надо.
если же нужно именно чтобы "под Explorer" запускалось - лучший выход - добавить автозагружаемую (через реестр) DLL в него ..
← →
Goryn (2006-01-28 18:08) [3]>через CreateProcessWithLogonW (надо знать пароль пользователя)
пардон,незнаю пароль,я сервис
>Explorer может быть запущен от имени кого угодно ..
в данном случае текущего пользателя,
тосесть как то надо ПОНИЗИТЬ ПРАВА запускаемого процесса
Start := CreateProcess(nil,
Exe,
nil, <-sexrity
ситуация напоминает мощь NT - сильные права ,но ничего нельзя сделать ))))
← →
kaZaNoVa © (2006-01-28 18:15) [4]Goryn (28.01.06 18:08) [3]
ПОНИЗИТЬ ПРАВА запускаемого процесса
понизить права?) а это вообще, возможно? скорее всего надо запускать под другой учётной записью, которая и имеет другие права ..
← →
kaZaNoVa © (2006-01-28 18:19) [5]Goryn (28.01.06 18:08) [3]
галочку поставить в настройке службы. (так и называется "разрешить взаимодействие с рабочим столом)
- такое пробовали?)
← →
kaZaNoVa © (2006-01-28 18:46) [6]исчо можно попробовать:
1)WTSEnumerateSessionsA
2)перебор хэндлов сессий и подсовывание их в WTSQueryUserToken
3)полученные UserTokens используем в CreateProcessAsUser, которая запускает
энумератор в контексте требуемого юзверь-пространства.
Учти, WTSEnumerateSessions будет выдавать валидные идентификаторы для
сессий,отличных от Console только если на сервере установлены Terminal
Services.
← →
Goryn (2006-01-29 02:09) [7]>галочку поставить в настройке службы.
такое непробывал,хотелось программно
>исчо можно попробовать:
ага буду разбираться , копать
спасибо
← →
Набережных С. © (2006-01-29 07:38) [8]
> kaZaNoVa © (28.01.06 18:46) [6]
Перебирать сессии не надо, надо использовать WtsGetActiveConsoleSessionID. И если для этого ID WTSQueryUserToken вернет ошибку, то это значит, что интерактивного пользоавтеля нет.
> WTSEnumerateSessions будет выдавать валидные идентификаторы
> для
> сессий,отличных от Console только если на сервере установлены
> Terminal
> Services
А также, если задействован Fast User Switching
> Goryn (28.01.06 14:15)
Вероятно, потребуется отслеживать переключения пользователей. См. WTSRegisterSessionNotification. Также учти, вся эта кухня не будет работать в системах ниже WinXP.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c