Clarion Application as Windows NT Service

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Developer
Ветеран
Сообщения: 551
Зарегистрирован: 26 Март 2012, 17:18

Clarion Application as Windows NT Service

Сообщение Developer »

Admin спасибо за ссылку!

К сожалению, я пока не настолько хорошо владею C++ и Clarion, чтобы быстро реализовать (конвертировать) алгоритм на языке программирования С++ в код языка программирования Clarion.

Если бы владел в совершенстве, то и данного вопроса не было бы в принципе. :D

Примеров на C++ достаточно, вот только в код Clarion преобразовать бывает проблематично :?
(особенно когда нет опыта и глубоких знаний обоих языков программирования).

А пока, по мере возможностей, пробую решить задачу самостоятельно. :)
С Уважением, Developer
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Clarion Application as Windows NT Service

Сообщение Admin »

Developer писал(а): А пока, по мере возможностей, пробую решить задачу самостоятельно.
Добавил простые процедуры NTStartService, NTStopService в шаблон. Включаются галкой "Support /Start AND /Stop" на закладке "Install/Remove". Соответственно добавляют ключи /Start и /Stop.
Нет проверок ошибок, проверок того что сервис не запущен или уже остановлен. Проверок что сервис находится в режиме запуска, остановки или удаления.
По хорошему все нужно отслеживать. Но писать все это вам.
На самом деле все легко. Читайте. Учитесь. Задавайте вопросы.
Вложения
apiNTServices.zip
(10.34 КБ) 153 скачивания
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Developer
Ветеран
Сообщения: 551
Зарегистрирован: 26 Март 2012, 17:18

Clarion Application as Windows NT Service

Сообщение Developer »

Admin благодарю за модификацию шаблонов! Всё работает отлично! :D

Старт службы в моих опытах используя SCM получился, а вот остановка нет :(

Да согласен, все проверки, если делать полнофункциональный шаблон должны быть.

В принципе они уже существуют в шаблоне, их только необходимо применить к данным опциям старта и остановки службы.

Попробую сам модифицировать уже твои модифицированные шаблоны добавив пункты меню
пуска и остановки службы.


Когда есть хорошие знания и опыт с C (C++) то решение на Clarion выходят быстро. :D
С Уважением, Developer
Developer
Ветеран
Сообщения: 551
Зарегистрирован: 26 Март 2012, 17:18

Clarion Application as Windows NT Service

Сообщение Developer »

Вопрос: как сделать создание и запуск службы (ABCFree apiNTServices) без значения SERVICEPATH в переменной Executable (в реестре ImagePath)?

Если меняешь с
Executable=CLIP(Executable) & ' SERVICEPATH=' & PATH() ! apiNTServices (ABC Free) Оригинал
на Executable=CLIP(Executable) то без ' SERVICEPATH=' & PATH() служба не стартует :(

Если не использовать пункт меню (опция) Use current EXE а указать конкреный путь файла тогда всё работает.

Но необходимо именно использование текущего (Use current EXE) без строки SERVICEPATH в переменной Executable (в реестре ImagePath).


С чем связано применение SERVICEPATH (путь к службе) когда практически все службы не используют параметр SERVICEPATH?
С Уважением, Developer
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Clarion Application as Windows NT Service

Сообщение Admin »

А для чего используете опцию "Support Dual Use EXE" ?
Она включает использование:

Код: Выделить всё

   #IF(%ServiceDualUse)
   Executable=CLIP(Executable) & ' SERVICEPATH=' & PATH()              #<! %ABCFreeTemplate (ABC Free)
   #ENDIF
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Developer
Ветеран
Сообщения: 551
Зарегистрирован: 26 Март 2012, 17:18

Clarion Application as Windows NT Service

Сообщение Developer »

Admin писал(а): А для чего используете опцию "Support Dual Use EXE" ?
Необходимо использовать один и тот-же еxe как в качестве службы так и в качестве обычного приложения
С Уважением, Developer
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Clarion Application as Windows NT Service

Сообщение Дед Пахом »

насколько я понимаю, у сервисов каталог запуска это что-то вроде c:\windows\system32
С уважением, ДП
Developer
Ветеран
Сообщения: 551
Зарегистрирован: 26 Март 2012, 17:18

Clarion Application as Windows NT Service

Сообщение Developer »

Дед Пахом писал(а): насколько я понимаю, у сервисов каталог запуска это что-то вроде c:\windows\system32
Для системных в основном да, для остальных произвольный.
С Уважением, Developer
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Clarion Application as Windows NT Service

Сообщение Дед Пахом »

Developer писал(а): для остальных произвольный.
да ладно... запусти свой сервис и посмотри, что LONGPATH() вернёт.
С уважением, ДП
Developer
Ветеран
Сообщения: 551
Зарегистрирован: 26 Март 2012, 17:18

Clarion Application as Windows NT Service

Сообщение Developer »

Дед Пахом писал(а):
Developer писал(а): для остальных произвольный.
да ладно... запусти свой сервис и посмотри, что LONGPATH() вернёт.
Путь к exe службы (сервиса Windows NT) обычно указан в ключе реестра "ImagePath"

К примеру:

Служба поддержки Mozilla Firefox:
"ImagePath"="C:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe"

Код: Выделить всё

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MozillaMaintenance]
"Type"=dword:00000010
"Start"=dword:00000003
"ErrorControl"=dword:00000001
"ImagePath"=hex(2):22,00,43,00,3a,00,5c,00,50,00,72,00,6f,00,67,00,72,00,61,00,\
  6d,00,20,00,46,00,69,00,6c,00,65,00,73,00,20,00,28,00,78,00,38,00,36,00,29,\
  00,5c,00,4d,00,6f,00,7a,00,69,00,6c,00,6c,00,61,00,20,00,4d,00,61,00,69,00,\
  6e,00,74,00,65,00,6e,00,61,00,6e,00,63,00,65,00,20,00,53,00,65,00,72,00,76,\
  00,69,00,63,00,65,00,5c,00,6d,00,61,00,69,00,6e,00,74,00,65,00,6e,00,61,00,\
  6e,00,63,00,65,00,73,00,65,00,72,00,76,00,69,00,63,00,65,00,2e,00,65,00,78,\
  00,65,00,22,00,00,00
"DisplayName"="Mozilla Maintenance Service"
"WOW64"=dword:00000001
"ObjectName"="LocalSystem"
"Description"="Служба поддержки Mozilla гарантирует, что на вашем компьютере всегда будет стоять самая новая и наиболее безопасная версия Mozilla Firefox. Своевременное обновление Firefox очень важно для обеспечения вашей безопасности в Интернете, поэтому Mozilla настоятельно рекомендует вам держать эту службу включённой."

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MozillaMaintenance\Security]
"Security"=hex:01,00,14,80,a4,00,00,00,b0,00,00,00,14,00,00,00,30,00,00,00,02,\
  00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,\
  00,00,02,00,74,00,05,00,00,00,00,00,18,00,bd,00,02,00,01,02,00,00,00,00,00,\
  05,20,00,00,00,21,02,00,00,00,00,14,00,fd,01,02,00,01,01,00,00,00,00,00,05,\
  12,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,20,\
  02,00,00,00,00,14,00,8d,01,02,00,01,01,00,00,00,00,00,05,04,00,00,00,00,00,\
  14,00,8d,01,02,00,01,01,00,00,00,00,00,05,06,00,00,00,01,01,00,00,00,00,00,\
  05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00



Служба удалённого реестра:
"ImagePath"=%SystemRoot%\system32\svchost.exe -k regsvc


У меня сервис стартует из каталога "ImagePath"="C:\Program Files\AppFolderName\Application.exe"

Функция Clarion LONGPATH() возвращает значение C:\Program Files\AppFolderName
С Уважением, Developer
Ответить