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

Сервис - C++

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

Препод задал повторить сервис на с++ C++
C# и сервис no-ip C#
сервис C++ WinAPI
SMS сервис Pascal ABC
Подскажите сервис карт с API под C++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14200 / 6215 / 986
Регистрация: 02.05.2013
Сообщений: 10,358
Завершенные тесты: 1
08.07.2013, 21:02     Сервис #2
В Windows службы по умолчанию запускаются в отдельной, неинтерактивной рабочей станции, а
на Vista и выше - вообще в отдельной сессии. Так что делать из службы скриншот бессмысленно,
она работает в изолированном от пользователя окружении. Так было сделано намерено, в
целях безопасности.

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

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

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

Так что здесь нужно сначала оследить вход пользователя в систему и узнать ID сессии, в
которой он залогинился, затем дождаться, пока сессия придет в активное состояние,
затем, имея ID пользователя, получить у системы его маркер безопасности, и только
потом с этим маркером создать новый процесс. А еще учесть, что первый вход в
систему может произойти до запуска службы. А еще учесть, что некоторые функции
на ранних стадиях загрузки системы не работают, нужно будет дождаться запуска
службы удаленных рабочих столов. А еще... И так далее, и тому подобное.
Думаете, оно того стоит ?
HardMorg
2 / 25 / 3
Регистрация: 29.08.2010
Сообщений: 204
08.07.2013, 21:49  [ТС]     Сервис #9
Думаю нет, не стоит.....
хмм но вот мне вспомнилось... есть же всякие приложения для удаленного управления столом, тимвивер и другие
и на сколько я знаю они тоже скрины передают... но там значить это не в службе?
Убежденный
Системный программист
 Аватар для Убежденный
14200 / 6215 / 986
Регистрация: 02.05.2013
Сообщений: 10,358
Завершенные тесты: 1
08.07.2013, 21:55     Сервис #10
Цитата Сообщение от HardMorg Посмотреть сообщение
есть же всякие приложения для удаленного управления столом, тимвивер и другие
и на сколько я знаю они тоже скрины передают... но там значить это не в службе?
Нет. TeamViewer и Ammyy Admin, например - это обычные десктопные приложения.
HardMorg
2 / 25 / 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     Сервис
Еще ссылки по теме:

сервис u-on.ru PHP

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

Или воспользуйтесь поиском по форуму:
Убежденный
Системный программист
 Аватар для Убежденный
14200 / 6215 / 986
Регистрация: 02.05.2013
Сообщений: 10,358
Завершенные тесты: 1
08.07.2013, 22:14     Сервис #12
В MSDN.
Yandex
Объявления
08.07.2013, 22:14     Сервис
Ответ Создать тему
Опции темы

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