Как сделать программу как службу

В этой маленькой статье я попытаюсь рассказать как добавить свою службу в операционной системе Windows.
И так для начала нам понадобится программа nssm (ссылка для скачивания) именно эта программа умеет добавлять службы, однако у неё есть недостатки: запуск службы происходит непосредственно через неё то есть мы должны будем постоянно держать ее включенной (хотя она потребляет небольшое количество оперативной памяти). В то же время именно эта особенность позволяет ей запускать практически любые программы в качестве службы (у большинства программ отсутствует поддержка их запуска в качестве службы).
Для начала скачаем саму программу с официального сайта.
Распаковываем архив и перемещаем программу nssm.exe (просто копируем бинарник в зависимости от того какой у вас Windows 32 или 64 бит, 32 битную можно использовать в обоих случаях) какую-нибудь постоянную директорию откуда мы ещё и будем запускать, например я помещу в директорию C:Program Files (x86)nssmnssm.exe

Уроки C# – Создаём свою службу Windows


От этой директории будут зависеть все последующие команды.
Теперь нам нужно запустить командную строку, быстро это можно сделать так: Win + R и набрать cmd после чего нажать клавишу Enter.
Теперь в командной строке вводим:

cd C:Program Files (x86)nssm nssm.exe install

Программа попросит у нас права администратора для установки службы и появится окошко для указания название службы (Service name) и пути к программе (Path) и другие настройки если они вам нужны. После указания название службы и пути к программе нажимаем кнопку Install service, и у нас должно быть появится окошко подтверждающие что служба установлена в противном случае будет написано ошибка и причина которой она вызвана.

Но установленная служба еще не запущена, запустите ее можно, например перезагрузив компьютер или вручную для этого нажимаем сочетание клавиш Win + R вводим services.msc и нажимаем клавишу Enter. Находим нашу службу кликаем по ней правой кнопкой и выбираем пункт запустить.

Читайте также:
Как изменить исходник программы

Источник: cool-comp.ru

Запуск приложения Гедымин в виде службы Windows

Для запуска приложения как службы необходима программа 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 можно указать ключи, необходимые для запуска службы.

Конечно, для реализации подобного сценария можно создать и задание в планировщике (Task Scheduler), но если вам нужно реагировать на любые изменения в реальном времени, метод с отдельной службой гораздо правильнее.

Создать службу из скрипта PowerShell при помощи NSSM можно прямо из PowerShell :):

$NSSMPath = (Get-Command «C:toolsnssmwin64nssm.exe»).Source

$NewServiceName = “CheckADGroupSrv”
$PoShPath= (Get-Command powershell).Source
$PoShScriptPath = “C:toolsCheckADGroupcheckad.ps1”
$args = ‘-ExecutionPolicy Bypass -NoProfile -File «»‘ -f $PoShScriptPath
$NSSMPath status $NewServiceName

Запустим новую службу:

NSSM - создать службу Windows из скрипта PowerShell

Итак, вы создали и запустили новую службу Windows. Проверим, что она появилась в консоли управления службами services.msc

Служба CheckADGroupSrv действительно появилась, она настроена на автоматический запус и в данный момент запущена (Running). Как вы видите, ваш PowerShell скрипт запущен внутри процесса nssm.exe.

Читайте также:
Бош классик хх5 программы стирки инструкция стиральная

Обратите внимание, что служба запущена из-под учетной записи System. Если вы используете в своих PS скриптах другие модули (в моем случае для получения состава доменной группы безопасности используется командлет Get-ADGroupMember из модуля Active Directory для Windows PowerShell), этот аккаунт должен иметь доступ к файлам модуля и права на подключение к AD (в моем случае). Вы так же можете запустить эту службы под другой учётной записью (или аккаунтом gMSA) и предоставить пользователям права на остановку/перезапуск службы, если у них нет прав локального администратора.

Чтобы служба могла отображать уведомления в сеанс пользователя (взаимодействовать с рабочим столом) нужно на вкладке “Вход в систему” (Log on) включить опцию “Разрешить взаимодействие с рабочим столом” (Allow service to interact with desktop).

Чтобы это работало в Windows 10 / Windows Server 2012 R2/ 2016 нужно изменить значение DWORD параметра реестра NoInteractiveServices в ветке HKLMSystemCurrentControlSetControlWindows на 0 и включить службу обозревателя интерактивных служб (Interactive Services Detection Service):

Start-Service -Name ui0detect

Однако в Windows 10 1803 службу Interactive Services Detection Service полностью убрали из системы, и вы более не можете переключиться в нулевую сессию (Session 0), так что вы просто не увидите окна, которые выводятся из-под аккаунта System.

Вы можете изменить описание службы командой:

https://winitpro.ru/index.php/2019/04/03/zapusk-powershell-skripta-kak-sluzhby-windows/» target=»_blank»]winitpro.ru[/mask_link]

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru