Von welchem ​​Dienst sollte ich meinen abhängig machen?

862
quack quixote

Ich möchte meinem Dienst eine Abhängigkeit hinzufügen, so dass er erst nach dem Start der meisten Windows-Dienste gestartet wird. Kann jemand einen solchen Service empfehlen, der wahrscheinlich aus Sicherheitsgründen auf Unternehmensseiten deaktiviert wurde. Da mein Dienst die Netzwerkdienste benötigt, möchte ich sicherstellen, dass mein Dienst danach startet. Dieser Dienst kann auch in Umgebungen außerhalb von Unternehmen bereitgestellt werden. Daher suche ich nach einem geeigneten Dienst, der wahrscheinlich nicht vom Endbenutzer deaktiviert wurde.

1

3 Antworten auf die Frage

2
A Dwarf

Verwenden Sie den Windows Taskplaner, um Ihre Anwendung zu starten. Fügen Sie keine Abhängigkeit hinzu. Es wäre sinnvoll, wenn die Anwendung tatsächlich eine solche Abhängigkeit hätte. Da dies jedoch keine formale Abhängigkeit ist, ist es nicht das Richtige.

Darüber hinaus können Sie die Ausführungsreihenfolge von Windows-Diensten nicht garantieren . Nur diejenigen, die selbst Abhängigkeitsregeln haben, werden garantiert für eine bestimmte Reihenfolge ausgeführt. Alle anderen nicht. Das bedeutet, dass der letzte auszuführende Windows-Dienst während mehrerer Neustarts variieren kann.

Stattdessen können Sie unter Taskplaner festlegen, dass Ihre Task nur ausgeführt wird, wenn ein Benutzer angemeldet ist, nur einmal ausgeführt wird und einen Auslöser erstellt, der die Ausführung der Task um einige Sekunden verzögert.

10 oder 20 Sekunden reichen aus, um zu gewährleisten, dass die Task zuletzt oder kurz vor dem letzten ausgeführt wird. Die Ausführung der Task ist erst dann möglich, wenn sich ein Benutzer anmeldet.


Sie können jedoch Ihre Ereignisanzeigeprotokolle als Grundlage für eine Taskplanerregel durchsuchen. Msgstr "Nur nach diesem Ereignis ausführen".

Der Taskplaner ist ein Stück Mist. Ich würde mich auf nichts verlassen. Es ist viel besser, es einfach in die Startup-Elemente oder einen anderen Hack zu packen, als abhängig vom Taskplaner. Satanicpuppy vor 14 Jahren 0
1
Ryan Bolger

Sie sagen, dass Ihr Dienst "Netzwerkdienste braucht und läuft". Aber tut es das wirklich? Benötigen Sie einfach die verschiedenen IP-bezogenen Dienste, auch wenn sie keinen Link oder keine gültige IP-Adresse haben?

Oder erwartet Ihr Dienst tatsächlich eine sofortige Verbindung zu einem externen Dienst, wenn er gestartet wird? Und wenn ja, was passiert, wenn der externe Dienst ausgefallen ist? Was passiert, wenn irgendwo entlang der Route Probleme mit der Netzwerkverbindung bestehen? Gibt es auf und stürzt ab oder hört auf?

Nach meiner Erfahrung, wenn Leute Dienste schreiben und versuchen, sie von anderen integrierten Diensten abhängig zu machen, versuchen sie wirklich, nicht den richtigen Code für die Fehlerbehandlung zu schreiben. Ich weiß nicht, was Ihr Dienst tatsächlich leistet, daher kann ich Ihnen keine Ratschläge geben, wie die vielfältigen Möglichkeiten zu bewältigen sind, mit denen Netzwerkkonnektivität nicht funktionieren würde, obwohl die lokalen Dienste vorhanden sind. Sie sollten jedoch wirklich darüber nachdenken, warum Sie glauben, dass Ihr Dienst diese Abhängigkeit braucht. Gibt es nicht eine bessere Methode zum Schreiben, so dass Sie den Zustand, in dem das Netzwerk nicht verfügbar ist, auf elegante Weise handhaben können?

0
harrymc

Ich würde den Windows Update-Dienst vorschlagen. Es ist sehr unwahrscheinlich, dass Sie deaktiviert wurden.

Unter Vista und Windows 7 ist es sogar als "Automatischer Start (verzögerter Start)" definiert, sodass es nach allen anderen Diensten gut startet.