it-swarm-ru.tech

Как создать службу с файлом .bat на Windows 2008 Server?

Я создал сервис, используя

sc create myService binpath=myservice.bat

Но когда я запускаю его, происходит сбой со следующим сообщением об ошибке:

[SC] StartService FAILED 1053:
    The service did not respond to the start or control request in a timely fashion.

На Win2k3 я использовал srvany.exe из Resource Kit, но для Win2k8 нет набора ресурсов. В настоящее время я установил srvany.exe на свою машину, но я не думаю, что это лучший способ сделать это.

Спасибо!

21
abyx

Конечно, вы не можете запустить такой сервис. Вы пробовали использовать srvany в server 2008? Насколько я знаю, "официальной" версии srvany для s2k8 не существует, но вы всегда можете попробовать, не так ли?

Правка: О, я забыл! Мы также используем FireDaemon для запуска не сервисных приложений в качестве сервисов. Тем не менее, это не бесплатно, и его функциональность слишком велика для ваших нужд.

9
shylent

Используйте NSSM для запуска .BAT или любого старого .EXE-файла в качестве службы. Это почти замена SRVANY и приложение без излишеств.

http://iain.cx/src/nssm/

У меня была та же проблема, что и у вас, и NSSM была единственной утилитой, которая работала.

24
Matthew Blackford

Мы используем Task Scheduler для запуска задачи при каждом запуске компьютера (независимо от того, вошел пользователь в систему или нет)

8
Korayem

Вы не можете просто запустить файл .BAT или любой старый файл .EXE в качестве службы. Службы Windows не работают, что вы. Вы можете использовать утилиту наподобие non-Sucking Service Manager (NSSM) или несвободную утилиту Microsoft SRVANY для запуска произвольной программы в качестве службы, но вы можете обнаружить, что вы не получаете очень " изящное "остановочное поведение".

7
Evan Anderson

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

3
Whisk

попробуй это ... у меня сработало ..

sc create ServiceTest binpath= "C:\Windows\System32\cmd.exe /C C:\ServiceTest\Jenkins-Slave.bat"
2
Kushal Gangan

от: этот пост на форумах technet: http://social.technet.Microsoft.com/Forums/en-US/winserverMigration/thread/98a97aee-c62b-4683-94ab-3777899cf7de/

Вот что нужно сделать ...

На момент публикации этой статьи не было средств Windows Server 2008 Resource Kit, поэтому получите "srvany.exe" из "Windows Server 2003 Resource Kit Tools" и скопируйте его в подходящее место на вашем сервере Win2008 (например, C:\Windows\System32 \). Используйте "sc" для создания нового сервиса, который запускает "srvany" (например, sc create MyService binPath = C:\Windows\System32\srvany.exe DisplayName = "My Custom Service") Использование RegEdit: создайте ключ "Parameters" для вашего служба (например, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Paramaters \) Используя RegEdit: в только что созданном ключе "Parameters" создайте строковое значение с именем "Application" и введите полный путь к приложению, которое вы хотите запустить как сервис. (Цитаты не требуются.)

И это должно сделать это.

Примечание: некоторые приложения хранят свои настройки в пользовательском Hive, а не в HKEY_LOCAL_MACHINE, поэтому вам потребуется запустить приложение для его настройки, а затем настроить службу для запуска от имени этого пользователя.

2
user1977194

я использовал Windows Schtasks.

вы можете сослаться на это. https://technet.Microsoft.com/en-us/library/cc725744.aspx#BKMK_hours

0
Yit Ming

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

Вы можете иметь sc launch srvany, который затем указывает на вашу программу. (есть сообщение на форуме, на которое я не могу дать ссылку, потому что мне не хватает представителя здесь, хотя я делаю на StackOverflow - ворчать)

Вот шаги, которые использовал оригинальный плакат:

  1. Используйте sc, чтобы создать новый сервис, который запускает srvany (например, sc create MyService binPath=C:\Windows\System32\srvany.exe DisplayName="My Custom Service")
  2. Использование RegEdit: создайте ключ Parameters для своего сервиса (например, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters\)
  3. Используя RegEdit: в только что созданном ключе Parameters создайте строковое значение с именем Application и ​​введите полный путь к приложению, которое вы хотите запустить в качестве службы. (Цитаты не требуются.)

Если это кажется чем-то вроде взлома , то вы можете создать службу .NET для запуска вашего процесса. Если вы хотите пропустить несколько шагов, вот служба с открытым исходным кодом .NET, которая может запускать общие процессы:

http://www.codeproject.com/KB/system/xyntservice.aspx

Настройте его на свои нужды, но он сделает большую часть того, что вы хотите из коробки.

0
databyte

Я наткнулся на эту вещь. Вот инструмент под названием Bat_To_Exe_Converter. Конвертировать любые файлы .bat в файлы .exe очень просто. Попробуй это. Сначала загрузите загрузчик, и он автоматически загрузит Bat_To_Exe_Converter. Это действительно помогло мне создать сервис, который запускает мой .bat файл через .exe. http://download.cnet.com/Bat-To-Exe-Converter/3001-2069_4-10555897.html?spi=eae5ab48292cc101b5f0ec370cf99ad

0
Ilya