Jak utworzyć usługę z plikiem .bat w systemie Windows 2008 Server?

21

Stworzyłem usługę za pomocą

sc create myService binpath=myservice.bat

Ale kiedy go uruchamiam, pojawia się następujący komunikat o błędzie:

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

W Win2k3 użyłem srvany.exe z zestawu zasobów, ale nie ma zestawu zasobów dla win2k8. Na razie zainstalowałem srvany.exe na moim komputerze, ale nie sądzę, że to najlepszy sposób, aby to zrobić.

Dzięki!

abyx
źródło
1
Możesz uruchomić plik wsadowy jako usługę? Czy zaplanowane zadanie nie byłoby lepsze? Wiem, że jeśli korzystasz z faktycznej usługi systemu Windows, zdarzenie OnLoad musi wrócić w ciągu kilku sekund.
tsilb,

Odpowiedzi:

9

Oczywiście nie możesz uruchomić takiej usługi. Czy próbowałeś użyć srvany na serwerze 2008? O ile mi wiadomo, nie ma „oficjalnej” wersji srvany dla s2k8, ale zawsze możesz spróbować, prawda?

EDYCJA: Och, zapomniałem! Używamy również FireDaemon do uruchamiania aplikacji innych niż usługi jako usług. Chociaż nie jest darmowy, a jego funkcjonalność jest trochę za duża dla twoich potrzeb.

shylent
źródło
Tak właśnie napisałem.
abyx
hmm .. to dziwne. Właśnie przefiltrował przez mój mózg. Przepraszam. Tak czy inaczej, srvany wydaje się najlepszą rzeczą do zrobienia w tej sytuacji.
shylent
srvany działa w 2008 roku (używam go do instalacji i uruchamiania Winamp.exe jako usługi na serwerze domowym) ... ale nie można uruchomić tylko pliku bat.
Oskar Duveborn,
24

Użyj NSSM, aby uruchomić .BAT lub dowolny stary plik .EXE jako usługę. To prawie zamiennik dla SRVANY i jest bezproblemową aplikacją.

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

Miałem ten sam problem co ty, a NSSM był jedynym narzędziem, które działało.

Matthew Blackford
źródło
3
Nie słyszałem o tym wcześniej, ale wydaje się, że jest to cenne narzędzie. Dzięki za wskazówkę.
Skyhawk
Dziękuję, że zadziałało dla mnie. Chociaż wciąż szukam opcji, aby zatrzymać usługę w określonym czasie.
Ankit
8

Używamy Harmonogramu zadań do uruchamiania zadania przy każdym uruchomieniu komputera (niezależnie od tego, czy użytkownik jest zalogowany czy nie)

Korayem
źródło
1
Aby ukryć okno czytać ten lub ten , jeśli nie jesteś zadowolony z systemem jako system
JonnyRaa
7

Nie można po prostu uruchomić pliku .BAT ani żadnego starego pliku .EXE jako usługi. Usługi Windows nie działają tak jak Ty. Możesz użyć narzędzia takiego jak non-Sucking Service Manager (NSSM) lub niewolnego narzędzia SRVANY Microsoftu, aby uruchomić dowolny program jako usługę, ale może się okazać, że nie zachowuje się zbyt „płynnie” przy zatrzymywaniu.

Evan Anderson
źródło
3

Polecenie SC po prostu dodaje wymagane wpisy rejestru dla usługi - jeśli podany plik nie jest prawidłowym plikiem exe usługi, nie zamieni go w jeden.

Śmigać
źródło
2

from: ten post na forach technet: http://social.technet.microsoft.com/Forums/en-US/winserverMigration/thread/98a97aee-c62b-4683-94ab-3777899cf7de/

Oto co robić ...

W chwili publikacji tego artykułu nie ma narzędzi Windows Server 2008 Resource Kit, więc pobierz „srvany.exe” z „Windows Server 2003 Resource Kit Tools” i skopiuj go w odpowiednie miejsce na serwerze Win2008 (np. C: \ Windows \ System32 \). Użyj „sc”, aby utworzyć nową usługę, która uruchamia „srvany” (np. Sc stwórz MyService binPath = C: \ Windows \ System32 \ srvany.exe DisplayName = „My Custom Service”) Za pomocą RegEdit: utwórz klucz „Parametry” dla swojego usługa (np. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ MyService \ Paramaters \) Za pomocą RegEdit: w nowo utworzonym kluczu „Parametry” utwórz wartość ciągu o nazwie „Aplikacja” i wprowadź pełną ścieżkę do aplikacji, którą chcesz uruchomić jako serwis. (Nie wymaga cytowania.)

I to powinno wystarczyć.

Uwaga: niektóre aplikacje przechowują swoje ustawienia w gałęzi użytkownika, a nie pod HKEY_LOCAL_MACHINE, więc będziesz musiał uruchomić aplikację, aby ją skonfigurować, a następnie skonfigurować usługę, aby działała jako ten użytkownik.

użytkownik1977194
źródło
2

spróbuj tego ... zadziałało dla mnie ..

sc create ServiceTest binpath= "C:\Windows\System32\cmd.exe /C C:\ServiceTest\Jenkins-Slave.bat"
Kushal Gangan
źródło
To też nie działało dla mnie! Ten sam błąd, co OP - nie uruchomił się w odpowiednim czasie.
Ravindra HV
To samo - nie działało.
Spedge
0

Natknąłem się na to. Oto narzędzie o nazwie Bat_To_Exe_Converter. Bardzo łatwo jest przekonwertować dowolne pliki .bat na pliki .exe. Spróbuj. Najpierw pobierz downloader, a następnie automatycznie pobierze Bat_To_Exe_Converter. To naprawdę pomogło mi stworzyć usługę, która uruchamia mój plik .bat przez .exe. http://download.cnet.com/Bat-To-Exe-Converter/3001-2069_4-10555897.html?spi=eae5ab48292cc101b5f0ec370cf99ad0

Ilya
źródło
Witaj w Server Fault! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Scott Pack
0

Znalazłem dwie inne opcje, które nie pozwolą ci sięgnąć po portfel.

Możesz scuruchomić, srvanyktóry następnie wskazuje na twój program. (istnieje post na forum, do którego nie mogę utworzyć linku, ponieważ nie mam tutaj wystarczającej liczby przedstawicieli, ale robię to na StackOverflow - narzekam)

Oto kroki, które wykorzystał oryginalny plakat:

  1. Służy scdo tworzenia nowej usługi, która uruchamia się srvany(np. sc create MyService binPath=C:\Windows\System32\srvany.exe DisplayName="My Custom Service")
  2. Za pomocą RegEdit: utwórz Parametersklucz do swojej usługi (np. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters\)
  3. Za pomocą RegEdit: w ramach nowo utworzonego Parametersklucza utwórz wartość ciągu o nazwie Applicationi wprowadź pełną ścieżkę do aplikacji, którą chcesz uruchomić jako usługę. (Nie wymaga cytowania.)

Jeśli wydaje się to trochę włamaniem , możesz zbudować usługę .NET, aby uruchomić proces. Jeśli chcesz pominąć kilka kroków, oto usługa .NET typu open source, która może uruchamiać ogólne procesy:

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

Dostosuj go do swoich potrzeb, ale zrobi większość tego, co chcesz od razu po wyjęciu z pudełka.

databajt
źródło
A czy srvany, o którym wspominasz, ten z Win2k3, który nie ma obsługiwanej wersji dla Win2k8?
LarsH