Windows, Программное обеспечение
- 06.01.2020
- 39 477
- 6
- 27.07.2020
- 61
- 61
- 0
- Содержание статьи
- SC
- NSSM
- Комментарии к статье ( 6 шт )
- Добавить комментарий
Службы Windows — запущенные в фоне приложения, которые работают независимо от пользователя компьютера, и управляются непосредственно самой операционной системой. По умолчанию, службами являются строго определенные приложения, однако, ничто не мешает пользователю создать их самому. Выполнить данную задачу можно несколькими способами — с использованием стандартных средств Windows, либо с использованием сторонней программы NSSM.
SC
Входящая в Windows программа SC позволяет легко создавать службы Windows, а так же проводить другие различные с ними манипуляции — удаление, отключение, включение, и т. д. Создается служба достаточно просто, для этого достаточно запустить командную строку от имени администратора, и выполнить там следующую команду:
sc create [ИМЯ СЛУЖБЫ] binPath=[ПУТЬ К ИСПОЛНЯЕМОМУ ФАЙЛУ] DisplayName=[ОТОБРАЖАЕМОЕ ИМЯ СЛУЖБЫ] type=own start=auto
Удаляется же служба еще проще:
sc delete [ИМЯ СЛУЖБЫ]
Однако, у данного метода есть один большой существенный недостаток — с помощью данной утилиты создать службу можно только из программы, которая поддерживает работу службой. По этому, запустить какое попало приложение как службу данным способом не получится — но, можно воспользоваться сторонней утилитой NSSM, о которой речь пойдет ниже.
NSSM
NSSM — программа, предназначенная для создания служб из исполняемых файлов Windows, в том числе и из графических утилит, что ставит её на уровень выше средств от Microsoft. С её помощью можно запускать большинство приложений, даже которые рассчитаны на взаимодействие с пользователем.
Скачать данную программу можно с её официального сайта — nssm.cc.
На случай проблем с официальным сайтом, можно скачать программу с нашего сайта.
Скачать NSSM 2.24
В архиве для скачивания можно найти версию для 64-битной версии Windows (папка win64), для 32-битной (папка win32) и исходные коды приложения (папка src). Выбираем нужное приложение под разрядность своей системы, копируем его в удобное для вас место на жестком диске. Никакая установка приложения не требуется.
Пример использования:
- Предположим, нужно создать службу для веб-сервера nginx под Windows. Для этого, запускаем командную строку с правами администратора, и переходим в директорию с распакованным исполняемым файлом nssm.exe.
- Затем выполняем команду, начинающую установку службы:
nssm install nginx
- Откроется окно с настройками создаваемой службы.
На самой первой вкладке «Application«, в строке «Path» задается путь к исполняемому файлу, «Startup Directory» — рабочая директория, а «Arguments» — параметры запуска. В самом низу расположена строка «Service Name«, где задается имя создаваемого сервиса.
На вкладке «Details» можно задать имя, под которым будет отображаться создаваемая служба в списке служб, а так же описание службы, которое будет отображаться там же. В выпадающем списке «Startup Type» можно выбрать тип запуска службы.
Вкладка «Log on» позволяет указать пользователя, под которым будет запускаться служба.Заполним все нужные поля и выбрав нужные настройки, остается только нажать кнопку «Install service«, для установки службы. - После нажатия кнопки «Install service«, служба будет создана, но при этом запустить её нужно будет вручную (либо перезагрузить компьютер, чтобы служба с параметром запуска «Auto» запустилась при его запуске).
Так же удалить службу можно с помощью команды в командной строке:
nssm remove [ИМЯ СЛУЖБЫ] confirm
Время на прочтение
6 мин
Количество просмотров 66K
Однажды вы задумаетесь, как превратить скрипт или приложение в Windows-службу. Скорее всего, задача окажется не такой уж тривиальной – приложению как минимум потребуется специальный интерфейс для получения команд от системы. А раз есть требования и ограничения, то есть и скрипты, и милые сердцу костылики для преодоления.
Статья будет полезна тем, кто, как и я — «программист не настоящий».
Зачем нужна служба, если есть назначенные задания
В отличие от назначенных заданий служба работает постоянно, запускается при старте ПК и может управляться средствами Windows. А еще регулярно запускаемому скрипту могут понадобиться данные с предыдущего запуска, и может быть полезно получение данных из внешних источников — например, в случае TCP или Web сервера.
Лично мне за последние пять лет приходилось создавать службу три с половиной раза:
- Потребовалось создать сервис на fail2ban для Windows 2003., который работал с логами FileZilla и Apache, а при подозрении на брутфорс блокировал IP штатными средствами Windows — ipsec.
- Аналог телнет-сервера для домашних версий Windows. Понадобилось выполнять команды на удаленных рабочих станциях, которые были под управлением Windows 7 Home. По сути, вторая попытка поиграть в службы.
- Музыкальный проигрыватель для торгового зала под Windows. Задачу по ТЗ можно было решить при помощи mpd и пачки скриптов, но я решил — если уж делать скрипты, то почему бы и не «сваять» проигрыватель самому. За основу взял библиотеку BASS.dll.
- Когда выбирали веб-сервер с поддержкой загрузки файлов под Windows, одним из вариантов был HFS. Сам по себе работать он не может, поэтому пришлось «запихивать» его в службу. В результате решение не понравилось, и просто установили «тему» Apaxy на web-сервере Apache.
Для создания службы можно использовать взрослые языки программирования вроде C. Но если вы не хотите связываться с Visual Studio, то возьмите готовые утилиты. Существуют платные решения вроде FireDaemon Pro или AlwaysUp, но мы традиционно сосредоточимся на бесплатных.
Способ первый. От Microsoft
Этот уже немолодой механизм состоит из двух компонентов: утилиты instsrv.exe для установки сервиса и srvany.exe — процесса для запуска любых исполняемых файлов. Предположим, что мы создали веб-сервер на PowerShell при помощи модуля Polaris. Скрипт будет предельно прост:
New-PolarisGetRoute -Path '/helloworld' -Scriptblock {
$Response.Send('Hello World!')
}
Start-Polaris -Port 8080
while($true) {
Start-Sleep -Milliseconds 10
}
Работа так называемого «сервера».
Теперь попробуем превратить скрипт в службу. Для этого скачаем Windows Resource Kit Tools, где будут наши утилиты. Начнем с того, что установим пустой сервис командой:
instsrv WebServ C:\temp\rktools\srvany.exe
Где WebServ — имя нашего нового сервиса. При необходимости через оснастку services.msc можно задать пользователя, под которым будет запускаться служба, и разрешить взаимодействие с рабочим столом.
Теперь пропишем путь к нашему скрипту при помощи магии реестра. Параметры службы есть в разделе реестра HKLM\SYSTEM\CurrentControlSet\Services\WebServ. В нем нам нужно добавить новый раздел Parameters и создать там строковый параметр Application, указав в нем путь к исполняемому файлу. В случае скрипта PowerShell он будет выглядеть так:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -NoProfile -File C:\temp\Polaris\server.ps1
Настроенная служба.
Можно запустить и радоваться.
Работающая служба.
Однако у этого способа есть недостатки:
- Утилиты старые, разработаны до изобретения PowerShell, UAC и прочих вещей.
- Srvany не контролирует работу приложения. Даже если оно выпадет в ошибку, служба продолжит свое дело как ни в чем не бывало.
- Придется донастраивать и копаться в реестре. Вы же помните, что копаться в реестре небезопасно?
Поэтому перейдем к методу, частично лишенному этих проблем.
Способ второй, почти взрослый
Существует утилита под названием NSSM — Non-Sucking Service Manager, что можно перевести как не-плохой менеджер служб. В отличие от предыдущей, она поддерживается разработчиком, и исходный код опубликован на сайте. Помимо обычного способа, доступна и установка через пакетный менеджер Chocolately.
Создать сервис можно из обычной командной строки, вооружившись документацией на сайте разработчика. Но мы воспользуемся PowerShell. Потому что можем, разумеется.
$nssm = (Get-Command ./nssm).Source
$serviceName = 'WebServ'
$powershell = (Get-Command powershell).Source
$scriptPath = 'C:\temp\Polaris\server.ps1'
$arguments = '-ExecutionPolicy Bypass -NoProfile -File "{0}"' -f $scriptPath
& $nssm install $serviceName $powershell $arguments
& $nssm status $serviceName
Start-Service $serviceName
Get-Service $serviceName
Установка через PowerShell.
Для разнообразия проверим работу службы не браузером, а тоже через PowerShell командой Invoke-RestMethod.
И вправду работает.
В отличие от srvany, этот метод позволяет перезапускать приложение на старте, перенаправлять stdin и stdout и многое другое. В частности, если не хочется писать команды в командную строку, то достаточно запустить GUI и ввести необходимые параметры через удобный интерфейс.
GUI запускается командой:
nssm.exe install ServiceName
Настроить можно даже приоритет и использование ядер процессора.
Действительно, возможностей куда больше, чем у srvany и ряда других аналогов. Из минусов бросается в глаза недостаточный контроль над всем процессом.
Налицо нехватка «жести». Поэтому я перейду к самому хардкорному методу из всех опробованных.
Способ третий. AutoIT
Поскольку я давний любитель этого скриптового языка, то не смог пройти мимо библиотеки под названием _Services_UDF v4. Она снабжена богатой документацией и примерами, поэтому под спойлером сразу приведу полный текст получившегося скрипта.
Листинг скрипта
Итак, попробуем «завернуть» в нее наш веб-сервис:
#NoTrayIcon
#RequireAdmin
#Region
#AutoIt3Wrapper_Version=Beta
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Compile_Both=y
#AutoIt3Wrapper_UseX64=y
#EndRegion
Dim $MainLog = @ScriptDir & "\test_service.log"
#include <services.au3>
#include <WindowsConstants.au3>
$sServiceName="WebServ"
If $cmdline[0] > 0 Then
Switch $cmdline[1]
Case "install", "-i", "/i"
InstallService()
Case "remove", "-u", "/u", "uninstall"
RemoveService()
Case Else
ConsoleWrite(" - - - Help - - - " & @CRLF)
ConsoleWrite("params : " & @CRLF)
ConsoleWrite(" -i : install service" & @CRLF)
ConsoleWrite(" -u : remove service" & @CRLF)
ConsoleWrite(" - - - - - - - - " & @CRLF)
Exit
EndSwitch
Else
_Service_init($sServiceName)
Exit
EndIf
Func _main($iArg, $sArgs)
If Not _Service_ReportStatus($SERVICE_RUNNING, $NO_ERROR, 0) Then
_Service_ReportStatus($SERVICE_STOPPED, _WinAPI_GetLastError(), 0)
Exit
EndIf
$bServiceRunning = True
$PID=Run("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -NoProfile -File C:\temp\Polaris\server.ps1")
While $bServiceRunning
_sleep(1000)
WEnd
ProcessClose($PID)
_Service_ReportStatus($SERVICE_STOP_PENDING, $NO_ERROR, 1000)
DllCallbackFree($tServiceMain)
DllCallbackFree($tServiceCtrl)
_Service_ReportStatus($SERVICE_STOPPED, $NO_ERROR, 0)
DllClose($hAdvapi32_DLL)
DllClose($hKernel32_DLL)
EndFunc
Func _Sleep($delay)
Local $result = DllCall($hKernel32_DLL, "none", "Sleep", "dword", $delay)
EndFunc
Func InstallService()
#RequireAdmin
Local $bDebug = True
If $cmdline[0] > 1 Then
$sServiceName = $cmdline[2]
EndIf
If $bDebug Then ConsoleWrite("InstallService("&$sServiceName &"): Installing service, please wait")
_Service_Create($sServiceName, $sServiceName, $SERVICE_WIN32_OWN_PROCESS, $SERVICE_AUTO_START, $SERVICE_ERROR_SEVERE, '"' & @ScriptFullPath & '"');,"",False,"","NT AUTHORITY\NetworkService")
If @error Then
Msgbox("","","InstallService(): Problem installing service, Error number is " & @error & @CRLF & " message : " & _WinAPI_GetLastErrorMessage())
Else
If $bDebug Then ConsoleWrite("InstallService(): Installation of service successful")
EndIf
Exit
EndFunc
Func RemoveService()
_Service_Stop($sServiceName)
_Service_Delete($sServiceName)
If Not @error Then
EndIf
Exit
EndFunc
Func _exit()
_Service_ReportStatus($SERVICE_STOPPED, $NO_ERROR, 0);
EndFunc
Func StopTimer()
_Service_ReportStatus($SERVICE_STOP_PENDING, $NO_ERROR, $iServiceCounter)
$iServiceCounter += -100
EndFunc
Func _Stopping()
_Service_ReportStatus($SERVICE_STOP_PENDING, $NO_ERROR, 3000)
EndFunc
Разберу подробнее момент запуска приложения. Он начинается после операции $bServiceRunning = True и превращается в, казалось бы, бесконечный цикл. На самом деле этот процесс прервется, как только служба получит сигнал о завершении — будь то выход из системы или остановка вручную.
Поскольку программа для скрипта является внешней (powershell.exe), то после выхода из цикла нам нужно закончить ее работу с помощью ProcessClose.
Для этого скрипт необходимо скомпилировать в .exe, а затем установить службу, запустив exe с ключом -i.
Оно работает!
Разумеется, этот способ не самый удобный, и все дополнительные возможности придется реализовывать самостоятельно, будь то повторный запуск приложения при сбое или ротация логов. Но зато он дает полный контроль над происходящим. Да и сделать в итоге можно куда больше — от уведомления в Telegram о сбое службы до IPC-взаимодействия с другими программами. И вдобавок — на скриптовом языке, без установки и изучения Visual Studio.
Расскажите, а вам приходилось превращать скрипты и приложения в службы?
Можно ли запустить клиентское приложение в качестве службы? В одной из статей я описывал способы создания службы 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:\Windows\system32\notepad.exe″
Управление службой
После создания службы с помощью NSSM зайдем в оснастку Services и найдем службу notepad. Как видите, с виду она ничем не отличается от остальных служб, мы также можем ее запустить, остановить или изменить режим запуска. Однако обратите внимание, что в качестве исполняемого файла указан nssm.exe.
А если зайти в Task Manager, то мы увидим следующую картину: в качестве основного (родительского) процесса запущен NSSM, служба notepad запущена как его дочерний процесс, и уже в этом дочернем процессе запущено приложение Блокнот.
Удаление службы
Для удаления службы вводим команду nssm remove notepad и подтверждаем ее удаление. А введя команду nssm remove notepad confirm, можно обойтись и без подтверждения.
Запуск службы в интерактивном режиме
Основное отличие пользовательского приложения от службы заключается в том, что после запуска приложение может требовать для продолжения работы дополнительных действий со стороны пользователя — например нажать кнопку или ввести команду. Для этого необходимо получить к нему доступ, что как оказывается, не так-то просто сделать.
Для того, чтобы запустить службу в интерактивном режиме, надо в оснастке Службы открыть ее свойства и на вкладке «Вход в систему» отметить чекбокс «Разрешить взаимодействие с рабочим столом».
А дальше начинаются чудеса 🙂 Cлужба, запущенная в интерактивном режиме, открывается в изолированном сеансе (session 0). Попасть в этот сеанс можно только при помощи Службы обнаружения интерактивных служб (ui0detect), которая отслеживает запуск интерактивных служб на компьютере и выдает оповещение. В Windows 7\Server 2008 эта служба активна по умолчанию, а в Windows 8\Server 2012 она отключена и не отображается в графической оснастке Службы (по крайней мере я ее там не нашел). Более того, если вы все же найдете эту таинственную службу и попробуете ее запустить, то получите сообщение об ошибке.
А дело в том, что для ее запуска необходимо разрешить запуск интерактивных служб на компьютере. Поэтому открываем редактор реестра, находим в разделе HKLM\System\CurrentControlSet\Control\Windows параметр типа DWORD с именем NoInteractiveServices и ставим его значение в 0.
После чего открываем консоль PowerShell и стартуем службу обнаружения командой:
Start-Service -Name ui0detect
Убедившись что служба обнаружения запущена, рестартуем службу notepad, и получаем вот такое окошко. Выбираем пункт «Посмотреть сообщение»
и попадаем в нулевой сеанс, в котором работает наше приложение. Дальше производим с ним необходимые действия и возвращаемся обратно.
Такое вот интересное решение для запуска приложений в виде служб Windows. Не самое красивое, но вполне соответствующее своему названию 🙂
Программа как служба или как превратить любую программу в службу на Windows
Loney_Break
22:34
Комментариев нет
Рано или поздно, у простого пользователя или прожженого сисадмина возникает такая ситуация как: «Превратить программу в службу». Зачем это нужно, и в чем отличие. Если сильно не вдаваться в подробности то слушайте. Служба — это такое приложение , которое автоматически запускается при старте 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. Например:
cd C:/
Далее набираем команду — nssm install + имя будущей службы. Например:
nssm install publikator
И перед нами предстает окно программы nssm.
Расскажу коротко о настройках которые нам потребуются.
Path — в этом поле указываем путь к программе которую мы хотим переделать в службу(Обязательно).
Startup directory — директория нахождения программы(Обязательно).
Arguments — дополнительные параметры запуска программы(Не обязательно).
Service name — наименование будущей службы(Можно назвать как угодно, хоть MEGASLUZBA).
На этом в принципе все, дополнительных настроек не требуется.
После всех настроек нажимаем кнопку install service и запускаем диспетчер задач и наблюдаем нашу службу.
Перезагрузите компьютер, или запустите службу вручную из диспетчера задач. (Правой кнопкой мыши по службе — запустить)
P.S.на всякий случай,если у вас не работает стабильно ваша программа, то в разделе process, уберите галочку Console Windows.
Что бы внести изменения в вашу службу, запустите командную строку и введите команду: nssm edit + название вашей службы
nssm edit publikator
3.7
3
голоса
Рейтинг статьи
Одной из наиболее удобных особенностей операционной системы Windows является возможность запуска программы как службы. Это позволяет программе запускаться автоматически при загрузке системы и работать в фоновом режиме без необходимости входа пользователя. В этой статье мы рассмотрим подробное руководство по запуску программы как службы в Windows.
Первым шагом является выбор программы, которую вы хотите запустить как службу. Это может быть любая программа, которая разрабатывается для работы в фоновом режиме или автоматического выполнения каких-либо задач. Важно, чтобы программа была установлена на вашем компьютере и имела необходимые разрешения для запуска как служба.
Далее, вам понадобится инструмент, который поможет вам настроить программу как службу. В Windows это можно сделать с помощью различных инструментов, таких как NSSM (Non-Sucking Service Manager) или командной строки. В этой статье мы рассмотрим использование NSSM.
NSSM (Non-Sucking Service Manager) — это инструмент командной строки, который позволяет преобразовать любую программу в службу Windows.
Содержание
- Шаг 1: Установка необходимых инструментов
- Шаг 2: Создание службы при помощи командной строки
- Шаг 3: Настройка параметров службы
- Шаг 4: Добавление службы в автозагрузку
- Шаг 5: Проверка работоспособности службы
Шаг 1: Установка необходимых инструментов
Перед тем, как запустить программу как службу в Windows, вам потребуется установить необходимые инструменты. Вот список инструментов, которые вам понадобятся:
1. NSSM (Non-Sucking Service Manager)
Для запуска программы как службы вам понадобится инструмент NSSM. NSSM является простым и эффективным способом запустить программу в качестве службы в операционной системе Windows.
Вы можете скачать NSSM с официального сайта или использовать менеджер пакетов, такой как Chocolatey, для установки инструмента.
2. Установочный файл программы
У вас должен быть установочный файл программы, которую вы хотите запустить как службу. Этот файл позволит вам установить и настроить программу перед запуском в качестве службы.
Убедитесь, что у вас есть актуальная версия установочного файла программы, чтобы избежать проблем при запуске как службы.
Шаг 2: Создание службы при помощи командной строки
В этом шаге мы рассмотрим процесс создания службы при помощи командной строки. Следуйте инструкциям ниже:
1. Откройте командную строку
Нажмите клавишу Win + R на клавиатуре, чтобы открыть диалог «Запуск». Введите «cmd» и нажмите Enter. Командная строка откроется.
2. Перейдите в директорию, где находится файл программы
Используйте команду «cd» для перехода в нужную директорию. Например, если ваш файл программы находится в директории «C:\Programs», введите команду «cd C:\Programs» и нажмите Enter.
3. Создайте службу
Используйте команду «sc create» для создания службы. Синтаксис команды выглядит следующим образом:
sc create [имя службы] binPath= [путь к исполняемому файлу]
Замените [имя службы] на желаемое имя для вашей службы и [путь к исполняемому файлу] на путь к исполняемому файлу вашей программы. Например, если вы хотите создать службу с именем «MyService» и ваш исполняемый файл находится в «C:\Programs\myprogram.exe», команда будет выглядить следующим образом:
sc create MyService binPath= «C:\Programs\myprogram.exe»
4. Запустите созданную службу
Используйте команду «sc start» для запуска созданной службы. Синтаксис команды выглядит следующим образом:
sc start [имя службы]
Замените [имя службы] на имя вашей созданной службы. Например, если вы создали службу с именем «MyService», команда будет выглядеть следующим образом:
sc start MyService
Поздравляю! Теперь ваша программа запущена как служба в Windows.
Шаг 3: Настройка параметров службы
После создания службы необходимо настроить ее параметры для корректного запуска программы. В этом шаге вы можете указать основные настройки, такие как имя службы, описание, тип запуска и пользовательские учетные данные.
1. Имя службы
Дайте службе понятное и уникальное имя, которое поможет вам и другим пользователям легко идентифицировать ее в списке установленных служб.
2. Описание
Укажите краткое описание службы, чтобы пользователи могли легко понять ее назначение и функциональность.
3. Тип запуска
Выберите тип запуска, который наиболее подходит для вашей программы. В зависимости от ваших потребностей, вы можете выбрать автоматический, ручной или отложенный запуск.
4. Пользовательские учетные данные
В случае, если вашей программе требуется доступ к определенным ресурсам или учетным данным, укажите учетную запись пользователя, от имени которого будет запускаться служба. Учетная запись должна иметь необходимые права доступа для выполнения задач программы.
Обязательно проверьте и дважды убедитесь, что все параметры службы настроены правильно перед ее запуском. Неправильно настроенные параметры могут привести к нежелательным последствиям или неполадкам в работе программы.
Шаг 4: Добавление службы в автозагрузку
Разработанная вами программа, которую вы хотите запустить как службу, должна быть добавлена в автозагрузку, чтобы она запускалась каждый раз при загрузке операционной системы Windows. В этом разделе описывается, как выполнить эту задачу.
Следуйте этим шагам:
- Нажмите комбинацию клавиш Win + R , чтобы открыть окно «Выполнить».
- Введите «shell:startup» (без кавычек) и нажмите Enter. Откроется папка автозагрузки.
- Скопируйте ярлык вашей программы, который вы создали на предыдущем шаге, в эту папку.
- Теперь ваша программа будет запускаться при каждой загрузке системы Windows.
Важно помнить, что если вы внесете изменения в свою программу, вам придется обновить ярлык в папке автозагрузки.
После выполнения этих шагов ваша программа будет автоматически запускаться как служба при каждой загрузке операционной системы Windows.
Шаг 5: Проверка работоспособности службы
После успешного создания службы необходимо проверить ее работоспособность. Для этого выполните следующие действия:
- Откройте «Управление компьютером» в меню «Пуск».
- Перейдите в раздел «Службы и приложения» и выберите «Службы».
- Найдите созданную вами службу в списке.
- Проверьте, что статус службы отображается как «Запущено».
- Если статус отличается, щелкните правой кнопкой мыши на службе и выберите «Запустить» из контекстного меню.
- Убедитесь, что служба успешно запускается, и ее статус изменяется на «Запущено».
После проверки работоспособности можно считать процесс создания службы завершенным. Теперь программа будет автоматически запускаться и работать в фоновом режиме при каждом запуске компьютера.