Для запуска приложения как службы необходима программа Non-Sucking Service Manager.
NSSM представляет из себя свободное программное обеспечение с открытым кодом и поддерживает все операционные системы Microsoft, начиная с Windows 2000 и заканчивая Windows 10. NSSM не требует установки, достаточно его загрузить и распаковать. В дистрибутив входят версии для 32- и 64-разрядных ОС. Взять программу можно с сайта nssm.cc.
Создание службы
Для создания службы с именем gedemin_service запускаем командную консоль, переходим в папку с распакованным NSSM (для 64-разрядной Windows) и вводим команду nssm install gedemin_service, которая открывает окно графического инсталлятора NSSM. Чтобы создать службу необходимо: в поле Path указать путь к исполняемому файлу программы, в поле Arguments указать сетевой путь к базе данных, а также аутентификационные данные пользователя. Например:
/sn «srv94:C:GoldengedemindatabaseMENU_FRONT.FDB» /user Import /password 123
Всё готово — можно нажать кнопку «Install service». Дополнительно в поле Options можно указать ключи, необходимые для запуска службы.
Path — полный путь к gedemin.exe;
Startup directory — путь к папке с файлом gedemin.exe;
Arguments — параметры, с которыми служба будет запускать gedemin.exe. Требуемый формат: /sn «:» /user /password . Больше о дополнительных параметрах можно узнать здесь.
Также на этапе создания новой службы можно указать некоторые дополнительные параметры.
На вкладке «Shutdown» перечислены методы остановки и таймауты, используемые при штатном завершении работы или аварийной остановке приложения. Когда NSSM получает команду остановки (напр. при завершении работы приложения), то он пытается остановить контролируемое приложение штатным образом. Если же приложение не отвечает, то NSSM может принудительно завершить все процессы и подпроцессы этого приложения.
Всего есть четыре этапа завершения работы приложения, и по умолчанию они будет использоваться в таком порядке:
- На первом этапе NSSM пытается сгенерировать и отправить событие Ctrl+C. Этот способ хорошо работает для консольных приложений или скриптов, но не применим для графических приложений;
- Затем NSSM определяет все окна, созданные приложением, и посылает им сообщение WM_CLOSE, инициирующее выход из приложения;
- Третьим этапом NSSM вычисляет все потоки, созданные приложением, и отправляет им сообщение WM_QUIT, которое будет получено если приложение имеет очередь сообщений потока;
- И в качестве последнего средства NSSM может вызвать метод TerminateProcess(), принудительно завершив работу приложения.
Возможно отключить некоторые или даже все методы, однако для разных приложений срабатывают разные методы и для корректного завершения работы приложения рекомендуется оставить все как есть.
Как открыть службы Windows 11 и Windows 10
По умолчанию при падении службы NSSM пытается рестартовать ее. На вкладке «Exit actions» можно изменить автоматическое действие при нештатном завершении работы приложения, а также выставить задержку перед автоматическим перезапуском приложения.
На вкладке «Input/Output (I/O)» можно задать перенаправление вводавывода приложения в указанный файл.
На вкладке «Environment» можно задать для службы новые переменные окружения, или переопределить существующие.
Также можно не пользоваться графической оболочкой и сразу создать службу в консоли такой командой:
nssm install gedemin_service ″d:Golden_Softwaregedemin.exe″
Управление службой
После создания службы с помощью NSSM зайдем в оснастку Services и найдем службу gedemin_service. Как видите, с виду она ничем не отличается от остальных служб, мы также можем ее запустить, остановить или изменить режим запуска. Однако обратите внимание, что в качестве исполняемого файла указан nssm.exe.
После запуска службы, зайдя в Task Manager, мы увидим: в качестве основного (родительского) процесса запущен NSSM, служба gedemin_service запущена как его дочерний процесс, так же запущено приложение «Гедымин».
Удаление службы
Для удаления службы вводим команду nssm remove gedemin_service и подтверждаем ее удаление. А введя команду nssm remove gedemin_service confirm, можно обойтись и без подтверждения.
Запуск нескольких задач одновременно
Специалист по внедрению и сопровождению Александр Моисеев поделился с нами решением проблемы, когда несколько служб запускаются одновременно:
на базе периодически отваливалась служба, созданная nssm для импорта продаж, которая запускалась раз в 5 минут. Причем, в определенный момент, служба «зависала» и функция, которую она должна была выполнять, не вызывалась, что доставляло проблемы для учета. Приходилось вручную перезапускать службу, но в определенный момент она снова «падала».
Что только не делалось: изучался лог винды на предмет посторонних операций. Менялось время активности функции импорта (автозадачи). Устанавливались разные параметры перезапуска в настройках nssm.
Оказывается: если на одного пользователя определено два и более задания через службу, то появляется комфликт, который мешает работе службы, причем он нигде не сохранял инфу (ни логе FB, ни где-то еще).
Решение пришло следующее: был добавлен новый пользователь с правами админа для запуска автозадачи и добавлена еще одна служба для архива (для указанного выше пользователя). Таким образом каждая автозадача разнесена на отдельную службу, созданную nssm и выполняемую под своим пользователем.
Кирилл Зезюлин
- ОАО “Горняк” успешно внедряет автоматизированную систему управления на платформе Гедымин
- Вакансия: Бизнес-аналитик с программистским бэкграундом
- Вышла новая версия GDMN Склад v1.4.0
- Вышла новая версия приложения GDMN Агент 0.9.2.
- Приглашаем всех друзей!
- Выпущена версия Агенты v 0.8.0
- Выпущена версия 2.9.6 платформы Гедымин
- Вакансия: Специалист по внедрению и сопровождению экономического ПО на платформе Гедымин
- Новая версия программы GDMN Агент
- Дайджест новостей компании за сентябрь 2022 г.
- Наш подкаст Gedemin and beyond
- Дайджест новостей компании за 21 июля — 31 августа 2022 г.
- Вакансия: разработчик на Delphi со знанием SQL
- Продлен мораторий на применение мер ответственности за неиспользование электронных накладных
- Стандарт ISO 20022 в Гедымине
- Сотрудничество с компанией «ВиЭфЭс Бай»
- Дайджест новостей компании за 19 июня — 20 июля 2022 г.
- Регистрация торговой марки Golden Software
- Дайджест новостей компании за 7 — 18 июня 2022 г.
- Дайджест новостей компании за 2 мая — 6 июня 2022 г.
Источник: gsbelarus.com
Запуск программы как службы windows 10
Можно ли запустить клиентское приложение в качестве службы? В одной из статей я описывал способы создания службы Windows штатными средствами ОС. Однако не каждое консольное приложение сможет запуститься как служба, а программы с графическим интерфейсом в принципе не умеют работать подобным образом. Но возможность запустить приложение как службу все же есть, и поможет нам в этом программа с оригинальным названием Non-Sucking Service Manager.
NSSM представляет из себя свободное программное обеспечение с открытым кодом и поддерживает все операционные системы Microsoft, начиная с Windows 2000 и заканчивая Windows 8. NSSM не требует установки, достаточно его загрузить и распаковать. В дистрибутив входят версии для 32- и 64-разрядных ОС. Взять программу можно с сайта nssm.cc, на данный момент последняя стабильная версия 2.21.1, которую я и буду использовать.
Для демонстрации возможностей NSSM попробуем запустить Блокнот Windows в качестве службы на Windows 8.1.
Создание службы
Для создания службы с именем notepad запускаем командную консоль, переходим в папку с распакованным NSSM (для 64-разрядной Windows) и вводим команду nssm install notepad , которая открывает окно графического инсталлятора NSSM. Чтобы создать службу, достаточно в поле Path указать путь к исполняемому файлу и нажать кнопку «Install service». Дополнительно в поле Options можно указать ключи, необходимые для запуска службы.
Также на этапе создания новой службы можно указать некоторые дополнительные параметры.
На вкладке «Shutdown» перечислены методы остановки и таймауты, используемые при штатном завершении работы или аварийной остановке приложения. Когда NSSM получает команду остановки (напр. при завершении работы приложения), то он пытается остановить контролируемое приложение штатным образом. Если же приложение не отвечает, то NSSM может принудительно завершить все процессы и подпроцессы этого приложения.
Всего есть четыре этапа завершения работы приложения, и по умолчанию они будет использоваться в таком порядке:
• На первом этапе NSSM пытается сгенерировать и отправить событие Ctrl+C. Этот способ хорошо работает для консольных приложений или скриптов, но не применим для графических приложений;
• Затем NSSM определяет все окна, созданные приложением, и посылает им сообщение WM_CLOSE, инициирующее выход из приложения;
• Третьим этапом NSSM вычисляет все потоки, созданные приложением, и отправляет им сообщение WM_QUIT, которое будет получено если приложение имеет очередь сообщений потока;
• И в качестве последнего средства NSSM может вызвать метод TerminateProcess(), принудительно завершив работу приложения.
Возможно отключить некоторые или даже все методы, однако для разных приложений срабатывают разные методы и для корректного завершения работы приложения рекомендуется оставить все как есть.
По умолчанию при падении службы NSSM пытается рестартовать ее. На вкладке «Exit actions» можно изменить автоматическое действие при нештатном завершении работы приложения, а также выставить задержку перед автоматическим перезапуском приложения.
На вкладке «Input/Output (I/O)» можно задать перенаправление вводавывода приложения в указанный файл.
На вкладке «Environment» можно задать для службы новые переменные окружения, или переопределить существующие.
Также можно не пользоваться графической оболочкой и сразу создать службу в консоли такой командой:
nssm install notepad ″C:Windowssystem32notepad.exe″
Управление службой
После создания службы с помощью NSSM зайдем в оснастку Services и найдем службу notepad. Как видите, с виду она ничем не отличается от остальных служб, мы также можем ее запустить, остановить или изменить режим запуска. Однако обратите внимание, что в качестве исполняемого файла указан nssm.exe.
А если зайти в Task Manager, то мы увидим следующую картину: в качестве основного (родительского) процесса запущен NSSM, служба notepad запущена как его дочерний процесс, и уже в этом дочернем процессе запущено приложение Блокнот.
Удаление службы
Для удаления службы вводим команду nssm remove notepad и подтверждаем ее удаление. А введя команду nssm remove notepad confirm , можно обойтись и без подтверждения.
Запуск службы в интерактивном режиме
Основное отличие пользовательского приложения от службы заключается в том, что после запуска приложение может требовать для продолжения работы дополнительных действий со стороны пользователя — например нажать кнопку или ввести команду. Для этого необходимо получить к нему доступ, что как оказывается, не так-то просто сделать.
Для того, чтобы запустить службу в интерактивном режиме, надо в оснастке Службы открыть ее свойства и на вкладке «Вход в систему» отметить чекбокс «Разрешить взаимодействие с рабочим столом».
А дальше начинаются чудеса Cлужба, запущенная в интерактивном режиме, открывается в изолированном сеансе (session 0). Попасть в этот сеанс можно только при помощи Службы обнаружения интерактивных служб (ui0detect), которая отслеживает запуск интерактивных служб на компьютере и выдает оповещение. В Windows 7Server 2008 эта служба активна по умолчанию, а в Windows 8Server 2012 она отключена и не отображается в графической оснастке Службы (по крайней мере я ее там не нашел). Более того, если вы все же найдете эту таинственную службу и попробуете ее запустить, то получите сообщение об ошибке.
А дело в том, что для ее запуска необходимо разрешить запуск интерактивных служб на компьютере. Поэтому открываем редактор реестра, находим в разделе HKLMSystemCurrentControlSetControlWindows параметр типа DWORD с именем NoInteractiveServices и ставим его значение в 0.
После чего открываем консоль PowerShell и стартуем службу обнаружения командой:
Start-Service -Name ui0detect
Убедившись что служба обнаружения запущена, рестартуем службу notepad, и получаем вот такое окошко. Выбираем пункт «Посмотреть сообщение»
и попадаем в нулевой сеанс, в котором работает наше приложение. Дальше производим с ним необходимые действия и возвращаемся обратно.
Такое вот интересное решение для запуска приложений в виде служб Windows. Не самое красивое, но вполне соответствующее своему названию
Windows, Программное обеспечение
Службы Windows — запущенные в фоне приложения, которые работают независимо от пользователя компьютера, и управляются непосредственно самой операционной системой. По умолчанию, службами являются строго определенные приложения, однако, ничто не мешает пользователю создать их самому. Выполнить данную задачу можно несколькими способами — с использованием стандартных средств Windows, либо с использованием сторонней программы NSSM.
SC
Входящая в Windows программа SC позволяет легко создавать службы Windows, а так же проводить другие различные с ними манипуляции — удаление, отключение, включение, и т. д. Создается служба достаточно просто, для этого достаточно запустить командную строку от имени администратора, и выполнить там следующую команду:
sc create [ИМЯ СЛУЖБЫ] binPath=[ПУТЬ К ИСПОЛНЯЕМОМУ ФАЙЛУ] DisplayName=[ОТОБРАЖАЕМОЕ ИМЯ СЛУЖБЫ] type=own start=auto
Удаляется же служба еще проще:
sc delete [ИМЯ СЛУЖБЫ]
Однако, у данного метода есть один большой существенный недостаток — с помощью данной утилиты создать службу можно только из программы, которая поддерживает работу службой. По этому, запустить какое попало приложение как службу данным способом не получится — но, можно воспользоваться сторонней утилитой NSSM, о которой речь пойдет ниже.
NSSM
- Предположим, нужно создать службу для веб-сервера nginx под Windows. Для этого, запускаем командную строку с правами администратора, и переходим в директорию с распакованным исполняемым файлом nssm.exe.
- Затем выполняем команду, начинающую установку службы:
nssm install nginx

На самой первой вкладке «Application«, в строке «Path» задается путь к исполняемому файлу, «Startup Directory» — рабочая директория, а «Arguments» — параметры запуска. В самом низу расположена строка «Service Name«, где задается имя создаваемого сервиса.

На вкладке «Details» можно задать имя, под которым будет отображаться создаваемая служба в списке служб, а так же описание службы, которое будет отображаться там же. В выпадающем списке «Startup Type» можно выбрать тип запуска службы.

Вкладка «Log on» позволяет указать пользователя, под которым будет запускаться служба.Заполним все нужные поля и выбрав нужные настройки, остается только нажать кнопку «Install service«, для установки службы.
Так же удалить службу можно с помощью команды в командной строке:
nssm remove [ИМЯ СЛУЖБЫ] confirm
Программа как служба или как превратить любую программу в службу на Windows
Рано или поздно, у простого пользователя или прожженого сисадмина возникает такая ситуация как: «Превратить программу в службу». Зачем это нужно, и в чем отличие. Если сильно не вдаваться в подробности то слушайте. Служба — это такое приложение , которое автоматически запускается при старте Windows, и работает в фоновом режиме. Сразу же поясняю что к чему.
По поводу автозапуска — не всегда пользователю требуется запуск службы автоматически со стартом системы, это всегда можно изменить и настроить как вам нужно. По поводу фоновой работы — эта такой способ работы приложения, при котором оно не взаимодействует с рабочем столом, т.е. не отображается.(Тихо и незаметно работает на своем месте) Столкнулся я с такой проблемой при подключении к базе данных 1С через Публикатор (Аналог 1С Линк) развернутый на Windows server 2012.
Все было отлично, программа работала и тихо раздавала базы, но случился маленький ньюанс. После выхода из пользователя , под которым была запущена программа, базы перестали раздаваться т.к. Публикатор завершил свою работу. Что же делать? Было решено сделать из программы Публикатор» — службу.
Тогда программа сможет работать постоянно, независимо от того, какой пользователь запущен. Сейчас я вам покажу, как просто, без каких либо крутых навыков превратить почти любую программу в службу. Во первых, нам потребуется программа под названием NSSM расшифровывается как Non-Sucking Service Manager. Скачать ее можно на официальном сайте: Ссылка на сайт Программы Прямая ссылка на скачивание программы : Прямая ссылка на скачку программы Скачав по ссылке, вы получите архив, внутри которого находиться:
Папки:
scr — папка с исходниками программы, вдруг вы захотите покапаться во внутренностях программы или переделать ее под себя.
win32 — папка с программой рассчитанной под операционную систему windows разрядностью 32 бита.
win64 — папка с программой рассчитанной под операционную систему windows разрядностью 64 бита.
Файлы:
ChangeLog.txt — файл с описанием изменений каждой версии программы.
README.txt — файл с описанием программы.
Теперь, когда мы познакомились с содержимым архива, приступим к установке. В зависимости от разрядности вашей системы 32/64 бита, выбираем папку с программой.(Если у вас разрядность системы 32 бита то выбираем win32, если 64 то win64). Переносим эту папку в корень диска с операционной системой(Желательно), и запускаем командную строку(Вызвать ее можно комбинацией клавиш Win+R, и в сплывающем окне набрать cmd и нажать OK)
Откроется командная строка,и в ней набираем команду cd и путь к программе nssm. Например:
Далее набираем команду — nssm install + имя будущей службы. Например:
И перед нами предстает окно программы nssm.
Расскажу коротко о настройках которые нам потребуются.
Path — в этом поле указываем путь к программе которую мы хотим переделать в службу(Обязательно).
Startup directory — директория нахождения программы(Обязательно).
Arguments — дополнительные параметры запуска программы(Не обязательно).
Service name — наименование будущей службы(Можно назвать как угодно, хоть MEGASLUZBA).
На этом в принципе все, дополнительных настроек не требуется.
После всех настроек нажимаем кнопку install service и запускаем диспетчер задач и наблюдаем нашу службу.
Перезагрузите компьютер, или запустите службу вручную из диспетчера задач. (Правой кнопкой мыши по службе — запустить)
P.S.на всякий случай,если у вас не работает стабильно ваша программа, то в разделе process, уберите галочку Console Windows.
Что бы внести изменения в вашу службу, запустите командную строку и введите команду: nssm edit + название вашей службы
Источник: windowser.ru
Запускаем приложение как системную службу
У вас когда-нибудь возникало желание запустить приложение как системную службу? И знаете ли вы, что приложение запущенное как служба, работает гораздо быстрее и занимает меньше места в памяти?
2023-06-01 17:25:37 02.12.2005 00:00, Сергей Миронов
У вас когда-нибудь возникало желание запустить приложение как системную службу? Думаю, что да, учитывая, что в некоторые программы такая возможность встроена по-умолчанию. А знаете ли вы, что приложение запущенное как служба, работает гораздо быстрее и занимает меньше места в памяти?
В этой статье мы рассмотрим небольшую утилиту Any Service, которая в два щелчка мышки, поможет запустить любое приложение как системную службу. Any Service является оболочкой двух стандартных утилит srvinstw и instsrv из комплекта Windows 2000 Server и для ее нормальной работы вам будут необходимы права Администратора.
Программа полностью бесплатна, занимает всего 49Кб и не требует установки. Интерфейс интуитивно понятен и снабжен детальными пояснениями в виде всплывающих подсказок.
Главное окно программы позволяет произвести первичные настройки вашей будущей службы:
В первом поле вводим полный путь к исполнительному файлу приложения, которое будет запускаться как служба. В графе «Имя службы» указываем, как будет называться наша служба. В «Описание службы» — любое понятное вам описание нового сервиса.
Далее можно проставить нужные галочки:
- Взаимодействие с рабочим столом — отметьте, если приложение имеет иконку в системном лотке;
- Автозапуск службы — отметьте, если хотите, чтобы сервис запускался автоматически;
- Запустить сразу после создания — отметьте, если хотите, чтобы служба запустилась сразу после ее создания;
Как пример работы утилиты, попробуем запустить в виде системной службы популярный файловый менеджер Total Commander.
После заполнения всех необходимых полей, нажимаем кнопку «Создать».
Все, новая служба создана и готова к работе. Можно посмотреть на результат своих действий, воспользовавшись кнопкой «Службы», которая открывает групповую оснастку.
Как видите, наша новая служба Total Commander запущена. Теперь вы можете изменять ее настройки также, как и у любой другой системной службы.
В случае, если вы захотите удалить службу, воспользуйтесь кнопкой «Удаление. » в главном окне программы. Перед вами откроется такое окно:
Находим нужную службу и жмем «Удалить». Больше сервиса Total Commander не существует.
Известные проблемы: перед первым запуском, желательно отключить антивирусную программу иначе дальнейшая работа программы будет невозможна, т.к. при первом запуске, она ищет обе утилиты ( srvinstw и instsrv ) в папке %WINDIR%System32 и если не находит, копирует их из собственного ресурса.
Источник: winlined.ru