Создать службу windows server

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

Службы Windows — запущенные в фоне приложения, которые работают независимо от пользователя компьютера, и управляются непосредственно самой операционной системой. По умолчанию, службами являются строго определенные приложения, однако, ничто не мешает пользователю создать их самому. Выполнить данную задачу можно несколькими способами — с использованием стандартных средств Windows, либо с использованием сторонней программы NSSM.

Входящая в Windows программа SC позволяет легко создавать службы Windows, а так же проводить другие различные с ними манипуляции — удаление, отключение, включение, и т. д. Создается служба достаточно просто, для этого достаточно запустить командную строку от имени администратора, и выполнить там следующую команду:

Удаляется же служба еще проще:

Однако, у данного метода есть один большой существенный недостаток — с помощью данной утилиты создать службу можно только из программы, которая поддерживает работу службой. По этому, запустить какое попало приложение как службу данным способом не получится — но, можно воспользоваться сторонней утилитой NSSM, о которой речь пойдет ниже.

NSSM — программа, предназначенная для создания служб из исполняемых файлов Windows, в том числе и из графических утилит, что ставит её на уровень выше средств от Microsoft. С её помощью можно запускать большинство приложений, даже которые рассчитаны на взаимодействие с пользователем.

Скачать данную программу можно с её официального сайта — nssm.cc.
На случай проблем с официальным сайтом, можно скачать программу с нашего сайта.

В архиве для скачивания можно найти версию для 64-битной версии Windows (папка win64), для 32-битной (папка win32) и исходные коды приложения (папка src). Выбираем нужное приложение под разрядность своей системы, копируем его в удобное для вас место на жестком диске. Никакая установка приложения не требуется.

  1. Предположим, нужно создать службу для веб-сервера nginx под Windows. Для этого, запускаем командную строку с правами администратора, и переходим в директорию с распакованным исполняемым файлом nssm.exe.
  2. Затем выполняем команду, начинающую установку службы:
  3. Откроется окно с настройками создаваемой службы.

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

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

    Вкладка «Log on» позволяет указать пользователя, под которым будет запускаться служба.Заполним все нужные поля и выбрав нужные настройки, остается только нажать кнопку «Install service«, для установки службы.
  4. После нажатия кнопки «Install service«, служба будет создана, но при этом запустить её нужно будет вручную (либо перезагрузить компьютер, чтобы служба с параметром запуска «Auto» запустилась при его запуске).

Так же удалить службу можно с помощью команды в командной строке:

Создать службу windows server

Данный материал является зеркалом статьи сайта Заметки о WINDOWS с некоторыми примечаниями из личного опыта.

Иногда может потребоваться взять исполняемый файл и зарегистрировать его в качестве службы Windows. Для этого есть несколько способов. Два из них приведены ниже.

Читайте также:  Команды linux для архивации

Для создания и службы из командной строки можно использовать программу SC (Sc.exe). SC представляет из себя утилиту командной строки, которая реализует вызовы ко всем функциям интерфейса прикладного программирования (API) управления службами Windows. С ее помощью можно производить любые действия со службами — просматривать состояние, управлять (запускать, останавливать и т.п.), изменять параметры, а также создавать новые службы.

При создании службы с помощью SC нет необходимости вручную создавать записи в реестре и затем перезагружать компьютер, чтобы обеспечить обновление базы данных диспетчером служб. Также SC позволяет указать имя удаленного компьютера, что дает возможность управлять службами как на локальном, так и на удаленном компьютере.

Для создания нового сервиса запускаем команду Sc create . Она создает запись службы в реестре и в базе данных диспетчера служб. Sc create имеет следующий синтаксис:

sc create [ServiceName] [binPath= ]

ServiceName — указывает имя, которое будет присвоено разделу службы в реестре. Имейте в виду, что это имя отличается от отображаемого имени службы (имени, которое отображается в оснастке «Services»);
binPath — указывает путь к исполняемому файлу службы.

Для примера создадим службу MyService, укажем отображаемое имя My New Service, зададим тип службы и поставим ее на авто-запуск:

Sc create MyService binPath=C:\MyService\MyService.exe DisplayName=″My New Service″ type=own start=auto

Затем откроем оснастку «Services» и посмотрим результат.

Изменять параметры уже созданной службы можно командой Sc config . Например, мне не понравилось отображаемое имя службы и я хочу его изменить:

Sc config MyService DisplayName=″My Service″

Ну и полностью удалить службу можно вот так:

Sc delete MyService

Примечание. Есть некоторые особенности использования утилиты sc. Например при создании сервиса в Windows XP необходимо ставить пробел перед аргументом, передаваемым параметру!

Если мы подадим команду:

C:\sc create Weblogic binPath=C:\Oracle\MiddleWare\user_projects\base_domain\startWeblogic.cmd DisplayName=»WebLogic» type=share start=auto error=ignore

В ответ получим help по использованию sc без какого либо сообщения об ошибке:

Подаем ту же команду вставив пробелы после символа «=»:

C:\>sc create Weblogic binPath= C:\Oracle\MiddleWare\user_projects\base_domain\startWeblogic.cmd DisplayName= «WebLogic» type= share start= auto error= ignore

[SC] CreateService SUCCESS

Вот такая недокументированная особенность.

Так же необходимо внимательно относится к прочим параметрам. В случае приведенном ниже изменены значения параметров start и type:

[SC] CreateService FAILED 87:

и после двоеточия никаких пояснений.

Подробное значение параметров можно посмотреть здесь или здесь.

Для изменения параметров системной службы нужно ввести новые параметры командой:

Для остановки службы:

Для перезагрузки службы:

Если требуется определить, какие службы будут зависеть от данной службы, можно набратьsc enumpend

Теперь, чтобы увидеть, какие службы находятся в зависимости от службы сервера под названием lanmanserver, надо подать команду

sc enumdepend Lanmanserver

Запуск такой команды на моем тестовом сервере Windows 2003, например, показывает, что службы Netlogon, Dfs, а также службы браузера компьютера находятся в зависимости от службы сервера.

Для завершения и определения зависимостей сервера можно воспользоваться подкомандой qc, как показано ниже

sc qc Lanmanserver

Эта команда выдает девять строчек информации о службе, одна из которых DEPENDENCIES. При запуске этой команды выясняется, что сервер не зависит ни от каких служб. Чтобы узнать, какие службы имеют более одной зависимости, можно протестировать диспетчер на службе Netlogon. Мы увидим, что служба Netlogon для начала работы требует запуска служб и сервера, и Workstation.

Иногда зависимости бывают более сложными. Например, некоторые службы могут начать работу, только если запущена одна из трех других служб. Запуск всех трех необязателен, вполне достаточно одной. Можно проинструктировать Windows по поводу такой динамики, информируя систему о том, что данная служба находится в зависимости от группы служб. В системе Windows имеется целый ряд таких служб, как, например, SCSI CDROM Class, SCSI miniport, Parallel arbitrator, NetBIOSGroup, NDIS, а также службы первичного диска и многие другие. Все эти службы и драйверы можно увидеть в списке групп, набрав

Читайте также:  Расширить диск виртуальной машины vmware linux

sc query type= service?driver?all group=

Например, чтобы посмотреть все службы и драйверы в группе служб первичного диска, нужно набрать

sc query type= all group=

Названия групп значения не имеют. Можно добавлять службы в имеющиеся группы или создавать новые группы служб, добавив команду group= groupname в команду SC Create или используя SC Config для сохранения службы в какую-либо группу. Например, чтобы добавить службу Webimagemailer в новую группу под названием unimportant, надо набрать

sc config webimagemailer group= unimportant

Однако нельзя поместить службу или драйвер в более чем одну группу служб.

Кроме того, можно сделать так, чтобы не происходила загрузка службы Webimagemailer без необходимой группы служб. Чтобы определить фиктивную группу Webstartup, воспользуемся параметром depends= webstartup. Чтобы указать Windows, что Webstartup — это группа, а не еще одна служба, следует перед ее именем поставить знак «плюс». Например, для перенастройки службы Webimagemailer на зависимость от группы запуска Webstartup, надо набрать

sc config webimagemailer depends= +webstartup

Таким образом, мы выяснили, как использовать зависимости и группы для более детального управления порядком загрузки службы. И теперь никто не удивится, почему я был так доволен, когда несколько лет назад обнаружил диспетчер SC.

PowerShell может почти все, в том числе и управлять службами Windows. Создать новую службу можно с помощью командлета New-Service . Создадим такой же сервис, как и в предыдущем примере, только добавим к нему описание (Description):

New-Service -Name MyService -BinaryPathName C:\MyService\MyService.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 CREATE

Команда 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= группа_порядка_загрузки — Указывает имя группы, членом которой является эта служба. Список групп сохраняется в реестре в подразделе HKLM\System\CurrentControlSet\Control\ServiceGroupOrder. Значение по умолчанию является пустым.
  • tag= — Указывает, следует ли получить код TagID из вызова CreateService. Теги используются только драйверами, запускающимися при загрузке или запуске системы.
  • depend= зависимости — Указывает имена служб и групп, которые должны быть запущены раньше данной службы. Имена разделяются косой чертой (/).
  • obj= <имя_учетной_записи|имя_объекта>— Указывает имя учетной записи, для которой будет выполняться служба, или имя объекта драйвера Windows, в котором будет запущен драйвер
  • displayname= отображаемое_имя — Определяет понятное, точное имя для службы, которое используется в программах пользовательского интерфейса.
  • password= пароль — Задает пароль. Данный параметр требуется при использовании учетной записи, отличной от учетной записи «Локальная система».
  • /? — Отображает справку в командной строке.

Настройка и настройка службы серверов

В этой статье описывается настройка и настройка службы Windows Server.

Исходная версия продукта: Windows Server 2012 R2
Исходный номер КБ: 128167

Аннотация

Хотя служба Windows Server самонастройка, ее также можно настроить вручную с помощью службы панели управления. Обычно параметры конфигурации сервера настраиваются автоматически (вычисляются и устанавливаются) при каждой загрузке Windows. Однако при запуске NET CONFIG SERVER в сочетании с параметром OR текущие значения автоматически настроенных параметров отображаются и регистрируются /AUTODISCONNECT /SERVCOMMENT в /HIDDEN реестре. После записи этих параметров в реестр вы не сможете настроить службу сервера с помощью сетей панели управления.

Если вы добавляете или удаляете системную память или меняете параметры размера сервера свести к минимуму, сбалансировать или увеличить максимальную величину), Windows не будет автоматически настраивать службу сервера для новой конфигурации. Например, при запуске и добавлении памяти на компьютер Windows не увеличивает вычисляемую величину автоматически NET CONFIG SRV /SRVCOMMENT настроенных записей.

При вводе NET CONFIG SERVER в запросе cmd без дополнительных параметров автонастройка остается без изменений, при этом отображаются полезные сведения о конфигурации сервера.

Дополнительные сведения

Служба серверов поддерживает уровни информации, которые могут устанавливать каждый параметр по отдельности. Например, команда NET CONFIG SRV /HIDDEN использует уровень информации 1016, чтобы установить только скрытый параметр. Однако NET.EXE запросов и устанавливает уровни информации 102 (скрытые, комментарии, пользователи и параметры диска) и 502. В результате все параметры на уровне информации окончательно заданы в реестре. SRVMGR.EXE и сервер панели управления и установите только уровень 102 (не уровень 502) при изменении комментария сервера.

Администраторы, желающие скрыть компьютеры с Windows в списке просмотра или изменить значение автоподключения, должны внести эти изменения с помощью REGEDT32.EXE вместо эквивалентов командной строки, рассмотренных выше. Комментарий сервера можно изменить с помощью поля описания applet сервера панели управления или диспетчера серверов.

Решение

В этот раздел, описание метода или задачи включены действия, содержащие указания по изменению параметров реестра. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Для получения дополнительных сведений о том, как создать и восстановить реестр, щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:
322756 Создание резервной копии и восстановление реестра Windows

Чтобы восстановить параметры lan Manager Server до параметров по умолчанию или перенастроить Windows таким образом, чтобы она автоматически настраивала службу сервера:

Запустите редактор реестра (REGEDT32.EXE).

Из под HKEY_LOCAL_MACHINE подtree перейдите к следующему ключу:
\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

Удалите все записи, кроме следующих:
EnableSharedNetDrives
Lтовунс
NullSessionPipes
NullSessionShares
Size

Здесь могут быть другие записи, статически закодифицированные. Не удалять эти записи.

Запустите редактор реестра и перезапустите Windows.

Читайте также:  Microsoft office бессрочный для windows 10
Оцените статью