Laden...

Dienst später starten

Erstellt von f.ritz vor 19 Jahren Letzter Beitrag vor 18 Jahren 2.150 Views
f.ritz Themenstarter:in
341 Beiträge seit 2004
vor 19 Jahren
Dienst später starten

Hallo!

Ich habe folgendes Problem: ein Dienst das ich geschrieben habe soll automatisch starten, dieser wird aber nicht automatisch gestartet da er von einem anderen Dienst abhängig ist. Am besten soll die Umsetzung im Programmcode geschehen ohne den Registery Eintrag manuell zu ändern.

Danke!

X
4 Beiträge seit 2005
vor 19 Jahren

Hallo,
ich verstehe das Problem nicht wirklich.
Wenn der Dienst von einem Anderen abhängt ist es doch sinnvoll wenn dieser zuerst gestartet wird. 😉

Gruß Xiller

S
8.746 Beiträge seit 2005
vor 19 Jahren

Gute Frage: Wie definiert man überhaupt die Abhängigkeiten von Diensten? Hab mir schonmal die Finger wund gesucht nach einer Doku zum Thema.

f.ritz Themenstarter:in
341 Beiträge seit 2004
vor 18 Jahren

Original von xiller
ich verstehe das Problem nicht wirklich.
Wenn der Dienst von einem Anderen abhängt ist es doch sinnvoll wenn dieser zuerst gestartet wird. 😉

Also wie gesagt der Dienst soll automatisch starten, d.h wenn der Windows geladen wird wird der dienst automatisch gestartet. Das Problem ist, dass die Reihenfolge beim starten der Dienste nicht ganz wunschgemäß abläuft.
Man könnte auch im regedit(HKEY_LOCAL_MASHINE/System/CurrentCotrolSet/Services/Dienstname) die Abhängigkeiten der Dienste unter der DependOnService eintragen und somit die Reihenfolge beeinflußen. Ich möchte aber, dass es automatisch im Quellcode geschieht, vorausgesetzt dass es überhaupt geht.

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo f.ritz,

ServiceInstaller.ServicesDependedOn könnte helfen.

herbivore

f.ritz Themenstarter:in
341 Beiträge seit 2004
vor 18 Jahren

Hey Danke, es geht!

Also einfach bei der Projectinstallationsdatei z.B ProjectInstaller.cs folgenden Code hinzufügen:

private System.ServiceProcess.ServiceInstaller serviceInstaller1;
...
this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();
....
this.serviceInstaller1.ServicesDependedOn = new string[] {"Dienstname"};//Hier Dienste eintragen, von denen ihr Dienst abhängt

Testen von diesen Dienst funktioniert dann aber allerdings nicht mit installutil.exe, man muss schon diesen Projekt dann per Setup.exe installieren um es richtig testen zu können.

Danke!

S
8.746 Beiträge seit 2005
vor 18 Jahren

Erkennt Windows eigentlich zirkuläre Referenzen und gibts dann eine Fehlermeldung oder bleibt es einfach stehen ?

f.ritz Themenstarter:in
341 Beiträge seit 2004
vor 18 Jahren

Unter Computerverwaltung->System->Ereignissanzeige kann man sehen wenn ein Dienst gestartet oder nicht gestartet wurde, meißt wird auch der Grund dafür angegeben. Meinst du das?

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo f.ritz,

es geht darum, was passiert, wenn man angibt, dass Dienst A von B anbhängig ist und gleichzeitig dass B von A abhängig ist. Dann kann Windows ja keinen der Dienste starten, ohne vorher den anderen gestartet zu haben. Ich denke in diesem Fall werden beide Dienste einfach nicht gestartet, ohne das Window hängen bleibt oder es wird schon beim Installieren des zweiten Diensts gemeckert.

herbivore