![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
altom |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 29.11.2013 Репутация: нет Всего: нет |
Приветствую всех.
Есть Windows служба:
Служба запускает другой процесс:
Этот процесс занимается снятием скриншотов:
Проблема заключается в том, что при работе под Windows XP приходится делать службу интерактивной (иначе на скриншоте получаем черный прямоугольник), а интерактивные службы могут быть запрещены на машине клиента. Но, коль скоро скриншоты делает не служба, а запущенный процесс, напрашивается вывод о том, что процесс наследует какие-то права службы, которые мешают ему получить доступ к консоли. При этом, даже в случае интерактивной службы, при отображении экрана приветствия получается черный прямоугольник. По некоторым причинам служба и дочерний процесс представлены одним exe файлом, но непосредственно функционал (запуск дочернего процесса и снятие скриншотов) расположен в dll (общей). Было сомнение по поводу того, что проблема может быть связана с загрузкой этой dll из сервиса и последующим использованием ее же в дочернем процессе, но разнесение функционала по разным dll не помогло. Возможно, я не стал бы биться над решением этой задачи, списал бы это на ограничения винды, если бы не TightVNC, которая производит аналогичные манипуляции, при этом не регистрируя сервис как интерактивный. Собственно, отсюда 2 вопроса: 1. Какие права нужно добавить/отобрать у процесса, чтобы его работа не зависела от настроек службы (если проблема в правах)? 2. Что может мешать получению скриншота с экрана приветствия? |
||||||
|
|||||||
Dik0n |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 11.5.2011 Репутация: 1 Всего: 10 |
На ХР точно работает (процесс запускается от мени пользователя) на 7ке не проверял.
--------------------
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ◄◄◄ Сотри монеткой защитный слой |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Начиная с Windows Vista все сервисы запускаются под своей собственной Window Station со своим собственным Desktop'ом, и изменить это вы не сможете. Более того, открыть любую пользовательскую сессию (Windows Station) от имени сервиса (LOCAL SYSTEM) вы тоже не сможете.
Выход - запускать процесс от имени конкретного пользователя и на его Window Station. См функцию CreateProcessWithLogonW (и не забудьте заполнить lpStartupInfo->lpDesktop) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |