Frage Wie erstellt man einen Dienst, der eine .bat-Datei auf Windows 2008 Server ausführt?


Ich habe den Service mit erstellt

sc create myService binpath=myservice.bat

Aber wenn ich es starte, schlägt es mit der folgenden Fehlermeldung fehl:

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

Auf Win2k3 habe ich die srvany.exe aus dem Resource Kit benutzt, aber es gibt kein Resource Kit für win2k8. Zur Zeit habe ich die srvany.exe auf meinem Rechner installiert, aber ich denke nicht, dass das der beste Weg ist, dies zu tun.

Vielen Dank!


20
2017-08-16 06:53


Ursprung


Sie können eine Batchdatei als Service ausführen? Wäre eine geplante Aufgabe nicht besser? Ich weiß, wenn Sie einen tatsächlichen Windows-Dienst verwenden, muss das OnLoad-Ereignis innerhalb einiger Sekunden zurückgegeben werden. - tsilb


Antworten:


Natürlich kann man einen solchen Dienst nicht ausführen. Haben Sie versucht, Srvany in Server 2008 zu verwenden? Soweit ich weiß, gibt es für s2k8 keine 'offizielle' Version von srvany, aber du kannst es immer versuchen, oder?

EDIT: Oh, ich habe es vergessen! Wir verwenden FireDaemon auch, um Nicht-Service-Anwendungen als Dienste auszuführen. Allerdings ist es nicht kostenlos und seine Funktionalität ist ein bisschen zu viel für Ihre Bedürfnisse.


9
2017-08-16 07:48



Was ich geschrieben habe, habe ich getan. - abyx
hmm .. das ist komisch. Es hat sich einfach durch mein Gehirn gefiltert. Es tut uns leid. Wie auch immer, srvany scheint in dieser Situation das Beste zu sein. - shylent
srvany arbeitet im Jahr 2008 (ich benutze es, um Winamp.exe als Dienst auf einem Heimserver zu installieren und auszuführen) ... aber Sie können nicht nur eine Bat-Datei ausführen. - Oskar Duveborn
Srvany ist es! Vielen Dank - abyx


Verwenden Sie NSSM, um eine .BAT-Datei oder eine alte .EXE-Datei als Dienst auszuführen. Es ist fast ein Ersatz für SRVANY und ist eine unkomplizierte Anwendung.

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

Ich hatte das gleiche Problem wie Sie, und NSSM war das einzige Dienstprogramm, das funktionierte.


24
2017-08-20 04:04



Ich hatte vorher noch nichts davon gehört, aber es scheint ein wertvolles Werkzeug zu sein. Danke für den Tipp. - Skyhawk
Danke, es hat für mich funktioniert. Obwohl ich immer noch nach Optionen suche, um den Dienst zu einem bestimmten Zeitpunkt zu stoppen. - Ankit


Wir gebrauchen Taskplaner Task beim Starten des Computers ausführen (unabhängig davon, ob ein Benutzer angemeldet ist oder nicht)


8
2018-04-03 10:58



um das Fenster zu verstecken lesen Sie dies oder diese wenn du nicht glücklich bist, als System zu laufen - Jonny Leeds


Sie können nicht einfach eine .BAT-Datei oder eine alte .EXE-Datei als Dienst ausführen. Windows-Dienste funktionieren nicht so wie du. Sie können ein Dienstprogramm wie verwenden der nicht saugende Service Manager (NSSM) oder das nicht-freie SRVANY-Dienstprogramm von Microsoft, um ein beliebiges Programm als Dienst auszuführen, aber Sie können feststellen, dass Sie nicht sehr "anmutig" das Verhalten beenden.


7
2017-08-17 03:43





Der SC-Befehl fügt nur die erforderlichen Registrierungseinträge für einen Service hinzu - wenn die von Ihnen angegebene Datei keine gültige Service-Exe ist, wird sie nicht in eine solche umgewandelt.


3
2017-08-16 07:56





von: diesen Beitrag in Technet-Foren: http://social.technet.microsoft.com/Forums/en-US/winserverMigration/thread/98a97aee-c62b-4683-94ab-3777899cf7de/

Hier ist was zu tun ist ...

Zum Zeitpunkt dieser Veröffentlichung gibt es keine Resource Kit-Tools für Windows Server 2008. Rufen Sie daher die Datei "srvany.exe" von den "Windows Server 2003 Resource Kit-Tools" ab und kopieren Sie sie an einen geeigneten Speicherort auf Ihrem Win2008-Server (z. B. C: \ Windows \ System32 \). Verwenden Sie "sc", um einen neuen Dienst zu erstellen, der "srvany" startet (z. B. create MyService binPath = C: \ Windows \ System32 \ srvany.exe DisplayName = "Mein benutzerdefinierter Dienst") RegEdit verwenden: Erstellen Sie einen Schlüssel "Parameter" für Ihren Dienst (z. B. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ MyService \ Paramaters \) Verwenden von RegEdit: Erstellen Sie im neu erstellten Schlüssel "Parameters" einen Zeichenfolgenwert namens "Application" und geben Sie den vollständigen Pfad zu der Anwendung ein, die Sie als Dienst ausführen möchten. (Keine Anführungszeichen erforderlich.)

Und das sollte es tun.

Hinweis: Einige Anwendungen speichern ihre Einstellungen in einer Benutzerstruktur, nicht unter HKEY_LOCAL_MACHINE. Daher müssen Sie die Anwendung ausführen, um sie zu konfigurieren, und dann den Dienst so konfigurieren, dass er als dieser Benutzer ausgeführt wird.


2
2018-01-15 11:51





probier das aus ... es hat bei mir funktioniert ..

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

2
2017-10-20 05:47



Es hat auch nicht für mich funktioniert! Gleicher Fehler wie OP - nicht rechtzeitig gestartet. - Ravindra HV
Dito - hat nicht funktioniert. - Spedge


Ich bin über dieses Ding gestolpert. Hier ist das Tool Bat_To_Exe_Converter. Es ist sehr einfach, alle .bat-Dateien in .exe-Dateien umzuwandeln. Versuch es. Lade Downloader zuerst herunter und es wird automatisch der Bat_To_Exe_Converter heruntergeladen. Es hat mir wirklich geholfen, einen Dienst zu erstellen, der meine .bat-Datei über .exe ausführt. http://download.cnet.com/Bat-To-Exe-Converter/3001-2069_4-10555897.html?spi=eae5ab48292cc101b5f0ec370cf99ad0


0
2017-07-08 17:06



Willkommen bei Serverfehler! Während dies theoretisch die Frage beantworten könnte, es wäre vorzuziehen um die wesentlichen Teile der Antwort hier einzubeziehen und den Link als Referenz bereitzustellen. - Scott Pack


Ich habe Windows-Schtasks benutzt.

Sie können sich darauf beziehen. https://technet.microsoft.com/en-us/library/cc725744.aspx#BKMK_hours 


0
2017-10-14 10:29





Ich habe zwei andere Optionen gefunden, bei denen Sie nicht nach Ihrem Geldbeutel greifen müssen.

Du kannst haben sc starten srvany was dann auf Ihr Programm zeigt. (Es gibt einen Forenbeitrag, den ich nicht verlinken kann, weil ich nicht genug Rep hier habe, obwohl ich auf StackOverflow murke)

Hier sind die Schritte, die das Originalposter verwendet hat:

  1. Benutzen sc um einen neuen Dienst zu erstellen, der startet srvany (z.B. sc create MyService binPath=C:\Windows\System32\srvany.exe DisplayName="My Custom Service")
  2. RegEdit verwenden: Erstellen Sie ein Parameters Schlüssel für Ihren Service (z.B. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters\)
  3. RegEdit verwenden: innerhalb des neu erstellten Parameters Schlüssel, erstellen Sie einen String-Wert namens Application und geben Sie den vollständigen Pfad zu der Anwendung ein, die Sie als Dienst ausführen möchten. (Keine Anführungszeichen erforderlich.)

Wenn das wie ein bisschen wie ein Hack aussiehtDann können Sie einen .NET-Dienst zum Starten Ihres Prozesses erstellen. Wenn Sie ein paar Schritte überspringen möchten, ist hier ein Open-Source-.NET-Dienst, der generische Prozesse starten kann:

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

Passen Sie es an Ihre Bedürfnisse an, aber es wird das meiste von dem, was Sie wollen, aus der Box machen.


0
2017-08-24 22:08



Und ist die Srvany, die Sie erwähnen, die von Win2k3, die keine unterstützte Version für Win2k8 hat? - LarsH