Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
HardMorg
3 / 26 / 3
Регистрация: 29.08.2010
Сообщений: 204
#1

Сервис - C++

08.07.2013, 20:02. Просмотров 620. Ответов 11
Метки нет (Все метки)

у меня есть приложение, которое делает скрин монитора и отправляет подключенным к нему компам
Но проблема стоит в следующем когда я запускаю это приложение как сервис
то все скрины черные.
как тут разрешить? предполагаю что с правами доступа наверное?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2013, 20:02     Сервис
Посмотрите здесь:

Препод задал повторить сервис на с++ C++
C# и сервис no-ip C#
сервис C++ WinAPI
VPN сервис Сети
Delphi web-сервис
Сервис-инженер
C++ Builder Смс сервис
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
Эксперт С++
15099 / 6794 / 1073
Регистрация: 02.05.2013
Сообщений: 11,105
Завершенные тесты: 1
08.07.2013, 21:02     Сервис #2
В Windows службы по умолчанию запускаются в отдельной, неинтерактивной рабочей станции, а
на Vista и выше - вообще в отдельной сессии. Так что делать из службы скриншот бессмысленно,
она работает в изолированном от пользователя окружении. Так было сделано намерено, в
целях безопасности.

Добавлено через 7 минут
Цитата Сообщение от Убежденный Посмотреть сообщение
неинтерактивной рабочей станции
Опечатался. Правильно "оконной станции".
HardMorg
3 / 26 / 3
Регистрация: 29.08.2010
Сообщений: 204
08.07.2013, 21:02  [ТС]     Сервис #3
Спасибо, хм, как можно по другому поступить?
или как это объяснить преподавателю?
Убежденный
Системный программист
Эксперт С++
15099 / 6794 / 1073
Регистрация: 02.05.2013
Сообщений: 11,105
Завершенные тесты: 1
08.07.2013, 21:04     Сервис #4
Цитата Сообщение от HardMorg Посмотреть сообщение
Спасибо, хм, как можно по другому поступить?
Отказаться от службы. Если нужно, чтобы приложение стартовало автоматически,
поместить его в обычную автозагрузку.
HardMorg
3 / 26 / 3
Регистрация: 29.08.2010
Сообщений: 204
08.07.2013, 21:10  [ТС]     Сервис #5
по заданию было что бы как службой было...
Убежденный
Системный программист
Эксперт С++
15099 / 6794 / 1073
Регистрация: 02.05.2013
Сообщений: 11,105
Завершенные тесты: 1
08.07.2013, 21:20     Сервис #6
Цитата Сообщение от HardMorg Посмотреть сообщение
по заданию было что бы как службой было...
Значит, задание было составлено людьми, плохо представляющими себе
архитектуру и назначение служб Windows.

Но если очень надо, можно сделать так: отлавливать в службе моменты входа
пользователей в систему, затем создавать в соответствующих сессиях интерактивные
процессы, которые будут делать скриншоты. Что технически намного сложнее того
решения с автозапуском, которое я приводил выше, а по смыслу это одно и то же,
только в первом случае Вам нужно лишь добавить одну запись в реестр, а во
втором - разбираться со служами терминалов и WTS-функциями, отслеживать
состояние сессий, работать с токенами безопасности и т.п.

Кстати, Вам могут посоветовать добавить в конфигурацию службы флаг
SERVICE_INTERACTIVE_PROCESS, он же галочка "разрешить взаимодействие с рабочим
столом" в ее настройках. Не слушайте этих "советчиков", данный способ будет работать
только на системах до Vista и только для первого пользователя, вошедшего в систему.
HardMorg
3 / 26 / 3
Регистрация: 29.08.2010
Сообщений: 204
08.07.2013, 21:34  [ТС]     Сервис #7
Я правильно вас понял? в сервисе мы просто запускаем другое приложение?
Убежденный
Системный программист
Эксперт С++
15099 / 6794 / 1073
Регистрация: 02.05.2013
Сообщений: 11,105
Завершенные тесты: 1
08.07.2013, 21:44     Сервис #8
Цитата Сообщение от HardMorg Посмотреть сообщение
в сервисе мы просто запускаем другое приложение?
Если "просто" запустить, новое приложение унаследует контекст безопасности службы,
как любой процесс это делает от своего родительского процесса. Проще говоря,
никаких скриншотов и там Вы увидеть не сможете.

Так что здесь нужно сначала оследить вход пользователя в систему и узнать ID сессии, в
которой он залогинился, затем дождаться, пока сессия придет в активное состояние,
затем, имея ID пользователя, получить у системы его маркер безопасности, и только
потом с этим маркером создать новый процесс. А еще учесть, что первый вход в
систему может произойти до запуска службы. А еще учесть, что некоторые функции
на ранних стадиях загрузки системы не работают, нужно будет дождаться запуска
службы удаленных рабочих столов. А еще... И так далее, и тому подобное.
Думаете, оно того стоит ?
HardMorg
3 / 26 / 3
Регистрация: 29.08.2010
Сообщений: 204
08.07.2013, 21:49  [ТС]     Сервис #9
Думаю нет, не стоит.....
хмм но вот мне вспомнилось... есть же всякие приложения для удаленного управления столом, тимвивер и другие
и на сколько я знаю они тоже скрины передают... но там значить это не в службе?
Убежденный
Системный программист
Эксперт С++
15099 / 6794 / 1073
Регистрация: 02.05.2013
Сообщений: 11,105
Завершенные тесты: 1
08.07.2013, 21:55     Сервис #10
Цитата Сообщение от HardMorg Посмотреть сообщение
есть же всякие приложения для удаленного управления столом, тимвивер и другие
и на сколько я знаю они тоже скрины передают... но там значить это не в службе?
Нет. TeamViewer и Ammyy Admin, например - это обычные десктопные приложения.
HardMorg
3 / 26 / 3
Регистрация: 29.08.2010
Сообщений: 204
08.07.2013, 21:57  [ТС]     Сервис #11
Убежденный, я спросил.... ответили что нужно копать в сторону терминальных сессий( то что ВЫ и говорили), не подскажете где про это почитать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2013, 22:14     Сервис
Еще ссылки по теме:

WEB сервис PHP
Антивирусный сервис
Подскажите сервис карт с API под C++ C++
сервис u-on.ru PHP
Поднять asmx-сервер и клиентом на C++ достучаться до методов сервака (как добавить ссылку на веб-сервис?) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Убежденный
Системный программист
Эксперт С++
15099 / 6794 / 1073
Регистрация: 02.05.2013
Сообщений: 11,105
Завершенные тесты: 1
08.07.2013, 22:14     Сервис #12
В MSDN.
Yandex
Объявления
08.07.2013, 22:14     Сервис
Ответ Создать тему
Опции темы

Текущее время: 09:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru