В этой маленькой статье я попытаюсь рассказать как добавить свою службу в операционной системе 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
Запустим новую службу:

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

Обратите внимание, что служба запущена из-под учетной записи 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]