Hilfe - Windows Dienst beenden



  • Hi Leute!

    Ich weiß das Thema wurde hier schon mehrfach beschrieben und durch gekaut.
    UND trotzdem hab ich damit meine Probleme.
    MSDN von Microsoft hab ich auch schon durch gegrast und mir die entsprechenden Beispiele / Erläuterungen angeschaut.

    Ich verwende Borland Developer Studio 2006 und ich will den Dienst MySQL beenden.

    #include windows.h
    #include winsvc.h
    ...
    //-----------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    SC_HANDLE 	hSCManager;
    SC_HANDLE 	hService;
    
    hSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
    hService = OpenService(hSCManager,"MySQL",GENERIC_EXECUTE);
    hService = OpenService(hSCManager,"MySQL",SERVICE_CONTROL_STOP);
    
    CloseServiceHandle(hSCManager);
    CloseServiceHandle(hService);
    }
    

    Auch die advapi32.lib habe ich dem Project hinzugefügt (sollte eigentlich mit der winsvc.h erledigt).
    Doch wenn ich mir die Dienste anzeigen lasse, ändert sich der Status von MySQL nicht.
    Was mich ebenfalls verwundert, es kommen keine Fehlermeldungen. Dabei ist es egal ob ich MySQL oder nur Test eintrage.
    Mit GetLastError() Bekomme ich den Code 0.

    Ich hoffe Einer nimmt sich meiner an und hilft mir etwas. 🙄

    -- EDIT --
    Habs gefunden!
    In der Anweisung hat noch eine "Kleinigkeit" gefehlt.

    {
    	HANDLE 	hSCManager;
    	HANDLE 	hService;
    
    	SERVICE_STATUS status;
    
    	hSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
    	hService = OpenService(hSCManager,"MySQL",SERVICE_STOP);
    
    	ControlService(hService, SERVICE_CONTROL_STOP, &status);
    
    	CloseServiceHandle(hSCManager);
    	CloseServiceHandle(hService);
    }
    

    Falls jemand dennoch Anregungen oder Sonstiges an Info's hat, bin ich dankbar.

    Grüße


Anmelden zum Antworten