Службы в Windows — особые процессы, выполняемые в фоновом режиме, в том числе от учетной записи «СИСТЕМА», которые могут быть запущены в том числе до входа в систему. При желании вы можете создать свою собственную службу, которая будет работать таким же образом.
В этой инструкции подробно о том, как создать службу в Windows 11 или Windows 10 средствами системы, ограничениях методов и одном дополнительном способе заставить работать ваш процесс в качестве службы.
Создание службы в командной строке
Первый способ — использование команды командной строки для создания своей службы, шаги будут следующими:
- Запустите командную строку от имени Администратора (способы запуска командной строки от Администратора).
- Используйте команду, заменив текстовые описания и пути на свои:
sc create Имя_службы binPath="C:service-file.exe" DisplayName= "Описание_службы" type=own start=auto
- После нажатия Enter вы получите сообщение: CreateService: успех, что означает, что служба была успешно создана.
В указанной команде используются следующие параметры:
- binPath — путь к исполняемому файлу службы.
- DisplayName — отображаемое в списке служб имя службы.
- start — тип запуска, возможные значения: boot, auto, demand (значение по умолчанию), disabled, delayed-auto
- type — тип службы, по умолчанию own, возможны другие значения: share (делит исполняемый файл с другими службами), kernel (драйвер), filesys (драйвер файловой системы), interact (интерактивная служба с возможность взаимодействия с пользователем, поддержка этого типа служб прекращается).
После создания службы вы сможете увидеть её в списке служб (Win+R — services.msc), а автоматический запуск произойдет при следующей перезагрузке системы.
Создание службы в Windows PowerShell
Создать службу можно и в PowerShell, запущенном от имени администратора (или в Терминале Windows). Базовый вариант команды с параметрами по умолчанию:
New-Service -Name "Имя_Службы" -BinaryPathName '"C:путь_к_файлу параметры_запуска"'
Расширенный вариант с указанием описания и типа запуска:
New-Service -Name MyService -BinaryPathName '"C:путь_к_файлу параметры_запуска"' -DisplayName "Имя_службы" -Description "Описание службы" -StarupType "Automatic"
В случае, если выполняется запуск исполняемого файла без параметров, а путь не содержит пробелов, использование кавычек не обязательно, например:
-BinaryPathName C:remontka.exe
При создании служб в PowerShell доступны и ряд дополнительных параметров, описанных в официальной справке на сайте Майкрософт.
Удаление созданной службы
Удалить созданную службы вы можете также в командной строке, запущенной от имени Администратора с помощью команды:
sc delete Имя_службы
Или в Windows PowerShell:
Remove-Service -Name MyService
После выполнения указанных команд созданная вами служба будет удалена из Windows.
Созданная служба не работает, варианты решения
Из описания можно предположить, что любой файл .exe может быть службой, однако, при попытке добавить свои фоновые утилиты и заставить их работать в виде службы рядовые пользователи обычно сталкиваются с ситуацией, когда процесс запускается, а затем закрывается сам. А при запуске службы вручную через некоторое время сообщает, что служба не ответила на запрос своевременно или о других ошибках.
Причина в том, что исполняемые файлы служб — не совсем обычные программы, они, помимо прочего, обмениваются данными с системой. Если ваш EXE не отвечает на соответствующие запросы системы, Windows «делает вывод» о том, что со службой что-то не так.
Как быть, если вы всё-таки настойчиво хотите использовать свой прикладной исполняемый файл в качестве службы?
- Использовать планировщик заданий и запуск от соответствующего пользователя — это не будет в полной мере службой, но почти то, что нужно.
- Ранее существовала программа RunAsSvc, позволяющая запускать любые процессы в качестве службы, но для современных ОC он не применима, а разработка была прекращена.
- Использовать инструменты INSTSRV.EXE и SRVANY.EXE из Windows Server 2003 Resource Kit Tools при создании службы Windows.
Создание пользовательской службы с помощью INSTSRV.EXE и SRVANY.EXE
Последний вариант из приведённого выше списка рассмотрим подробнее. Шаги будут следующими:
- Загрузите (вероятнее всего, придется найти в Интернете на сторонних сайтах) Windows Server 2003 Resource Kit полностью или только файлы INSTSRV.EXE и SRVANY.EXE, располагаем их у себя на диске, в моем примере путь — C:Windows
- В командной строке от имени администратора используйте команду (пути меняем на свои):
C:Windowsinstsrv.exe Имя_службы C:Windowssrvany.exe
- Если вы получили сообщение о том, что The service was successfully added, всё прошло успешно. Теперь требуется запустить редактор реестра (Win+R — regedit).
- В редакторе реестра перейдите по пути
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices
и найдите раздел с вашим именем службы. Нажимаем по нему правой кнопкой мыши и выбираем пункт «Создать» — «Раздел», задаем имя «Parameters» для раздела.
- Выберите созданный раздел, нажмите правой кнопкой мыши в правой панели редактора реестра и создайте новый строковый параметр с именем Application
- Дважды нажмите по параметру и в поле «Значение» укажите путь к вашему файлу exe для запуска службы.
Закройте редактор реестра — служба создана, её можно запустить из services.msc или она будет автоматически запущена после перезагрузки компьютера.
Учитывайте, что во всех приведенных примерах служба по умолчанию запускается с учетной записью «СИСТЕМА». В некоторых случаях это может приводить к неправильной работе. В этом случае может иметь смысл зайти в свойства службы в services.msc и изменить параметры на вкладке «Вход в систему».
Службами в Windows называются процессы, стартующие вместе с системой, не имеющие графического интерфейса и работающие в фоновом режиме, причем большинство служб запускается и работают независимо от того, вошел ли пользователь в свою учетную запись или нет. Эту особенность операционной системы можно использовать в практических целях, например, создать собственную службу, которая станет отслеживать изменения в реестре или отправку пакетов TCP/IP.
В статье от 07 декабря 2020 года мы уже рассматривали процедуру создания служб в Windows 10, предлагая использовать для этой цели стороннюю утилиту Non-Sucking Service Manager, укомплектованную простейшим графическим интерфейсом.
Сегодня мы предлагаем познакомиться со способами создания служб исключительно средствами операционной системы. Используйте их, если в качестве службы вам нужно установить процесс исполняемого файла EXE, так как для назначения службами процессов скриптов всё же удобнее использовать Non-Sucking Service Manager.
Командная строка
Для создания служб в Windows можно использовать встроенную консольную утилиту sc.exe, предназначением которой как раз является добавление, удаление, опрос и конфигурирование системных служб.
Запустите командную строку от имени администратора и выполните в ней команду следующего вида:
sc create MyService binPath=»C:service.exe» DisplayName= «ServiceName» type=own start=auto
Как нетрудно догадаться, C:service.exe – это путь к исполняемому файлу службы, ServiceName – отображаемое имя (псевдоним), а MyService – фактическое имя службы, к которому нужно будет обращаться в процессе настройки службы. Параметр type задает статус, в параметр start – тип запуска.
В данном примере служба имеет статус «Отключена», а тип запуска у нее выставлен «Автоматически», в чем можно убедиться, открыв свойства добавленной службы в оснастке управления службами.
Если служба станет больше не нужна, вы всегда сможете ее удалить командой:
sc delete MyService
PowerShell
Средствами создания и управления службами обладает также и консоль PowerShell.
Запустите ее от имени администратора и выполните следующую команду:
New-Service -Name MyService -BinaryPathName C:service.exe -DisplayName «ServiceName» -Description » Service Description»
Ключевыми параметрами являются -Name и -BinaryPathName: первый принимает произвольное имя устанавливаемой службы, а второй – путь к исполняемому файлу службы.
Параметры -DisplayName и -Description являются дополнительными, они задают отображаемое имя и описание службы.
А вот с удалением службы в PowerShell не всё так однозначно.
Если у вас установлена консоль шестой или более новой версии, службу можно будет удалить командой:
Remove-Service -Name MyService
В противном случае придется использовать вот такую хитрую конструкцию, где MyService – имя службы:
(Get-WmiObject win32_service -Filter «name=’MyService'»).delete()
Для тех, кто не в курсе: узнать текущую версию PowerShell можно командой host, билд будет указан в строке Version.
И возвращаясь к службам отметим, что между службами, созданными в командной строке и PowerShell, нет никакой разницы, поэтому для их удаления в том и другом случае вы можете использовать команду sc delete MyService.
Загрузка…
Бывает, что имеется некий исполняемый файл, который необходимо зарегистрировать в системе как службу Windows 10. Существует множество различных способов, которые позволяют это сделать. Сейчас мы рассмотрим два основных и проверенных метода создания службы Windows.
Создание службы с помощью программы Sc.exe
Первый способ позволяет создавать службы, используя утилиты, работающие через командную строку. В данном случае, используется инструмент sc.exe. Он позволяет взаимодействовать с функциями API и выполнять операции со службами Windows 10. Несмотря на то, что данная программа даже не обладает графическим интерфейсом, она является мощным инструментом и может контролировать состояние служб, создавать, редактировать и управлять ими.
Если создавать службу, с помощью sc.exe, то не возникает необходимости в изменении параметров реестра и списка служб в диспетчере. Кроме того, утилита способна работать со службами на локальном компьютере, и выполнять те же действия на удаленных машинах.
Чтобы создать новый сервис, откройте командную строку от имени администратора и запустите команду «Sc create». Она запишет новую службу к базе диспетчера служб. Синтаксис команды представлен следующим образом:
sc create [ServiceName] [binPath= ] <параметр1= > <параметр2= >
Где:
- ServiceName — данным параметром определяется имя раздела службы в реестре;
Данное имя не совпадает с тем именем, которое будет отображаться диспетчере (например, в Services). - BinPath — в этом параметре записываем путь, где хранится исполняемый файл.
Чтобы было понятнее, в качестве примера, мы создадим службу «MySevice». При этом, отображаемое имя будет «My New Service». Указываем тип службы и включаем автозапуск:
Sc create MyService binPath=C:MyServiceMyService.exe DisplayName=″My New Service″ type=own start=auto
Теперь откройте оснастку «Services» и взгляните на то, что получилось:
Параметры службы, которая уже была создана и запущена, можно изменить при помощи команды Sc config. К примеру, мы заменим имя службы, которое отображается как:
Sc config MyService DisplayName=″My Service″
А еще можно избавиться от службы полным ее удалением. Для этого используйте такую команду:
Sc delete MyService
С помощью утилиты PowerShell
Ну а с помощью такого мощного инструмента, как PowerShell можно хоть горы двигать. Он обладает большими возможностями и способен работать с различными службами. Здесь, для добавления новой службы, существует специальная команда «New -Service». Давайте попробуем новую службу, как и в прошлом примере, будем использовать те же имена и значения, только добавим дополнительный параметр, в виде описания. И так, команда, для создания нового сервиса, выглядит следующим образом:
New-Service -Name MyService -BinaryPathName C:MyServiceMyService.exe` -DisplayName ″My New Service″ -Description ″Very Important Service !!!″
Для изменения параметров служб, существует команда «Set -Service»:
Set-Service -Name MyService -Description ″Not Very Important Service″ -StartupType Manual
Если не считать дополнительную возможность добавления описаний к службам, PowerShell обладает таким же функционалом, как и утилита Sc.exe. Но есть один маленький минус — здесь нет простой команды для удаления службы. Поэтому приходиться использовать такой вот, немного мудреный, код:
(Get-WmiObject win32_service -Filter ″name=′MyService′″).delete()
Так что утилита sc.exe, в этом плане будет получше. И по этой причине я предпочитаю именно ее.
Автор статьи: Сергей
Windows
6
46681
Это может пригодиться:
Новые комментарии
Службами в Windows называются процессы, стартующие вместе с системой, не имеющие графического интерфейса и работающие в фоновом режиме, причем большинство служб запускается и работают независимо от того, вошел ли пользователь в свою учетную запись или нет. Эту особенность операционной системы можно использовать в практических целях, например, создать собственную службу, которая станет отслеживать изменения в реестре или отправку пакетов TCP/IP.
В статье от 07 декабря 2020 года мы уже рассматривали процедуру создания служб в Windows 10, предлагая использовать для этой цели стороннюю утилиту Non-Sucking Service Manager, укомплектованную простейшим графическим интерфейсом.
Сегодня мы предлагаем познакомиться со способами создания служб исключительно средствами операционной системы. Используйте их, если в качестве службы вам нужно установить процесс исполняемого файла EXE, так как для назначения службами процессов скриптов всё же удобнее использовать Non-Sucking Service Manager.
Командная строка
Для создания служб в Windows можно использовать встроенную консольную утилиту sc.exe, предназначением которой как раз является добавление, удаление, опрос и конфигурирование системных служб.
Запустите командную строку от имени администратора и выполните в ней команду следующего вида:
sc create MyService binPath=»C:service.exe» DisplayName= «ServiceName» type=own start=auto
Как нетрудно догадаться, C:service.exe – это путь к исполняемому файлу службы, ServiceName – отображаемое имя (псевдоним), а MyService – фактическое имя службы, к которому нужно будет обращаться в процессе настройки службы. Параметр type задает статус, в параметр start – тип запуска.
В данном примере служба имеет статус «Отключена», а тип запуска у нее выставлен «Автоматически», в чем можно убедиться, открыв свойства добавленной службы в оснастке управления службами.
Если служба станет больше не нужна, вы всегда сможете ее удалить командой:
sc delete MyService
PowerShell
Средствами создания и управления службами обладает также и консоль PowerShell.
Запустите ее от имени администратора и выполните следующую команду:
New-Service -Name MyService -BinaryPathName C:service.exe -DisplayName «ServiceName» -Description » Service Description»
Ключевыми параметрами являются -Name и -BinaryPathName: первый принимает произвольное имя устанавливаемой службы, а второй – путь к исполняемому файлу службы.
Параметры -DisplayName и -Description являются дополнительными, они задают отображаемое имя и описание службы.
А вот с удалением службы в PowerShell не всё так однозначно.
Если у вас установлена консоль шестой или более новой версии, службу можно будет удалить командой:
Remove-Service -Name MyService
В противном случае придется использовать вот такую хитрую конструкцию, где MyService – имя службы:
(Get-WmiObject win32_service -Filter «name=’MyService’»).delete()
Для тех, кто не в курсе: узнать текущую версию PowerShell можно командой host, билд будет указан в строке Version.
И возвращаясь к службам отметим, что между службами, созданными в командной строке и PowerShell, нет никакой разницы, поэтому для их удаления в том и другом случае вы можете использовать команду sc delete MyService.
Загрузка…
Содержание
- Синтаксис и параметры команды SC CREATE
- Примеры команды SC CREATE
- Создание службы с помощью программы Sc.exe
- С помощью утилиты PowerShell
- Dragokas
- Dragokas
Команда SC CREATE создает запись службы в реестре и в базе данных диспетчера служб. А для запуска только что созданной службы из командной строки служит команда SC START.
Синтаксис и параметры команды SC CREATE
sc [имя_сервера] create [имя_службы] [type= >] [start= ] [error= ] [binpath= имя_двоичного_пути] [group= группа_порядка_загрузки] [tag= ] [depend= зависимости] [obj= <имя_учетной_записи|имя_объекта>] [displayname= отображаемое_имя] [password= пароль]
- имя_сервера — Задает имя удаленного сервера, на котором находится служба. В имени следует использовать формат UNC («myserver»). Чтобы запустить SC локально, этот параметр следует пропустить.
- имя_службы — Указывает имя службы, возвращенное операцией getkeyname.
- type= > — Указывает тип службы. Тип по умолчанию type= own.
- start= — Указывает тип запуска для службы. Тип запуска по умолчанию start= demand.
- error= — Указывает серьезность ошибки, если служба не запускается при загрузке. Значение параметра по умолчанию error= normal.
- binpath= имя_двоичного_пути — Указывает путь в двоичном файле службы. Значение по умолчанию для параметра binpath= не задано. Эту строку необходимо указать.
- group= группа_порядка_загрузки — Указывает имя группы, членом которой является эта служба. Список групп сохраняется в реестре в подразделе HKLMSystemCurrentControlSetControlServiceGroupOrder. Значение по умолчанию является пустым.
- tag= — Указывает, следует ли получить код Tag >
Примеры команды SC CREATE
- sc myserver create NewService binpath= c:windowssystem32NewServ.exe
- sc create NewService binpath= c:windowssystem32NewServ.exe type= share start= auto depend= «+TDI Netbios»
- Мониторинг назначенных заданий Как администратору, вам, вероятно, приходится выполнять одни и те.
«>Запуск заданий в Windows по расписанию — 07/11/2012 08:52
Как завершить процессы в командной строке — TASKKILL Команда Taskkill завершает одно или.
«>TASKKILL завершение процессов в Windows — 04/07/2010 14:24
Описание команды TASKLIST Команда TASKLIST отображает список приложений и служб с кодом процесса.
- Описание команды SC CONTINUE Команда SC CONTINUE служит чтобы возобновить остановленную службу и.
«>SC CONTINUE возобновление службы — 04/07/2010 14:04
Описание команды SC PAUSE Команда SC PAUSE посылает службе запрос PAUSE (пауза). А чтобы.
«>SC PAUSE пауза службы — 04/07/2010 14:01
Описание команды SC STOP Команда SC STOP посылает службе операционной системы Windows запрос.
Бывает, что имеется некий исполняемый файл, который необходимо зарегистрировать в системе как службу Windows 10. Существует множество различных способов, которые позволяют это сделать. Сейчас мы рассмотрим два основных и проверенных метода создания службы Windows.
Создание службы с помощью программы Sc.exe
Первый способ позволяет создавать службы, используя утилиты, работающие через командную строку. В данном случае, используется инструмент sc.exe. Он позволяет взаимодействовать с функциями API и выполнять операции со службами Windows 10. Несмотря на то, что данная программа даже не обладает графическим интерфейсом, она является мощным инструментом и может контролировать состояние служб, создавать, редактировать и управлять ими.
Если создавать службу, с помощью sc.exe, то не возникает необходимости в изменении параметров реестра и списка служб в диспетчере. Кроме того, утилита способна работать со службами на локальном компьютере, и выполнять те же действия на удаленных машинах.
Чтобы создать новый сервис, откройте командную строку от имени администратора и запустите команду «Sc create». Она запишет новую службу к базе диспетчера служб. Синтаксис команды представлен следующим образом:
- ServiceName — данным параметром определяется имя раздела службы в реестре;
Данное имя не совпадает с тем именем, которое будет отображаться диспетчере (например, в Services). - BinPath — в этом параметре записываем путь, где хранится исполняемый файл.
Чтобы было понятнее, в качестве примера, мы создадим службу «MySevice». При этом, отображаемое имя будет «My New Service». Указываем тип службы и включаем автозапуск:
Sc create MyService binPath=C:MyServiceMyService.exe DisplayName=″My New Service″ type=own start=auto
Теперь откройте оснастку «Services» и взгляните на то, что получилось:
Параметры службы, которая уже была создана и запущена, можно изменить при помощи команды Sc config. К примеру, мы заменим имя службы, которое отображается как:
Sc config MyService DisplayName=″My Service″
А еще можно избавиться от службы полным ее удалением. Для этого используйте такую команду:
С помощью утилиты PowerShell
Ну а с помощью такого мощного инструмента, как PowerShell можно хоть горы двигать. Он обладает большими возможностями и способен работать с различными службами. Здесь, для добавления новой службы, существует специальная команда «New -Service». Давайте попробуем новую службу, как и в прошлом примере, будем использовать те же имена и значения, только добавим дополнительный параметр, в виде описания. И так, команда, для создания нового сервиса, выглядит следующим образом:
New-Service -Name MyService -BinaryPathName C:MyServiceMyService.exe` -DisplayName ″My New Service″ -Description ″Very Important Service . ″
Для изменения параметров служб, существует команда «Set -Service»:
Set-Service -Name MyService -Description ″Not Very Important Service″ -StartupType Manual
Если не считать дополнительную возможность добавления описаний к службам, PowerShell обладает таким же функционалом, как и утилита Sc.exe. Но есть один маленький минус — здесь нет простой команды для удаления службы. Поэтому приходиться использовать такой вот, немного мудреный, код:
(Get-WmiObject win32_service -Filter ″name=′MyService′″).delete()
Dragokas
Very kind Developer
Иногда может потребоваться взять исполняемый файл и зарегистрировать его в качестве службы Windows.
Для этого есть несколько способов, я обычно пользуюсь двумя из них.
Для создания и службы из командной строки можно использовать программу SC (Sc.exe). SC представляет из себя утилиту командной строки, которая реализует вызовы ко всем функциям интерфейса прикладного программирования (API) управления службами Windows. С ее помощью можно производить любые действия со службами — просматривать состояние, управлять (запускать, останавливать и т.п.), изменять параметры, а также создавать новые службы.
При создании службы с помощью SC нет необходимости вручную создавать записи в реестре и затем перезагружать компьютер, чтобы обеспечить обновление базы данных диспетчером служб. Также SC позволяет указать имя удаленного компьютера, что дает возможность управлять службами как на локальном, так и на удаленном компьютере.
Для создания нового сервиса запускаем команду Sc create. Она создает запись службы в реестре и в базе данных диспетчера служб. Sc create имеет следующий синтаксис:
ServiceName — указывает имя, которое будет присвоено разделу службы в реестре. Имейте в виду, что это имя отличается от отображаемого имени службы (имени, которое отображается в оснастке «Services»);
binPath — указывает путь к исполняемому файлу службы.
Для примера создадим службу MyService, укажем отображаемое имя My New Service, зададим тип службы и поставим ее на авто-запуск:
Затем откроем оснастку «Services» и посмотрим результат.
Изменять параметры уже созданной службы можно командой Sc config. Например, мне не понравилось отображаемое имя службы и я хочу его изменить:
PowerShell может почти все, в том числе и управлять службами Windows. Создать новую службу можно с помощью командлета New-Service. Создадим такой же сервис, как и в предыдущем примере, только добавим к нему описание (Description):
В принципе PowerShell имеет примерно такой же функционал как и Sc.exe, разве что позволяет добавить описание. А вот для удаления служб в PS простого способа нет, придется воспользоваться вот такой конструкцией:
Dragokas
Very kind Developer
Можно ли запустить клиентское приложение в качестве службы? В одной из статей я описывал способы создания службы 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. Чтобы создать службу, достаточно в поле 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 зайдем в оснастку Services и найдем службу notepad. Как видите, с виду она ничем не отличается от остальных служб, мы также можем ее запустить, остановить или изменить режим запуска. Однако обратите внимание, что в качестве исполняемого файла указан nssm.exe.
А если зайти в Task Manager, то мы увидим следующую картину: в качестве основного (родительского) процесса запущен NSSM, служба notepad запущена как его дочерний процесс, и уже в этом дочернем процессе запущено приложение Блокнот.
Для удаления службы вводим команду nssm remove notepad и подтверждаем ее удаление. А введя команду
Содержание
- Способ 1: Консольная утилита sc.exe
- Способ 2: Консоль «PowerShell»
- Способ 3: Сторонние программы
- Вопросы и ответы
Способ 1: Консольная утилита sc.exe
Назначить любой процесс системной службой в Windows 10 можно с помощью маленькой консольной утилиты sc.exe, входящей в состав операционной системы. Для обращения к ней можно использовать как классическую «Командную строку», так и консоль «PowerShell».
- Запустите от имени администратора «Командную строку» или «PowerShell». Первую можно открыть из поиска Windows, вторую – из контекстного меню кнопки «Пуск».
- Сформируйте команду следующего вида:
sc create MyService binPath="C:MyService.exe" DisplayName= "MyNewService" type=own start=auto
. В качестве параметра MyService binPath укажите свой путь к исполняемому файлу создаваемой службы, а в качестве параметра DisplayName — имя службы, которое станет отображаться в оснастке управления службами. - Вставьте сформированную команду в консоль и нажмите клавишу ввода.
Готово, осталось только проверить корректность создания службы в системной оснастке «Службы», запустить которую можно командой services.msc
в диалоговом окошке, вызванном клавишами Win + R.
Способ 2: Консоль «PowerShell»
Необходимыми средствами создания служб в Windows 10 располагает другой штатный инструмент – консоль «PowerShell».
- Запустите «PowerShell» от имени администратора.
- Сформируйте команду вида
New-Service -Name MyService -BinaryPathName C:MyService.exe -DisplayName "Отображаемое имя службы" -Description "Описание службы"
. Имя и описание службы могут быть произвольными. - Вставьте команду в консоль и нажмите клавишу ввода.
Проверьте корректность работы в оснастке управления службами, там же ее можно настроить.
Способ 3: Сторонние программы
Также для создания собственных служб в Windows 10 можно использовать специализированные сторонние утилиты, например Non-Sucking Service Manager. Утилита работает через «Командную строку», но у нее также имеется и графический интерфейс.
Скачать Non-Sucking Service Manager с официального сайта
- Скачайте архив с утилитой с сайта разработчика и распакуйте в удобное расположение — к примеру, поместите исполняемый файл nssm.exe в корень системного диска.
- Запустите «Командную строку» от имени администратора.
- Выполните команду
C:nssm.exe install MyService
, где MyService – название создаваемой службы. - В открывшемся окошке инсталлятора в поле «Patch» укажите полный путь к исполняемому файлу службы и нажмите кнопку «Install service».
- Служба будет установлена, подтверждением чему станет появление окошка с уведомлением «Service *Name* installed successfully!». Нажмите в нем «OK» и закройте «Командную строку».
Остальные поля в окошке инсталлятора службы заполнять не обязательно, кроме тех случаев, когда в качестве службы устанавливается командный файл, например CMD, BAT или PS1. В этом случае в поле «Patch» указывается путь к приложению-обработчику, а в поле «Arguments» – путь к файлу скрипта.
Еще статьи по данной теме:
Помогла ли Вам статья?
Иногда может потребоваться взять исполняемый файл и зарегистрировать его в качестве службы Windows. Для этого есть несколько способов, я обычно пользуюсь двумя из них.
Sc.exe
Для создания и службы из командной строки можно использовать программу SC (Sc.exe). SC представляет из себя утилиту командной строки, которая реализует вызовы ко всем функциям интерфейса прикладного программирования (API) управления службами Windows. С ее помощью можно производить любые действия со службами — просматривать состояние, управлять (запускать, останавливать и т.п.), изменять параметры, а также создавать новые службы.
При создании службы с помощью SC нет необходимости вручную создавать записи в реестре и затем перезагружать компьютер, чтобы обеспечить обновление базы данных диспетчером служб. Также SC позволяет указать имя удаленного компьютера, что дает возможность управлять службами как на локальном, так и на удаленном компьютере.
Для создания нового сервиса запускаем команду Sc create. Она создает запись службы в реестре и в базе данных диспетчера служб. Sc create имеет следующий синтаксис:
sc create [ServiceName] [binPath= ] <параметр1= > <параметр2= >
ServiceName — указывает имя, которое будет присвоено разделу службы в реестре. Имейте в виду, что это имя отличается от отображаемого имени службы (имени, которое отображается в оснастке «Services»);
binPath — указывает путь к исполняемому файлу службы.
Для примера создадим службу MyService, укажем отображаемое имя My New Service, зададим тип службы и поставим ее на авто-запуск:
Sc create MyService binPath=C:MyServiceMyService.exe DisplayName=″My New Service″ type=own start=auto
Затем откроем оснастку «Services» и посмотрим результат.
Изменять параметры уже созданной службы можно командой Sc config. Например, мне не понравилось отображаемое имя службы и я хочу его изменить:
Sc config MyService DisplayName=″My Service″
Ну и полностью удалить службу можно вот так:
Sc delete MyService
PowerShell
PowerShell может почти все 🙂 , в том числе и управлять службами Windows. Создать новую службу можно с помощью командлета New-Service. Создадим такой же сервис, как и в предыдущем примере, только добавим к нему описание (Description):
New-Service -Name MyService -BinaryPathName C:MyServiceMyService.exe`
-DisplayName ″My New Service″ -Description ″Very Important Service !!!″
Изменить параметры службы можно командлетом Set-Service:
Set-Service -Name MyService -Description ″Not Very Important Service″ -StartupType Manual
В принципе PowerShell имеет примерно такой же функционал как и Sc.exe, разве что позволяет добавить описание. А вот для удаления служб в PS простого способа нет, придется воспользоваться вот такой конструкцией:
(Get-WmiObject win32_service -Filter ″name=′MyService′″).delete()
Поэтому лично я предпочитаю использовать Sc.exe.
Чтобы запустить службу в Windows 10, выполните следующие действия:
- Откройте «Старт».
- Найдите службы и щелкните верхний результат, чтобы открыть консоль.
- Дважды щелкните службу, которую хотите остановить.
- Щелкните кнопку «Пуск». Источник: Windows Central.
- Нажмите кнопку Применить.
- Нажмите кнопку ОК.
Как мне установить услугу?
Если вы разрабатываете службу Windows с использованием. NET Framework, вы можете быстро установить приложение-службу с помощью Утилита командной строки InstallUtil.exe или PowerShell.
Выполните следующее:
- Запустите командную строку (CMD) с правами администратора.
- Введите c: windowsmicrosoft.netframeworkv4. 0.30319installutil.exe [путь вашей службы Windows к exe]
- Нажимаем return и все!
Может ли EXE запускаться как служба?
Обратите внимание, что это не будет работать для любого исполняемого файла: исполняемый файл должен быть службой Windows (т.е. внедрить ServiceMain).
Как мне вручную создать службу Windows?
Чтобы создать услугу:
- Откройте командную строку Windows от имени администратора.
- Введите sc.exe create SERVICE NAME binpath = «SERVICE FULL PATH».
- не оставляйте места в НАЗВАНИЕ СЕРВИСА.
- После binpath = и перед »должен быть пробел.
- в SERVICE FULL PATH укажите полный путь к исполняемому файлу службы.
- Пример:
Как мне зарегистрировать службу Windows?
Шаги
- Остановите сервер с помощью bin / stop-server. Сервер не может быть зарегистрирован во время его работы.
- Зарегистрируйте сервер как сервис. В командной строке Windows запустите bat / register-windows-service. …
- После регистрации сервера запустите сервер из Панели управления службами Windows или с помощью bat / start-server.
Как запустить службу?
Вот как настроить себя на успех.
- Убедитесь, что люди будут платить за ваши услуги. Это звучит просто, но от этого зависит ваш успех. …
- Начните медленно. …
- Реалистично оценивайте свои доходы. …
- Составьте письменную стратегию. …
- Приведите свои финансы в порядок. …
- Изучите свои юридические требования. …
- Получите страховку. …
- Воспитывать себя.
Что такое службы Windows?
Службы Microsoft Windows, ранее известные как службы NT, позволяют создавать долго работающие исполняемые приложения, которые запускаются в своих собственных сеансах Windows. Эти службы могут запускаться автоматически при загрузке компьютера, могут быть приостановлены и перезапущены и не отображают никакого пользовательского интерфейса.
Как запустить локальную службу в Windows?
Как: запустить службу Windows как консольное приложение
- Добавьте в свою службу метод, запускающий методы OnStart и OnStop:…
- Перепишите метод Main следующим образом:…
- На вкладке «Приложение» свойств проекта установите для параметра «Тип вывода» значение «Консольное приложение».
- Выберите Начать отладку (F5).
Как управлять службами Windows?
Windows всегда использовала панель услуг как способ управления службами, работающими на вашем компьютере. Вы можете легко попасть туда в любой момент, просто нажав WIN + R на клавиатуре, чтобы открыть диалоговое окно «Выполнить», и введя сервисы. msc.
Где расположены службы Windows?
Во всех версиях Windows к Службам также можно получить доступ с помощью Консоль управления компьютером. Начните с открытия «Управление компьютером». В левой части окна «Управление компьютером» есть раздел «Службы и приложения». Откройте его и дважды щелкните «Службы».
Может ли служба Windows запустить приложение?
Службы Windows не могут запускать дополнительные приложения потому что они не работают в контексте какого-либо конкретного пользователя. В отличие от обычных приложений Windows, службы теперь запускаются в изолированном сеансе и им запрещено взаимодействовать с пользователем или рабочим столом.
Как установить EXE-файл как услугу?
Прежде всего, перейдите к . net framework, а затем запустите installutil.exe с указанием пути к исполняемому файлу Windows server.. Это установит службу в вашу систему.
Как запустить приложение как службу?
Запустить приложение как службу Windows
- Запустите службу. Чтобы запустить службу, используйте следующую команду Powershell: Копировать Start-Service -Name «ExampleService»
- Остановите службу. Чтобы остановить службу, используйте следующую команду Powershell: Копировать Stop-Service -Name «ExampleService»
- Удалите службу.
Содержание
- 1 Создание службы с помощью программы Sc.exe
- 2 С помощью утилиты PowerShell
- 3 Управление компьютером
- 4 Диспетчер задач
- 5 Конфигурация системы
Бывает, что имеется некий исполняемый файл, который необходимо зарегистрировать в системе как службу Windows 10. Существует множество различных способов, которые позволяют это сделать. Сейчас мы рассмотрим два основных и проверенных метода создания службы Windows.
Создание службы с помощью программы Sc.exe
Первый способ позволяет создавать службы, используя утилиты, работающие через командную строку. В данном случае, используется инструмент sc.exe. Он позволяет взаимодействовать с функциями API и выполнять операции со службами Windows 10. Несмотря на то, что данная программа даже не обладает графическим интерфейсом, она является мощным инструментом и может контролировать состояние служб, создавать, редактировать и управлять ими. Если создавать службу, с помощью sc.exe, то не возникает необходимости в изменении параметров реестра и списка служб в диспетчере. Кроме того, утилита способна работать со службами на локальном компьютере, и выполнять те же действия на удаленных машинах. Чтобы создать новый сервис, откройте командную строку от имени администратора и запустите команду «Sc create». Она запишет новую службу к базе диспетчера служб. Синтаксис команды представлен следующим образом:
sc create [ServiceName] [binPath= ] <параметр1= ><параметр2= >
Где:
- BinPath — в этом параметре записываем путь, где хранится исполняемый файл.
Чтобы было понятнее, в качестве примера, мы создадим службу «MySevice». При этом, отображаемое имя будет «My New Service». Указываем тип службы и включаем автозапуск:
Sc create MyService binPath=C:MyServiceMyService.exe DisplayName=″My New Service″ type=own start=auto
Теперь откройте оснастку «Services» и взгляните на то, что получилось:
Параметры службы, которая уже была создана и запущена, можно изменить при помощи команды Sc config. К примеру, мы заменим имя службы, которое отображается как:
Sc config MyService DisplayName=″My Service″
А еще можно избавиться от службы полным ее удалением. Для этого используйте такую команду:
Sc delete MyService
С помощью утилиты PowerShell
Ну а с помощью такого мощного инструмента, как PowerShell можно хоть горы двигать. Он обладает большими возможностями и способен работать с различными службами. Здесь, для добавления новой службы, существует специальная команда «New -Service». Давайте попробуем новую службу, как и в прошлом примере, будем использовать те же имена и значения, только добавим дополнительный параметр, в виде описания. И так, команда, для создания нового сервиса, выглядит следующим образом:
New-Service -Name MyService -BinaryPathName C:MyServiceMyService.exe` -DisplayName ″My New Service″ -Description ″Very Important Service !!!″
Для изменения параметров служб, существует команда «Set -Service»:
Set-Service -Name MyService -Description ″Not Very Important Service″ -StartupType Manual
Если не считать дополнительную возможность добавления описаний к службам, PowerShell обладает таким же функционалом, как и утилита Sc.exe. Но есть один маленький минус — здесь нет простой команды для удаления службы. Поэтому приходиться использовать такой вот, немного мудреный, код:
(Get-WmiObject win32_service -Filter ″name=′MyService′″).delete()
Так что утилита sc.exe, в этом плане будет получше. И по этой причине я предпочитаю именно ее.
В опытных пользователей есть возможность запускать или останавливать службы используя средства управления операционной системы Windows 10. Средства управления часто используются для отключения не нужных служб и уменьшения нагрузки на процессор или жёсткий диск. Поэтому необходимо знать какие способы быстрее всего позволяют перейти к управлению службами операционной системы.
Данная статья расскажет как открыть службы в Windows 10, чтобы получить возможность их запуска, остановки или перезапуска. Именно благодаря средствам управления службами можно посмотреть полный список служб. А также увидеть новые службы, которые появились в системе помимо служб Майкрософт из-за установки программного обеспечения стороннего разработчика.
Управление компьютером
Средство выполнения команд позволяет открывать программы, папки, документы или ресурсы Интернета введя нужное имя. Окно управления службами можно открыть выполнив команду services.msc в окне Win+R. Смотрите также другие команды Выполнить в Windows 10.
Окно управления службами также с легкостью можно найти используя обновленный поиск Windows 10. Пользователю достаточно открыть поиск нажав комбинацию клавиш Win+Q, и в поисковой строке ввести Службы. А уже в результатах поиска выбрать классическое приложение Службы.
А также управлять службами можно используя средства окно Управление компьютером. Пользователю достаточно нажать правой кнопкой мыши по иконке компьютера в проводнике или на рабочем столе и выбрать пункт Управление. Дальше необходимо перейти в раздел Службыи приложения и выбрать средство Службы, позволяющее запускать, останавливать и настраивать службы Windows.
Смотрите также как добавить иконку Мой компьютер на рабочий стол в Windows 10. Поскольку нажатие правой кнопкой мышки на обычный ярлык компьютера, как это часто бывает в новичков не даст нужного результата.
Диспетчер задач
Возможность запустить, остановить, перезапустить или посмотреть подробности любой из служб есть в обновленном диспетчере задач.
- Откройте контекстное меню нажав правой кнопкой мыши на панели задач и выберите пункт Диспетчер задач или же воспользуйтесь сочетанием клавиш Ctrl+Shift+Esc.
- В открывшемся окне достаточно перейти в последнюю вкладку Службы чтобы получить возможность управления службами.
Пользователю достаточно нажать правой кнопкой мыши на нужной службе, чтобы получить возможность запустить, остановить или перезапустить её.
Конфигурация системы
Окно конфигурации системы также позволяет управлять как службами операционной системы, так и службами, которые появляются из-за установки стороннего программного обеспечения. Смотрите также другие способы как можно зайти в MSConfig Windows 10.
- Выполните команду msconfig в окне Win+R или найдите Конфигурацию системы в поиске Windows 10.
- Дальше перейдите во вкладку Службы для управления службами.
Хорошей особенностью этого способа есть возможность отделить сторонние службы от служб Майкрософт отметив пункт Не отображать службы Майкрософт. А также обратите внимание что некоторые службы безопасности Майкрософт не могут быть отключены.
Заключение
Производить управления службами можно используя разные не всем известные средства системы. Для этого необходимо всего лишь знать каким образом открыть службы в Windows 10 чтобы посмотреть полный список, а также иметь возможность управлять службами с удобного интерфейса.
Мы же рекомендуем использовать способ с выполнением одной команды в окне выполнить. А также есть вариант найти классическое приложение служб на системном диске и например создать ярлык. Если же Вы создадите ярлык приложения для управления службами, то при последующей необходимости настроить службы, Вы сэкономите немного времени.
Неведомыми мне путями возникла проблема запуска одной из служб, когда она не хотели ни создаваться, ни удаляться. Инсталлятор программного обеспечения просто отказывался что либо делать с некорректно работающей службой. Пришлось немного покопать в «глубь», чтобы решить эту проблему. Существует несколько вариантов установки/удаления служб это через утилиту SC.exe, или с помощью Power Shell. И тот и другой инструмент присутствует по умолчанию в поставке Windows.
И так, как произвести установку службы с помощью SC.exe: 1.Обязательно запускаем командную строку от имени Администратора. 2. Копируем текст, и заменяем параметры на необходимые нам.
Sc create MyService binPath= C:MyServiceMyService.exe DisplayName= «My New Service» type= own start= auto
где,SC create — параметр указывающий, что мы хотим создать службу;MyService — Имя службы;binPath — путь до службы (если присутствуют пробелы в пути, то необходимо использовать двойные кавычки);DisplayName — Как будет отображаться название службы в диспетчере;type — тип службы;start — тип запуска службы.ВАЖНО! следите за пробелами в командах, после параметра пробел не нужен, но после знака равно обязателен, в противном случае будет ошибка (пример: type= own)
Удаление службы:
Sc delete MyService
При необходимости, можно изменить ошибочные параметры (но мне проще удалить службу и создать ее заново, кому как).
Sc config MyService DisplayName=»My Service one»
Как произвести установку службы с помощью Power Shell.
New-Service -Name MyService -BinaryPathName C:MyServiceMyService.exe -DisplayName «My New Service» -Description «New MyService»
Отличие от SC.exe только в одном, в этой команде можно добавить описание службы (для кого то это важно).
Удаление службы:
(Get-WmiObject win32_service -Filter ″name=′MyService′″).delete()
Изменить параметры службы можно c помощью команды Set-Service:
Set-Service -Name MyService -Description ″Not Very Important Service″ -StartupType ManualИспользуемые источники:
- https://prostocomp.net/sistema/sozdanie-sluzhby-v-windows.html
- https://windd.ru/kak-otkryt-sluzhby-v-windows-10/
- http://www.r2d2.pro/sozdanie-i-udalenie-sluzhby-windows/
Иногда может потребоваться взять исполняемый файл и зарегистрировать его в качестве службы Windows. Для этого есть несколько способов, я обычно пользуюсь двумя из них.
Sc.exe
Для создания и службы из командной строки можно использовать программу SC (Sc.exe). SC представляет из себя утилиту командной строки, которая реализует вызовы ко всем функциям интерфейса прикладного программирования (API) управления службами Windows. С ее помощью можно производить любые действия со службами — просматривать состояние, управлять (запускать, останавливать и т.п.), изменять параметры, а также создавать новые службы.
При создании службы с помощью SC нет необходимости вручную создавать записи в реестре и затем перезагружать компьютер, чтобы обеспечить обновление базы данных диспетчером служб. Также SC позволяет указать имя удаленного компьютера, что дает возможность управлять службами как на локальном, так и на удаленном компьютере.
Для создания нового сервиса запускаем команду Sc create. Она создает запись службы в реестре и в базе данных диспетчера служб. Sc create имеет следующий синтаксис:
sc create [ServiceName] [binPath= ] <параметр1= > <параметр2= >
ServiceName — указывает имя, которое будет присвоено разделу службы в реестре. Имейте в виду, что это имя отличается от отображаемого имени службы (имени, которое отображается в оснастке «Services»);
binPath — указывает путь к исполняемому файлу службы.
Для примера создадим службу MyService, укажем отображаемое имя My New Service, зададим тип службы и поставим ее на авто-запуск:
Sc create MyService binPath=C:MyServiceMyService.exe DisplayName=″My New Service″ type=own start=auto
Затем откроем оснастку «Services» и посмотрим результат.
Изменять параметры уже созданной службы можно командой Sc config. Например, мне не понравилось отображаемое имя службы и я хочу его изменить:
Sc config MyService DisplayName=″My Service″
Ну и полностью удалить службу можно вот так:
Sc delete MyService
PowerShell
PowerShell может почти все 🙂 , в том числе и управлять службами Windows. Создать новую службу можно с помощью командлета New-Service. Создадим такой же сервис, как и в предыдущем примере, только добавим к нему описание (Description):
New-Service -Name MyService -BinaryPathName C:MyServiceMyService.exe`
-DisplayName ″My New Service″ -Description ″Very Important Service !!!″
Изменить параметры службы можно командлетом Set-Service:
Set-Service -Name MyService -Description ″Not Very Important Service″ -StartupType Manual
В принципе PowerShell имеет примерно такой же функционал как и Sc.exe, разве что позволяет добавить описание. А вот для удаления служб в PS простого способа нет, придется воспользоваться вот такой конструкцией:
(Get-WmiObject win32_service -Filter ″name=′MyService′″).delete()
Поэтому лично я предпочитаю использовать Sc.exe.
Бывает, что имеется некий исполняемый файл, который необходимо зарегистрировать в системе как службу Windows 10. Существует множество различных способов, которые позволяют это сделать. Сейчас мы рассмотрим два основных и проверенных метода создания службы Windows.
Создание службы с помощью программы Sc.exe
Первый способ позволяет создавать службы, используя утилиты, работающие через командную строку. В данном случае, используется инструмент sc.exe. Он позволяет взаимодействовать с функциями API и выполнять операции со службами Windows 10. Несмотря на то, что данная программа даже не обладает графическим интерфейсом, она является мощным инструментом и может контролировать состояние служб, создавать, редактировать и управлять ими.
Если создавать службу, с помощью sc.exe, то не возникает необходимости в изменении параметров реестра и списка служб в диспетчере. Кроме того, утилита способна работать со службами на локальном компьютере, и выполнять те же действия на удаленных машинах.
Чтобы создать новый сервис, откройте командную строку от имени администратора и запустите команду «Sc create». Она запишет новую службу к базе диспетчера служб. Синтаксис команды представлен следующим образом:
sc create [ServiceName] [binPath= ] <параметр1= > <параметр2= >
Где:
ServiceName — данным параметром определяется имя раздела службы в реестре;
Данное имя не совпадает с тем именем, которое будет отображаться диспетчере (например, в Services).
BinPath — в этом параметре записываем путь, где хранится исполняемый файл.
Чтобы было понятнее, в качестве примера, мы создадим службу «MySevice». При этом, отображаемое имя будет «My New Service». Указываем тип службы и включаем автозапуск:
Sc create MyService binPath=C:MyServiceMyService.exe DisplayName=″My New Service″ type=own start=auto
Теперь откройте оснастку «Services» и взгляните на то, что получилось.
Параметры службы, которая уже была создана и запущена, можно изменить при помощи команды Sc config. К примеру, мы заменим имя службы, которое отображается как:
Sc config MyService DisplayName=″My Service″
А еще можно избавиться от службы полным ее удалением. Для этого используйте такую команду:
Sc delete MyService
С помощью утилиты PowerShell
Ну а с помощью такого мощного инструмента, как PowerShell можно хоть горы двигать. Он обладает большими возможностями и способен работать с различными службами. Здесь, для добавления новой службы, существует специальная команда «New -Service». Давайте попробуем новую службу, как и в прошлом примере, будем использовать те же имена и значения, только добавим дополнительный параметр, в виде описания. И так, команда, для создания нового сервиса, выглядит следующим образом:
New-Service -Name MyService -BinaryPathName C:MyServiceMyService.exe` -DisplayName ″My New Service″ -Description ″Very Important Service !!!″
Для изменения параметров служб, существует команда «Set -Service»:
Set-Service -Name MyService -Description ″Not Very Important Service″ -StartupType Manual
Если не считать дополнительную возможность добавления описаний к службам, PowerShell обладает таким же функционалом, как и утилита Sc.exe. Но есть один маленький минус — здесь нет простой команды для удаления службы. Поэтому приходиться использовать такой вот, немного мудреный, код:
(Get-WmiObject win32_service -Filter ″name=′MyService′″).delete()
Так что утилита sc.exe, в этом плане будет получше. И по этой причине я предпочитаю именно ее.
Время прочтения
6 мин
Просмотры 61K
Однажды вы задумаетесь, как превратить скрипт или приложение в 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:temprktoolssrvany.exe
Где WebServ — имя нашего нового сервиса. При необходимости через оснастку services.msc можно задать пользователя, под которым будет запускаться служба, и разрешить взаимодействие с рабочим столом.
Теперь пропишем путь к нашему скрипту при помощи магии реестра. Параметры службы есть в разделе реестра HKLMSYSTEMCurrentControlSetServicesWebServ. В нем нам нужно добавить новый раздел Parameters и создать там строковый параметр Application, указав в нем путь к исполняемому файлу. В случае скрипта PowerShell он будет выглядеть так:
C:WindowsSystem32WindowsPowerShellv1.0powershell.exe -ExecutionPolicy Bypass -NoProfile -File C:tempPolarisserver.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:tempPolarisserver.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:WindowsSystem32WindowsPowerShellv1.0powershell.exe -ExecutionPolicy Bypass -NoProfile -File C:tempPolarisserver.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 AUTHORITYNetworkService")
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 10, выполните следующие действия:
- Откройте «Старт».
- Найдите службы и щелкните верхний результат, чтобы открыть консоль.
- Дважды щелкните службу, которую хотите остановить.
- Щелкните кнопку «Пуск». Источник: Windows Central.
- Нажмите кнопку Применить.
- Нажмите кнопку ОК.
Как мне установить услугу?
Если вы разрабатываете службу Windows с использованием. NET Framework, вы можете быстро установить приложение-службу с помощью Утилита командной строки InstallUtil.exe или PowerShell.
Как установить новую службу в Windows?
Выполните следующее:
- Запустите командную строку (CMD) с правами администратора.
- Введите c: windowsmicrosoft.netframeworkv4. 0.30319installutil.exe [путь вашей службы Windows к exe]
- Нажимаем return и все!
Может ли EXE запускаться как служба?
Обратите внимание, что это не будет работать для любого исполняемого файла: исполняемый файл должен быть службой Windows (т.е. внедрить ServiceMain).
Как мне вручную создать службу Windows?
Чтобы создать услугу:
- Откройте командную строку Windows от имени администратора.
- Введите sc.exe create SERVICE NAME binpath = «SERVICE FULL PATH».
- не оставляйте места в НАЗВАНИЕ СЕРВИСА.
- После binpath = и перед »должен быть пробел.
- в SERVICE FULL PATH укажите полный путь к исполняемому файлу службы.
- Пример:
Как мне зарегистрировать службу Windows?
Шаги
- Остановите сервер с помощью bin / stop-server. Сервер не может быть зарегистрирован во время его работы.
- Зарегистрируйте сервер как сервис. В командной строке Windows запустите bat / register-windows-service. …
- После регистрации сервера запустите сервер из Панели управления службами Windows или с помощью bat / start-server.
Как запустить службу?
Вот как настроить себя на успех.
- Убедитесь, что люди будут платить за ваши услуги. Это звучит просто, но от этого зависит ваш успех. …
- Начните медленно. …
- Реалистично оценивайте свои доходы. …
- Составьте письменную стратегию. …
- Приведите свои финансы в порядок. …
- Изучите свои юридические требования. …
- Получите страховку. …
- Воспитывать себя.
Что такое службы Windows?
Службы Microsoft Windows, ранее известные как службы NT, позволяют создавать долго работающие исполняемые приложения, которые запускаются в своих собственных сеансах Windows. Эти службы могут запускаться автоматически при загрузке компьютера, могут быть приостановлены и перезапущены и не отображают никакого пользовательского интерфейса.
Как запустить локальную службу в Windows?
Как: запустить службу Windows как консольное приложение
- Добавьте в свою службу метод, запускающий методы OnStart и OnStop:…
- Перепишите метод Main следующим образом:…
- На вкладке «Приложение» свойств проекта установите для параметра «Тип вывода» значение «Консольное приложение».
- Выберите Начать отладку (F5).
Как управлять службами Windows?
Windows всегда использовала панель услуг как способ управления службами, работающими на вашем компьютере. Вы можете легко попасть туда в любой момент, просто нажав WIN + R на клавиатуре, чтобы открыть диалоговое окно «Выполнить», и введя сервисы. msc.
Где расположены службы Windows?
Во всех версиях Windows к Службам также можно получить доступ с помощью Консоль управления компьютером. Начните с открытия «Управление компьютером». В левой части окна «Управление компьютером» есть раздел «Службы и приложения». Откройте его и дважды щелкните «Службы».
Может ли служба Windows запустить приложение?
Службы Windows не могут запускать дополнительные приложения потому что они не работают в контексте какого-либо конкретного пользователя. В отличие от обычных приложений Windows, службы теперь запускаются в изолированном сеансе и им запрещено взаимодействовать с пользователем или рабочим столом.
Как установить EXE-файл как услугу?
Прежде всего, перейдите к . net framework, а затем запустите installutil.exe с указанием пути к исполняемому файлу Windows server.. Это установит службу в вашу систему.
Как запустить приложение как службу?
Запустить приложение как службу Windows
- Запустите службу. Чтобы запустить службу, используйте следующую команду Powershell: Копировать Start-Service -Name «ExampleService»
- Остановите службу. Чтобы остановить службу, используйте следующую команду Powershell: Копировать Stop-Service -Name «ExampleService»
- Удалите службу.
Содержание
- 1 Создание службы с помощью программы Sc.exe
- 2 С помощью утилиты PowerShell
- 3 Управление компьютером
- 4 Диспетчер задач
- 5 Конфигурация системы
Бывает, что имеется некий исполняемый файл, который необходимо зарегистрировать в системе как службу Windows 10. Существует множество различных способов, которые позволяют это сделать. Сейчас мы рассмотрим два основных и проверенных метода создания службы Windows.
Создание службы с помощью программы Sc.exe
Первый способ позволяет создавать службы, используя утилиты, работающие через командную строку. В данном случае, используется инструмент sc.exe. Он позволяет взаимодействовать с функциями API и выполнять операции со службами Windows 10. Несмотря на то, что данная программа даже не обладает графическим интерфейсом, она является мощным инструментом и может контролировать состояние служб, создавать, редактировать и управлять ими. Если создавать службу, с помощью sc.exe, то не возникает необходимости в изменении параметров реестра и списка служб в диспетчере. Кроме того, утилита способна работать со службами на локальном компьютере, и выполнять те же действия на удаленных машинах. Чтобы создать новый сервис, откройте командную строку от имени администратора и запустите команду «Sc create». Она запишет новую службу к базе диспетчера служб. Синтаксис команды представлен следующим образом:
sc create [ServiceName] [binPath= ] <параметр1= ><параметр2= >
Где:
- BinPath — в этом параметре записываем путь, где хранится исполняемый файл.
Чтобы было понятнее, в качестве примера, мы создадим службу «MySevice». При этом, отображаемое имя будет «My New Service». Указываем тип службы и включаем автозапуск:
Sc create MyService binPath=C:MyServiceMyService.exe DisplayName=″My New Service″ type=own start=auto
Теперь откройте оснастку «Services» и взгляните на то, что получилось:
Параметры службы, которая уже была создана и запущена, можно изменить при помощи команды Sc config. К примеру, мы заменим имя службы, которое отображается как:
Sc config MyService DisplayName=″My Service″
А еще можно избавиться от службы полным ее удалением. Для этого используйте такую команду:
Sc delete MyService
С помощью утилиты PowerShell
Ну а с помощью такого мощного инструмента, как PowerShell можно хоть горы двигать. Он обладает большими возможностями и способен работать с различными службами. Здесь, для добавления новой службы, существует специальная команда «New -Service». Давайте попробуем новую службу, как и в прошлом примере, будем использовать те же имена и значения, только добавим дополнительный параметр, в виде описания. И так, команда, для создания нового сервиса, выглядит следующим образом:
New-Service -Name MyService -BinaryPathName C:MyServiceMyService.exe` -DisplayName ″My New Service″ -Description ″Very Important Service !!!″
Для изменения параметров служб, существует команда «Set -Service»:
Set-Service -Name MyService -Description ″Not Very Important Service″ -StartupType Manual
Если не считать дополнительную возможность добавления описаний к службам, PowerShell обладает таким же функционалом, как и утилита Sc.exe. Но есть один маленький минус — здесь нет простой команды для удаления службы. Поэтому приходиться использовать такой вот, немного мудреный, код:
(Get-WmiObject win32_service -Filter ″name=′MyService′″).delete()
Так что утилита sc.exe, в этом плане будет получше. И по этой причине я предпочитаю именно ее.
В опытных пользователей есть возможность запускать или останавливать службы используя средства управления операционной системы Windows 10. Средства управления часто используются для отключения не нужных служб и уменьшения нагрузки на процессор или жёсткий диск. Поэтому необходимо знать какие способы быстрее всего позволяют перейти к управлению службами операционной системы.
Данная статья расскажет как открыть службы в Windows 10, чтобы получить возможность их запуска, остановки или перезапуска. Именно благодаря средствам управления службами можно посмотреть полный список служб. А также увидеть новые службы, которые появились в системе помимо служб Майкрософт из-за установки программного обеспечения стороннего разработчика.
Управление компьютером
Средство выполнения команд позволяет открывать программы, папки, документы или ресурсы Интернета введя нужное имя. Окно управления службами можно открыть выполнив команду services.msc в окне Win+R. Смотрите также другие команды Выполнить в Windows 10.
Окно управления службами также с легкостью можно найти используя обновленный поиск Windows 10. Пользователю достаточно открыть поиск нажав комбинацию клавиш Win+Q, и в поисковой строке ввести Службы. А уже в результатах поиска выбрать классическое приложение Службы.
А также управлять службами можно используя средства окно Управление компьютером. Пользователю достаточно нажать правой кнопкой мыши по иконке компьютера в проводнике или на рабочем столе и выбрать пункт Управление. Дальше необходимо перейти в раздел Службыи приложения и выбрать средство Службы, позволяющее запускать, останавливать и настраивать службы Windows.
Смотрите также как добавить иконку Мой компьютер на рабочий стол в Windows 10. Поскольку нажатие правой кнопкой мышки на обычный ярлык компьютера, как это часто бывает в новичков не даст нужного результата.
Диспетчер задач
Возможность запустить, остановить, перезапустить или посмотреть подробности любой из служб есть в обновленном диспетчере задач.
- Откройте контекстное меню нажав правой кнопкой мыши на панели задач и выберите пункт Диспетчер задач или же воспользуйтесь сочетанием клавиш Ctrl+Shift+Esc.
- В открывшемся окне достаточно перейти в последнюю вкладку Службы чтобы получить возможность управления службами.
Пользователю достаточно нажать правой кнопкой мыши на нужной службе, чтобы получить возможность запустить, остановить или перезапустить её.
Конфигурация системы
Окно конфигурации системы также позволяет управлять как службами операционной системы, так и службами, которые появляются из-за установки стороннего программного обеспечения. Смотрите также другие способы как можно зайти в MSConfig Windows 10.
- Выполните команду msconfig в окне Win+R или найдите Конфигурацию системы в поиске Windows 10.
- Дальше перейдите во вкладку Службы для управления службами.
Хорошей особенностью этого способа есть возможность отделить сторонние службы от служб Майкрософт отметив пункт Не отображать службы Майкрософт. А также обратите внимание что некоторые службы безопасности Майкрософт не могут быть отключены.
Заключение
Производить управления службами можно используя разные не всем известные средства системы. Для этого необходимо всего лишь знать каким образом открыть службы в Windows 10 чтобы посмотреть полный список, а также иметь возможность управлять службами с удобного интерфейса.
Мы же рекомендуем использовать способ с выполнением одной команды в окне выполнить. А также есть вариант найти классическое приложение служб на системном диске и например создать ярлык. Если же Вы создадите ярлык приложения для управления службами, то при последующей необходимости настроить службы, Вы сэкономите немного времени.
Неведомыми мне путями возникла проблема запуска одной из служб, когда она не хотели ни создаваться, ни удаляться. Инсталлятор программного обеспечения просто отказывался что либо делать с некорректно работающей службой. Пришлось немного покопать в «глубь», чтобы решить эту проблему. Существует несколько вариантов установки/удаления служб это через утилиту SC.exe, или с помощью Power Shell. И тот и другой инструмент присутствует по умолчанию в поставке Windows.
И так, как произвести установку службы с помощью SC.exe: 1.Обязательно запускаем командную строку от имени Администратора. 2. Копируем текст, и заменяем параметры на необходимые нам.
Sc create MyService binPath= C:MyServiceMyService.exe DisplayName= «My New Service» type= own start= auto
где,SC create — параметр указывающий, что мы хотим создать службу;MyService — Имя службы;binPath — путь до службы (если присутствуют пробелы в пути, то необходимо использовать двойные кавычки);DisplayName — Как будет отображаться название службы в диспетчере;type — тип службы;start — тип запуска службы.ВАЖНО! следите за пробелами в командах, после параметра пробел не нужен, но после знака равно обязателен, в противном случае будет ошибка (пример: type= own)
Удаление службы:
Sc delete MyService
При необходимости, можно изменить ошибочные параметры (но мне проще удалить службу и создать ее заново, кому как).
Sc config MyService DisplayName=»My Service one»
Как произвести установку службы с помощью Power Shell.
New-Service -Name MyService -BinaryPathName C:MyServiceMyService.exe -DisplayName «My New Service» -Description «New MyService»
Отличие от SC.exe только в одном, в этой команде можно добавить описание службы (для кого то это важно).
Удаление службы:
(Get-WmiObject win32_service -Filter ″name=′MyService′″).delete()
Изменить параметры службы можно c помощью команды Set-Service:
Set-Service -Name MyService -Description ″Not Very Important Service″ -StartupType ManualИспользуемые источники:
- https://prostocomp.net/sistema/sozdanie-sluzhby-v-windows.html
- https://windd.ru/kak-otkryt-sluzhby-v-windows-10/
- http://www.r2d2.pro/sozdanie-i-udalenie-sluzhby-windows/