Ich habe eine kleine Skriptdatei zum Testen erstellt.
Das ist meine script.bat Datei.
sc create myService binpath= C:\Users\Admin\Desktop\test.bat start= auto
Dies ist meine test.bat- Datei.
echo "Welcome to Wizard"
Problemstellung
Ich kann den Service von Start Control Panel Service.
Ich erhalte folgenden Fehler.
[SC] StartService FAILED 1053: Der Dienst hat nicht rechtzeitig auf die Start- oder Steuerungsanforderung geantwortet.
Deshalb benutze ich nssm.
JETZT passiert das, wenn ich folgenden Befehl auf Powershell ausführe
\ nService installieren, das Dialogfeld I wird angezeigt. Ich gebe den Pfad meiner Skriptdatei an und klicke auf Install Service.
Nach erfolgreicher Installation des Dienstes. Ich gehe zu Systemsteuerung -> Dienst -> klicke auf Start für myService, aber es wird angehalten und das folgende Dialogfeld wird angezeigt
Windows konnte den myService-Dienst auf dem lokalen Computer nicht starten. Der Dienst hat keinen Fehler zurückgegeben. Dies kann ein Windows-Fehler oder ein interner Servicefehler sein. Wenn das Problem weiterhin besteht, wenden Sie sich an Ihren Systemadministrator.
- Wie kann ich das beheben?
- Gibt es eine andere Möglichkeit, dies zu tun, ohne manuelle Schritte auszuführen und ohne Tools von Drittanbietern zu verwenden?
- Ich mache das alles unter Windows 10. Brauche ich einen Server, um diese Aufgabe auszuführen?
HINWEIS: Ich kann in meinem Fall weder Always up noch Window Scheduler verwenden.
sc
die Exe mit einem übergebenden Argument oder ähnlichem aufgerufen werden kann. Ich bin nicht sicher, womit Sie logisch arbeiten, aber ich habe persönlich ähnlich einfache Aufgaben erledigt.sc.exe
und / oderservices.msc
verwalten.Antworten:
Das NSSM-Verhalten wird dadurch verursacht, dass das Skript fast sofort beendet wird. Versuchen Sie folgendes Skript:
Dadurch sollte der Dienst gestartet werden können, es wird jedoch nicht unbedingt ein Konsolenfenster angezeigt. Selbst wenn Sie "Service mit Desktop interagieren lassen" aktivieren, ist dies nicht Ihr Desktop, mit dem er interagiert!
Mit SysInternals Process Explorer können Sie den NSSM-Dienst anzeigen, der mit einem untergeordneten CMD-Prozess ausgeführt wird, der das Skript ausführt.
Windows implementiert die "Sitzungs-Null-Isolation" als Sicherheitsfunktion, wodurch im Wesentlichen verhindert wird, dass Dienste mit Endbenutzer-Desktops interagieren.
In Bezug auf eine Lösung ist es möglich, Windows-Dienstanwendungen ziemlich einfach mit Visual Studio zu schreiben. Es liegt außerhalb meines Fachgebiets, aber basierend auf den mir vertrauten Windows-Anwendungen wird im Allgemeinen eine Anwendung im Benutzermodus ausgeführt, um Desktop-Interaktion bereitzustellen. Die Benutzermodusanwendung kann mit Diensten interagieren, die von der Dienstanwendung gehostet werden.
quelle
Ein Windows-Dienst ist ein ausführbares Programm, das einige Standardereignisse unterstützen muss (z. B. OnStart OnStop, OnPause, OnContinue). Eine .bat-Datei ist keine ausführbare Datei und wird niemals als Dienst ausgeführt.
Wenn Sie die bat-Datei ausführen, heißt das aktuelle Programm cmd.exe, unterstützt jedoch nicht das erforderliche Ereignis.
Sie könnten einen Windows-Dienst schreiben (mit C ++ oder C # oder vielen anderen Sprachen) und dann den Dienst so programmieren, dass eine bat-Datei in cmd.exe ausgeführt wird. Ihre bat-Datei würde jedoch nicht funktionieren, da ein Dienst keinen Zugriff auf den Bildschirm oder die Tastatur hat.
TL; DR: Es wird einfach nicht funktionieren. Vielleicht, wenn Sie eine andere Frage dazu stellen, was Sie tatsächlich versuchen? Es hört sich so an, als ob Sie einen Dienst als Lösung betrachten und das Problem nicht beschrieben haben.
quelle