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

<p>я создал сервис, используя</p><pre><code>sc create myservice binpath=myservice.bat </code></pre><p>но когда я запускаю его, происходит сбой со следующим сообщением об ошибке:</p><pre><code>[sc] startservice failed 1053: the service did not respond to the start or control request in a timely fashion. </code></pre><p>на win2k3 я использовал srvany.exe из resource kit, но для win2k8 нет набора ресурсов. в настоящее время я установил srvany.exe на свою машину, но я не думаю, что это лучший способ сделать это.</p><p>спасибо!</p>

<p>конечно, вы не можете запустить такой сервис. вы пробовали использовать srvany в server 2008? насколько я знаю, "официальной" версии srvany для s2k8 не существует, но вы всегда можете попробовать, не так ли?</p><p>правка: о, я забыл! мы также используем firedaemon для запуска не сервисных приложений в качестве сервисов. тем не менее, это не бесплатно, и его функциональность слишком велика для ваших нужд.</p>

<p>используйте nssm для запуска .bat или любого старого .exe-файла в качестве службы. это почти замена srvany и приложение без излишеств.</p><p> <a href="http://iain.cx/src/nssm/">http://iain.cx/src/nssm/</a> </p><p>у меня была та же проблема, что и у вас, и nssm была единственной утилитой, которая работала.</p>

<p>мы используем <strong>task scheduler</strong> для запуска задачи при каждом запуске компьютера (независимо от того, вошел пользователь в систему или нет)</p>

<p>вы не можете просто запустить файл .bat или любой старый файл .exe в качестве службы. службы windows не работают, что вы. вы можете использовать утилиту наподобие <a href="http://iain.cx/src/nssm/">non-sucking service manager</a> (nssm) или несвободную утилиту microsoft srvany для запуска произвольной программы в качестве службы, но вы можете обнаружить, что вы не получаете очень " изящное "остановочное поведение".</p>

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

<p>попробуй это ... у меня сработало ..</p><pre><code>sc create servicetest binpath= "c:\windows\system32\cmd.exe /c c:\servicetest\jenkins-slave.bat" </code></pre>

<p>от: <a href="http://social.technet.microsoft.com/forums/en-us/winservermigration/thread/98a97aee-c62b-4683-94ab-3777899cf7de/">этот пост на форумах technet: http://social.technet.microsoft.com/forums/en-us/winservermigration/thread/98a97aee-c62b-4683-94ab-3777899cf7de/</a> </p><p>вот что нужно сделать ...</p><p>на момент публикации этой статьи не было средств 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" и введите полный путь к приложению, которое вы хотите запустить как сервис. (цитаты не требуются.)</p><p>и это должно сделать это.</p><p>примечание: некоторые приложения хранят свои настройки в пользовательском hive, а не в hkey\_local\_machine, поэтому вам потребуется запустить приложение для его настройки, а затем настроить службу для запуска от имени этого пользователя.</p>

<p>я использовал windows schtasks.</p><p>вы можете сослаться на это. <a href="https://technet.microsoft.com/en-us/library/cc725744.aspx#bkmk\_hours">https://technet.microsoft.com/en-us/library/cc725744.aspx#bkmk\_hours</a> </p>

<p>я нашел два других варианта, которые не позволят вам достать свой кошелек.</p><p>вы можете иметь <code>sc</code> launch <code>srvany</code>, который затем указывает на вашу программу. (есть сообщение на форуме, на которое я не могу дать ссылку, потому что мне не хватает представителя здесь, хотя я делаю на stackoverflow - ворчать)</p><p>вот шаги, которые использовал оригинальный плакат:</p><ol> <li>используйте <code>sc</code>, чтобы создать новый сервис, который запускает <code>srvany</code> (например, <code>sc create myservice binpath=c:\windows\system32\srvany.exe displayname="my custom service"</code>)</li> <li>использование regedit: создайте ключ <code>parameters</code> для своего сервиса (например, <code>hkey\_local\_machine\system\currentcontrolset\services\myservice\parameters\</code>)</li> <li>используя regedit: в только что созданном ключе <code>parameters</code> создайте строковое значение с именем <code>application</code> и введите полный путь к приложению, которое вы хотите запустить в качестве службы. (цитаты не требуются.)</li> </ol><p><strong> если это кажется чем-то вроде взлома </strong>, то вы можете создать службу .net для запуска вашего процесса. если вы хотите пропустить несколько шагов, вот служба с открытым исходным кодом .net, которая может запускать общие процессы:</p><p> <a href="http://www.codeproject.com/kb/system/xyntservice.aspx">http://www.codeproject.com/kb/system/xyntservice.aspx</a> </p><p>настройте его на свои нужды, но он сделает большую часть того, что вы хотите из коробки.</p>

<p>я наткнулся на эту вещь. вот инструмент под названием bat\_to\_exe\_converter. конвертировать любые файлы .bat в файлы .exe очень просто. попробуй это. сначала загрузите загрузчик, и он автоматически загрузит bat\_to\_exe\_converter. это действительно помогло мне создать сервис, который запускает мой .bat файл через .exe. <a href="http://download.cnet.com/bat-to-exe-converter/3001-2069\_4-10555897.html?spi=eae5ab48292cc101b5f0ec370cf99ad0">http://download.cnet.com/bat-to-exe-converter/3001-2069\_4-10555897.html?spi=eae5ab48292cc101b5f0ec370cf99ad</a> </p>