Есть ли какой-либо быстрый способ, с учетом исполняемого файла, создать службу Windows, которая при запуске запускает ее?
Создание службы Windows из исполняемого файла
Ответ 1
Чтобы создать службу Windows из исполняемого файла, вы можете использовать sc.exe
:
sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"
У вас должны быть кавычки вокруг фактического пути exe
и пробел после binPath=
.
Более подробную информацию о команде sc
можно найти в Microsoft KB251192.
Обратите внимание, что он не будет работать только для любого исполняемого файла: исполняемый файл должен быть службой Windows (i.e. реализовать ServiceMain). При регистрации исполняемого файла без обслуживания в качестве службы вы получите следующую ошибку при попытке запустить службу:
Ошибка 1053: служба не ответила на запрос запуска или управления своевременно.
Существуют инструменты, которые могут создавать Службу Windows из произвольных исполняемых файлов без обслуживания, см. другие ответы для примеров таких инструментов.
Ответ 2
Используйте NSSM (диспетчер служб несоответствия) для запуска.BAT или любого.EXE файла в качестве службы.
- Шаг 1: Загрузите NSSM
- Шаг 2: Установите ваше устройство с помощью
nssm.exe install [serviceName]
- Шаг 3. Это откроет графический интерфейс, который вы будете использовать для поиска исполняемого файла.
Ответ 3
Ответ на вопрос о продлении (Кевин Тонг).Шаг 1: Загрузите и распакуйте nssm-2.24.zip
Шаг 2: Из командной строки:
C:\> nssm.exe install [servicename]
он откроет графический интерфейс, как показано ниже (пример - сервер UT2003), а затем просто просмотрите его: yourapplication.exe
Дополнительная информация о: https://nssm.cc/usage
Ответ 4
Многие существующие ответы включают вмешательство человека во время установки. Это может быть процесс, подверженный ошибкам. Если у вас есть много исполняемых файлов, которые хотели бы быть установлены как службы, последнее, что вы хотите сделать, это сделать их вручную во время установки.
На пути к вышеописанному сценарию я создал serman, инструмент командной строки для установки исполняемого файла как службы. Все, что вам нужно написать (и писать только один раз), - это простой файл конфигурации службы вместе с вашим исполняемым файлом. Бежать
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>
Ответ 5
эти дополнительные функции оказываются полезными.. необходимо выполнить как администратор
sc install <service_name> binpath=<binary_path>
sc stop <service_name>
sc queryex <service_name>
sc delete <service_name>
Если ваше имя службы имеет пробелы, заключите в "кавычки".
Ответ 6
Я тестировал хороший продукт для этого: AlwaysUp. Не бесплатно, но у них есть 30-дневный пробный период, поэтому вы можете попробовать...
Ответ 7
По некоторым причинам я не смог перезаписать путь к исполняемому каталогу с помощью NSSM.
Это то, что я сделал, чтобы иметь точку обслуживания для правильного исполняемого файла.
SC CONFIG YourServiceName binPath = "C:\SomeDirectory\YourFile.EXE" Подробнее...