2016-07-08 4 views
-2

ich stoppe einen Windows-Dienst derzeit von meinem Code wie unten dargestellt:Wie Windows Services auf "manuell" festgelegt werden?

srvc_status = ControlService(serviceHandle, SERVICE_CONTROL_STOP, (LPSERVICE_STATUS)&status); 

Aber es ist, den Zustand des Dienstes Automatisch (Verzögerter Start) ändern. Aber ich muss es auf Manual eingestellt werden. Ich ging durch die Windows-Dokumentation auch in Bezug auf ChangeServiceConfig und nicht gefunden, was sagt über die Optionen explizit den Status auf Manual. Kann mich jemand hier zum richtigen API-Aufruf führen?

+0

Nicht hundertprozentig sicher, dass dies die Antwort ist, aber nachdem Sie den Dienst beendet haben, müssen Sie 'ChangeServiceConfig' aufrufen, für den Parameter' dwStartType' müssen Sie jedoch 'SERVICE_DEMAND_START' eingeben. So etwas in der Art: 'ChangeServiceConfig (serviceHandle, SERVICE_NO_CHANGE, SERVICE_DEMAND_START, SERVICE_NO_CHANGE, NULL, NULL, NULL, NULL, NULL, NULL, NULL);'. Lass es mich wissen, wenn es funktioniert und ich kann dies zu einer Antwort konvertieren. Sie werden feststellen, dass die 'dwStartType'-Enums mit Starttypen in Zusammenhang stehen, die auf der Dokumentation basieren, weshalb ich glaube, dass' SERVICE_DEMAND_START' genau das ist, was Sie brauchen. –

+0

Genau habe ich auch früher darüber nachgedacht aber in andere Dinge bei Google gewandert. Es funktioniert vollkommen in Ordnung. Bitte fügen Sie es als Antwort hinzu. –

Antwort

1

Die Startart eines Dienstes kann über ChangeServiceConfig eingestellt werden. Wenn Sie den Parameter dwStartType auf SERVICE_DEMAND_START setzen, wird er für Sie in Manual geändert.

Hier ist ein Beispiel, das nichts anderes, als den Starttyp ändert: ChangeServiceConfig(serviceHandle, SERVICE_NO_CHANGE, SERVICE_DEMAND_START, SERVICE_NO_CHANGE, NULL, NULL, NULL, NULL, NULL, NULL, NULL);

Es befindet sich auf den ersten Blick nicht klar ist, aber Sie werden die SERVICE_DEMAND_START Enumeration Beschreibung sagt bemerken:

, wenn ein Prozess der Anrufe Startservice Funktion

Für den Prozess Startservice zu rufen, die etwas bedeuten kann, ist es manuell zu starten.