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!
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
Gute Frage: Wie definiert man überhaupt die Abhängigkeiten von Diensten? Hab mir schonmal die Finger wund gesucht nach einer Doku zum Thema.
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.
Hallo f.ritz,
ServiceInstaller.ServicesDependedOn könnte helfen.
herbivore
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!
Erkennt Windows eigentlich zirkuläre Referenzen und gibts dann eine Fehlermeldung oder bleibt es einfach stehen ?
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?
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