|
53 / 53 / 8
Регистрация: 21.03.2009
Сообщений: 371
|
|
сервис21.04.2011, 13:03. Показов 5302. Ответов 11
Метки нет (Все метки)
возник вопрос по созданию служб может кто сможет помочь?.Для создания процесса с одним сервисом,надо иметь 3
функции:main,servicemain,servicehandle.н аписал,получаю ошибку:служба запускается как приложение (ERROR_FAILED_SERVICE_CONTROLLER_CONNECT )в мэйн не использовались такие функции как:OpenSCManager,CreateService. я так понял что даже в етом случае прогу можно запустить как сервис,с помощью утилит sc,net start. как это сделать?? и второе,я использую фун OpenSCManager,CreateService.они вызываются в мэйн главного потока,значит если запустить прогу вторично то один и тот же сервис будет зарегистрирован дважды?кроме того,читаю:Созданная служба сразу не запускается,для этого нужно вызвать StartService.пересмотрел кучу примеров,нигде не видел использования функ StartService. люди не поленитесь,расскажите пожалуйста пошагово как это работает!!!!! Добавлено через 1 час 24 минуты вопрос с утилитами снимается,разобрался.а вот второй вопрос остался!
0
|
|
| 21.04.2011, 13:03 | |
|
Ответы с готовыми решениями:
11
WinXp сервис Интерактивный сервис (служба) Сервис поиска нужной функции |
|
59 / 59 / 2
Регистрация: 22.01.2011
Сообщений: 187
|
||||||
| 21.04.2011, 23:21 | ||||||
0
|
||||||
|
53 / 53 / 8
Регистрация: 21.03.2009
Сообщений: 371
|
||||||
| 22.04.2011, 15:34 [ТС] | ||||||
|
спасибо bobrovskii с твоим кодом буду разбираться.
я тут поторопился сказать,что вопрос с утилитами снимается,он все еще актуален! делаю так sc create Name binpath= Path_to_program теперь служба появилась в консоли и в консоли я нажимаю старт,ошибок никаких нет,но программа ничего не делает!!!!! а должна создать файл.Т.е я понимаю такчто при нажатии на старт,автоматически вызывается фун StartService(),или я ошибаюсь?
все,с утилитами разобрался проблема была в указании пути,где создавать лог файл. пришлось прописать полный путь где надо создавать лог файлДобавлено через 2 часа 44 минуты со второй частью вопроса тоже разобрался Служба не может вызвать StartService в ходе инициализации. Причина в том, что Диспетчер управления службами (SCM) в ходе инициализации блокирует базу данных управления службой, таким образом вызов StartService блокируется. Как только служба сообщает Диспетчеру управления службами (SCM), что она успешно запустилась, служба может вызвать StartService.
0
|
||||||
|
53 / 53 / 8
Регистрация: 21.03.2009
Сообщений: 371
|
||||||
| 27.04.2011, 17:24 [ТС] | ||||||
|
и сново сервис!
написал прогу(запускаю кликом по проге) часть программы:
но,сервис находится в консоли Службы и через эту консоль его можно запустить. КАК ИЗБАВИТЬСЯ ОТ ЭТОЙ ОШИБКИ????
0
|
||||||
| 27.04.2011, 17:50 | ||||||
Да, у вас тоже самое будет если эта служба и не установлена. Используйте аргументы командной строки.
0
|
||||||
|
53 / 53 / 8
Регистрация: 21.03.2009
Сообщений: 371
|
||||||
| 27.04.2011, 18:34 [ТС] | ||||||
|
ну хорошо,я использую ком строку
0
|
||||||
| 27.04.2011, 19:31 | ||||||
|
Ну так используйте что-то типа этого (не проверял)
0
|
||||||
|
53 / 53 / 8
Регистрация: 21.03.2009
Сообщений: 371
|
|
| 27.04.2011, 19:54 [ТС] | |
|
а в чем разница,между нашими кодами?суть осталась та же!
0
|
|
| 27.04.2011, 20:02 | |
|
Суть в том, что если выбран запуск или установка, то выполняется соответствующий код, а затем сразу выход (с ошибкой или без ошибки). А если программа запускается без ключа, значит она запускается как служба.
А вообще для этих целей (запуск, останов службы и т.д.) лучше написать отдельное приложение, если не устраивают существующие средства ОС.
0
|
|
|
53 / 53 / 8
Регистрация: 21.03.2009
Сообщений: 371
|
|
| 27.04.2011, 20:32 [ТС] | |
|
да,но можно ведь программно проверить есть ли такая служба,запущенна ли она,т.е все то что мы ждем от аргументов ком строки.И если использовать ключ,то мы всеравно доудем до StartServiceCtrlDispatcher.Т.е если все это делать в одном приложении этой ошибки не избежать?И нормальная практика это разбивание на два приложения?
1)создание сервиса,регистрация и выход(и если я не ошибаюсь,поскольку здесь произойдет ошибка по StartServiceCtrlDispatcher консоль сама не закроется!(а хотелось бы)) 2)и второе управляющая прога
0
|
|
| 28.04.2011, 05:48 | ||
|
Думаю можно все сделать и так, как выхотите (если я правильно понял): автоматическая регистрация и запуск службы, если она не установлена, или запуск службы, если она уже установлена. И при этом не использовать никаких аргументов командной строки. Но это будет довольно запутано потому, что нужно будет определять кто загружает образ файла в память (пользователь или диспетчер служб) и, соотвественно, решать как выполнять (как пользовательское приложение или как службу). Но таких примеров я, честно говоря, не встречал.
Обычно для этого используют аргументы командной строки и это наиболее распространенная практика. Конечно можно совместить управляющую программу со службой. Я вижу только один положительный момент этого варианта - возможность обойтись одним единственным файлом. Вполне нормальным вариантом будет вынести управление вашей службой в отдельное приложение. Посмотрите пример из MSDN The Complete Service Sample, примеры из книги Дж. Рихтера "Программирование серверных приложений для Microsoft Windows 2000" (легко ищутся в сети и сама книга и примеры к ней). Добавлено через 34 минуты
1
|
||
|
53 / 53 / 8
Регистрация: 21.03.2009
Сообщений: 371
|
|
| 01.05.2011, 20:38 [ТС] | |
|
Спасибо за помощь!
0
|
|
| 01.05.2011, 20:38 | |
|
Помогаю со студенческими работами здесь
12
Нужен совет - как отлаживать сервис ? Web-сервис на C++? Писать сервис на мобильные платформы стандартно (нативно, под каждую отдельно) или Qt/C++ (кросплатформенно)? Laravel расскажите про сервис провайдеры и сервис контейнеры Сервис для уведомлений. Ошибка на небольшом кол-ве клиентов. Сервис слишком занят, чтобы обработать запрос Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|