Я создал сервис, используя
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 на свою машину, но я не думаю, что это лучший способ сделать это.
Спасибо!
Конечно, вы не можете запустить такой сервис. Вы пробовали использовать srvany в server 2008? Насколько я знаю, "официальной" версии srvany для s2k8 не существует, но вы всегда можете попробовать, не так ли?
Правка: О, я забыл! Мы также используем FireDaemon для запуска не сервисных приложений в качестве сервисов. Тем не менее, это не бесплатно, и его функциональность слишком велика для ваших нужд.
Используйте NSSM для запуска .BAT или любого старого .EXE-файла в качестве службы. Это почти замена SRVANY и приложение без излишеств.
У меня была та же проблема, что и у вас, и NSSM была единственной утилитой, которая работала.
Мы используем Task Scheduler для запуска задачи при каждом запуске компьютера (независимо от того, вошел пользователь в систему или нет)
Вы не можете просто запустить файл .BAT или любой старый файл .EXE в качестве службы. Службы Windows не работают, что вы. Вы можете использовать утилиту наподобие non-Sucking Service Manager (NSSM) или несвободную утилиту Microsoft SRVANY для запуска произвольной программы в качестве службы, но вы можете обнаружить, что вы не получаете очень " изящное "остановочное поведение".
Команда SC просто добавляет необходимые записи реестра для службы - если указанный вами файл не является допустимым exe-файлом службы, он не превратит его в один.
попробуй это ... у меня сработало ..
sc create ServiceTest binpath= "C:\Windows\System32\cmd.exe /C C:\ServiceTest\Jenkins-Slave.bat"
Вот что нужно сделать ...
На момент публикации этой статьи не было средств 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, поэтому вам потребуется запустить приложение для его настройки, а затем настроить службу для запуска от имени этого пользователя.
я использовал Windows Schtasks.
вы можете сослаться на это. https://technet.Microsoft.com/en-us/library/cc725744.aspx#BKMK_hours
Я нашел два других варианта, которые не позволят вам достать свой кошелек.
Вы можете иметь sc
launch srvany
, который затем указывает на вашу программу. (есть сообщение на форуме, на которое я не могу дать ссылку, потому что мне не хватает представителя здесь, хотя я делаю на StackOverflow - ворчать)
Вот шаги, которые использовал оригинальный плакат:
sc
, чтобы создать новый сервис, который запускает srvany
(например, sc create MyService binPath=C:\Windows\System32\srvany.exe DisplayName="My Custom Service"
)Parameters
для своего сервиса (например, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters\
)Parameters
создайте строковое значение с именем Application
и введите полный путь к приложению, которое вы хотите запустить в качестве службы. (Цитаты не требуются.)Если это кажется чем-то вроде взлома , то вы можете создать службу .NET для запуска вашего процесса. Если вы хотите пропустить несколько шагов, вот служба с открытым исходным кодом .NET, которая может запускать общие процессы:
http://www.codeproject.com/KB/system/xyntservice.aspx
Настройте его на свои нужды, но он сделает большую часть того, что вы хотите из коробки.
Я наткнулся на эту вещь. Вот инструмент под названием 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