Ich habe einen Windows-Dienst erstellt und im Dienst in der Systemsteuerung -> Verwaltungstools -> Dienste wird dessen Status gestartet.
Ich möchte diesen Dienst beenden, aber die Stoppoption ist ausgegraut. Wie kann ich den Dienst starten / stoppen?
Jedes Mal, wenn ich neu starte, wird es gestoppt und ich kann es löschen.
windows-services
DotnetSparrow
quelle
quelle
Antworten:
Wenn Sie den Befehl ausführen:
Wo ist der Name des Dienstes, nicht der Anzeigename (Spooler, nicht Print Spooler)? An der cmd-Eingabeaufforderung wird die PID des Prozesses zurückgegeben, unter dem der Dienst ausgeführt wird. Nehmen Sie diese PID und laufen Sie
um die PID zum Stoppen zu zwingen. Wenn der Prozess beim Stoppen der GUI hängen bleibt, können Sie manchmal nichts mit dem Dienst tun.
quelle
sc ..
Daher habe ich den Prozess in den Eigenschaften dieses Dienstes gefundenPath to executable
und in taskmgr beendet.Sie können dies in einer Zeile tun (nützlich für ci-Umgebungen):
Filter -> Dienste -> Dienstname entspricht SERVICE_NAMES -> Erzwingen
Quelle: https://technet.microsoft.com/en-us/library/bb491009.aspx
quelle
Wenn die Stoppoption ausgegraut ist, hat Ihr Dienst nicht angegeben, dass er
SERVICE_ACCEPT_STOP
beim letzten Aufruf akzeptiert hatSetServiceStatus
. Wenn Sie .NET verwenden, müssen Sie dieCanStop
Eigenschaft in festlegenServiceBase
.Wenn Sie Stoppanfragen akzeptieren, sollten Sie natürlich sicherstellen, dass Ihr Dienst diese Anforderungen sicher verarbeiten kann, insbesondere wenn Ihr Dienst noch seinen Startcode durchläuft.
quelle
Verwenden Sie den Task-Manager, um den Dienst zu finden und von dort aus mit End Task zu beenden. Macht immer den Trick für mich.
Wenn Sie den Dienst selbst erstellt haben, sollten Sie in Betracht ziehen, lang laufende Vorgänge aus dem OnStart-Ereignis zu entfernen. Dies führt normalerweise dazu, dass der Dienst nicht reagiert.
quelle
Wie Aaron oben erwähnt hat, akzeptieren einige Dienste
SERVICE_ACCEPT_STOP
zum Zeitpunkt der Entwicklung keine Nachrichten. Und das ist fest in der ausführbaren Datei codiert. Zeitraum. Eine Workaroud wäre, sie nicht zu starten, und da Sie ihre Eigenschaften nicht ändern können, gehen Sie wie folgt vor:Wenn Sie den Eintrag nicht ändern können, klicken Sie im linken Bereich mit der rechten Maustaste auf Ihren Dienstnamen, wählen Sie "Berechtigungen", überprüfen Sie, ob "Jeder" vollen Zugriff hat, und wiederholen Sie Schritt 4.
Vergessen Sie nicht, den sicheren Start von msconfig erneut zu deaktivieren und neu zu starten!
quelle
z.B
quelle
Öffnen Sie die Eingabeaufforderung mit Administratorzugriff und geben Sie dort die folgenden Befehle ein.
ein)
Es zeigt eine Liste aller verfügbaren Dienste an. Dort sehen Sie den Dienst, den Sie stoppen / starten / neu starten möchten. Merken Sie sich den PID-Wert des Dienstes, den Sie erzwingen möchten.
b) Geben Sie nun ein
und drücken Sie die Eingabetaste. Bei Erfolg erhalten Sie die Meldung "ERFOLG: Der Prozess mit PID wurde beendet".
Dadurch wird der eingefrorene Dienst gewaltsam beendet. Sie können jetzt zum Server-Manager zurückkehren und den Dienst neu starten.
quelle
Ich habe das Problem mit den folgenden Schritten gelöst:
Öffnen Sie "services.msc" über den Befehl / Windows RUN.
Finden Sie den Dienst (der ausgegraut ist).
Doppelklicken Sie auf diesen Dienst und wechseln Sie zur Registerkarte "Wiederherstellung".
Sicher gehen, dass
und drücken Sie OK.
Jetzt versucht der Dienst nicht mehr neu zu starten, und Sie können den ausgegrauten Dienst aus der Diensteliste löschen (dh ausgegraut wird nicht mehr angezeigt).
quelle