wircom
Goto Top

Windows Dienst ReStart das gleiche wie stop und start?

Hallo,

wir möchten eine Oberfläche erstellen, die es ermöglicht einen eigenen (Windows-)Dienst neu zu starten.
Der Entwickler sagt aus dem Bauch heraus. Ein Restart ist die Ansammlung von einzelnen stop und start Befehlen.
D.h. Wenn ich dem Dienst in einem Befehl mitgebe zu stoppen und anschließend wieder zu starten, dann führt er den stop Befehl aus und das wars...Das verstehe ich, dass ich mir damit den Boden unter den Füßen wegziehe.

Allerdings, wenn die Oberfläche dem Dienst einen Restart Befehl gibt, dann ist dies doch eine vollständige Prozedur und wird vollständig abgearbeitet, oder irre ich da?

Danke fürs Feedback vorab

Content-Key: 202088

Url: https://administrator.de/contentid/202088

Printed on: April 25, 2024 at 13:04 o'clock

Member: Snowman25
Snowman25 Feb 20, 2013 at 14:42:46 (UTC)
Goto Top
Hallo @WirCom,

du musst natürlich warten, bis der Dienst beendet ist, bevor du ihn neu starten kannst.

Gruß
Snowman25
Member: WirCom
WirCom Feb 20, 2013 at 14:48:08 (UTC)
Goto Top
Hallo Snowman25,

danke fürs Feedback.
Ich möchte das ja nicht einzeln machen...sondern mit restart am stück...
Gibt es dazu keine Definition von MS oder so?.
Das im Internet zu suchen ist etwas schwierig....

Grüße
Member: colinardo
colinardo Feb 20, 2013 at 15:05:17 (UTC)
Goto Top
Tach WirCom,
dazu müssen wir hier aber erst mal wissen mit welcher Programmiersprache du dein Programm erstellen willst !!
Member: Snowman25
Snowman25 Feb 20, 2013 at 15:11:39 (UTC)
Goto Top
Zitat von @WirCom:
Ich möchte das ja nicht einzeln machen...sondern mit restart am stück...
Gibt es dazu keine Definition von MS oder so?.
Ja, die gibt es! Siehe MSDN - Richtlinie für Dienste

Das im Internet zu suchen ist etwas schwierig....
Es ist auch schwierig, geeignete Informationen zu finden, da du mir sehr wenige Informationen zur Verfügung stellst.
In welcher Sprache möchtest du denn den Service neu starten? Willst du den Service aus sich selbst heraus neu starten?

Wenn du auf PowerShell zurückgreiffen kannst, dann ist das nicht schwer.

Grüße
ebenso
Member: WirCom
WirCom Feb 20, 2013 at 15:13:26 (UTC)
Goto Top
Hallo,

hmmm....das könnte ein Problem sein, weil das von Dienst zu Dienst variieren kann.
Ich dachte einfach, dass ich mich den Windows Boardmitteln bedienen kann.

Sorry für die wenigen und tröpfchenweise verabreichten Kommentare, zu meiner Entschuldigung kann ich nur sagen, dass ich kein "Entwickler" bin....sondern nur die Planung und die Idee liefert.

Grüße
Member: colinardo
colinardo Feb 20, 2013 updated at 15:22:05 (UTC)
Goto Top
dann mach das doch per Batch:

net stop "Dienstname"
net start "Dienstname"

oder Powershell ...
restart-service "Dienstname"

das sind alles Windows Bordmittel. Und das sollte eigentlich das Problem des Entwicklers sein wie er das realisiert. Du als Planer solltest Dir darüber eigentlich keinen Kopf machen sondern das mit den Programmierern absprechen.
Member: WirCom
WirCom Feb 20, 2013 at 15:27:43 (UTC)
Goto Top
Hallo Snowman25,
hallo colinardo,

danke für die Infos.
Ich verfolge mal die Links vom Schneemann.

Kurze Erläuterung zu der Situation. Ich habe eine Oberfläche im Userbezug ohne administratorrechte. Einen Dienst der im Systemkontext läuft.
Gemäß Rechte der verschiedenen Desktops kann die Oberfläche dem dienst keine Anweisung geben.
Das haben wir gelöst durch ein Transportprotokoll, dass keine komplexe Funktionen zulässt.
Ebenfalls ist GUI und Service als singelton und sessionlos definiert.
Die GUI schickt ein "starte mich neu" Anforderung an den Dienst. Der Dienst stopt sich und dann ist auch schon ende, weil keiner mehr da ist der den Dienst wieder sagt ... und nun geht's weiter.

Allerdings gibt es unter Windows ja den restart als "ein" Befehl. Der Entwickler hier sagt, geht nicht.
Ich habe da Schwierigkeiten mit dass schlussendlich zu glauben, weil ich ja nicht erst stoppe und dann starte sondern in einem durch restart sage....
Wir können das Problem durch irgendwelche Umwege auch lösen, aber eine einfache Lösung wäre mir lieber.
Ich kann im Systemkontext jeden Befehl durch den Dienst ausführen lassen, was die Rechte zulassen. Aber ich kann natürlich keinen Befehl erteilen wenn es den Dienst nicht mehr gibt....

Etwas besser erklärt? ... sorry ... aber sonst einfach noch mal fragen ... ich versuch darauf zu antworten face-smile

Grüße
WirCom
Member: colinardo
colinardo Feb 20, 2013 updated at 15:41:37 (UTC)
Goto Top
Eine Lösungsmöglichkeit:
Erstelle noch einen zusätzlichen Dienst der den Hauptdienst starten und stoppen kann.

oder:
Ein zusätzliches kleines Programm schreiben das aus dem Dienst heraus aufgerufen wird und diesen dann wieder startet.

andere Möglichkeit:
Den Dienst so programmieren das wenn er unerwartet beendet wird er sich automatisch wieder selber startet.
in VB.Net ginge das z.B. so
Environment.Exit(1)
Member: WirCom
WirCom Feb 20, 2013 at 15:40:09 (UTC)
Goto Top
Hallo colinardo,

wäre eine Idee...ist leider nicht gewünscht, dass eine zusätzliche Abhängigkeit geschaffen wird.

Nachtrag zu deinem vorletzten Feedback.
Natürlich ist es Entwickler Sache. Aber ich bin da nicht accord mit dem Entwickler und hole mir eine weite Meinung ein. Immerhin ist meine Daseinsberechtigung Nervensäge zu sein. Das heißt ich muss es leider verstehen...
Entweder erklärt der Entwickler es mir detailliert und verständlich, oder aber ich muss mir meine eigene Meinung bilden. (ohne negativen Beigeschmack...)

Grüße
WirCom
Member: Snowman25
Snowman25 Feb 20, 2013 at 15:40:36 (UTC)
Goto Top
Siehe meinen 2. Link aus dem vorherigen Kommentar.