Frage

Ok so Teil zwei von Ich habe keinen Willen Mach Experiment ist:

Zusammenfassung Frage - Gibt es eine Möglichkeit, die CanStop Eigenschaft auf einem Windows-Dienst dynamisch zu setzen?

Ganze Spiel - Ich habe einen Dienst, der derzeit überprüft und Beenden von Prozessen (IE Spiele) Ich habe ihm gesagt, wenn es Tag, den ich nicht erlaubt bin. Toll. Ich habe die CanStop auf falsch, so dass ich nicht nur den Dienst töten, wenn ich in die Sucht geben. Ich habe ein Programm, das eine Passwortprüfung (Jemand anderes gibt das Passwort) hat, das den Dienst beenden, wenn das Passwort korrekt ist. (Wenn ich habe ernsthafte Entnahmen) Problem ist es, die Servicecontroller-Klasse.

Soweit ich das beurteilen kann, Servicecontroller ist nur ein Dekorateur (yah Design Pater Vermutung) und so habe ich keine Möglichkeit auf dem eigentlichen Dienst zu bekommen es darstellt. Erster Versuch war Property Info, aber ich war zu dumm, zu erkennen, was das wäre sinnlos. Zweitens war Feld Info weil ich dachte, es könnte ein privates Feld sein, dass „für“ den Dienst. Wie Sie sich vorstellen können, scheiterte beide.

Irgendwelche Ideen?

EDIT 1 Ich mag den CanStop Wert irgendwo vermeiden, dass ich es einfach wie eine Config-Datei oder Registry erhalten kann. Also versuche ich, wenn auch nicht erfolgreich, diese vollständig in Programm behandelt zu machen.

Neu (Fehlgeschlagen) Versuche:

  

Managementobject-Service;   Managementbasestopservice;

     

service = new   Managementobject ( "Win32_Service.Name = 'StopProgram'");

     

Stopservice = service   .InvokeMethod ( "Stopservice", null,   null);

Nicht sicher, das alles tat. Ich nehme an, es nicht wegen der CanStop Situation stoppen könnte.

War es hilfreich?

Lösung

Die "CanStop" ist ein Attribut der Dienste Anmeldung in Windows Service Control Manager. Sie können es nicht mitten im Schritt ändern.

Und natürlich, wenn Sie klug genug sind, Ihren eigenen Dienst zu schreiben, dann bist du klug genug task Mann zu bringen und einfach den Service-Prozess zu töten. CanStop wird verhindert, dass Sie nicht aus Ziehen der Teppich unter den Dienst. CanStop sagt nur den Dienststeuerungs-Manager nicht „Stop“ Befehle, um den Dienst zu senden.

Wenn Sie etwas zulassen wollen dann ein globales Ereignis verwenden, um übergeben die Kontrolle, den Dienst zu aktivieren / deaktivieren, nicht - oder entfernen Sie einfach die Spiele vom PC! : -)

Andere Tipps

Anstatt zu versuchen, direkt zuzugreifen und den Service zu steuern, könnten Sie irgendwo einen Flag gesetzt, (wie die Registrierung oder eine Datei), werden diese dann von Ihrem Service überprüft, bevor es das Ereignis ausführt, steuern Sie versuchen zu.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top