Создание службы Windows из исполняемого файла

есть ли быстрый способ, учитывая исполняемый файл, создать службу Windows, которая при запуске запускает ее?

6 ответов


создать службу Windows из исполняемого файла, вы можете использовать sc.exe:

sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"

вы должны иметь кавычки вокруг фактического exe путь, и пробел после binPath=.

подробнее о sc команда может быть найдена в Microsoft KB251192.

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

ошибка 1053: служба не ответила на запрос запуска или управления своевременно.

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


использовать NSSM (не сосать менеджер по обслуживанию ), чтобы запустить .Bat или любой .EXE файл как сервис.

http://nssm.cc/

  • Шаг 1: скачать NSSM
  • Шаг 2: установите ваш сервис с nssm.exe install [serviceName]
  • Шаг 3: это откроет GUI, который вы будете использовать, чтобы найти исполняемый файл

расширение (Kevin Tong) ответ.

Шаг 1: Скачать И Распаковать nssm-2.24.zip

Шаг 2: из командной строки типа:

C:\> nssm.exe install [servicename]

Он откроет GUI, как показано ниже (пример-UT2003 server), а затем просто просмотрите его: yourapplication.exe

enter image description here

дополнительная информация о:https://nssm.cc/usage


многие существующие ответы включают человеческое вмешательство во время установки. Это может быть процесс, подверженный ошибкам. Если у вас есть много исполняемых файлов, которые нужно установить как службы, последнее, что вы хотите сделать, это сделать их вручную во время установки.

к вышеописанному сценарию, я создал Серман, инструмент командной строки для установки исполняемого файла в качестве службы. Все, что вам нужно написать (и только один раз), это простой файл конфигурации службы вместе с вашим выполнимый. Запустить

serman install <path_to_config_file>

установит сервис. stdout и stderr - все вошли. Для получения дополнительной информации, взгляните на сайт проекта.

рабочий конфигурационный файл очень прост, как показано ниже. Но он также имеет много полезных функций, таких как <env> и <persistent_env> ниже.

<service>
  <id>hello</id>
  <name>hello</name>
  <description>This service runs the hello application</description>

  <executable>node.exe</executable>

  <!-- 
       {{dir}} will be expanded to the containing directory of your 
       config file, which is normally where your executable locates 
   -->
  <arguments>"{{dir}}\hello.js"</arguments>

  <logmode>rotate</logmode>

  <!-- OPTIONAL FEATURE:
       NODE_ENV=production will be an environment variable 
       available to your application, but not visible outside 
       of your application
   -->
  <env name="NODE_ENV" value="production"/>

  <!-- OPTIONAL FEATURE:
       FOO_SERVICE_PORT=8989 will be persisted as an environment
       variable to the system.
   -->
  <persistent_env name="FOO_SERVICE_PORT" value="8989" />
</service>

эти дополнения пригодятся.. необходимо выполнить как администратор

sc install <service_name> binpath=<binary_path>
sc stop    <service_name>
sc queryex <service_name>
sc delete  <service_name>

если имя вашего сервиса имеет пробелы, заключите в "кавычки".


я протестировал хороший продукт для этого:AlwaysUp. Не бесплатно, но у них есть 30-дневный пробный период, поэтому вы можете попробовать...