2011年5月27日 星期五

StartService ,StopService

To StartService or StopService, needs to use OpenSCManager and OpenService API to get SC_HANDLE
//============Stop Service============================
#include "Winsvc.h" // to use SC_HANDLE
SC_HANDLE schSCManager = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS);
    if (schSCManager==0)
    {
        TRACE(_T("KillService OpenSCManager failed"));
    }
    else
    {
        // open the service
        SC_HANDLE schService = OpenService( schSCManager, pName, SERVICE_ALL_ACCESS);
        if (schService==0)
        {
            TRACE(_T("KillService OpenService failed"));
        }
      

      else
        {
            // call ControlService to kill the given service
            SERVICE_STATUS status;
            if(ControlService(schService, SERVICE_CONTROL_STOP, &status))
            {
                CloseServiceHandle(schService);
                CloseServiceHandle(schSCManager);
                return TRUE;
            }


           else
            {
                TRACE(_T("KillService ControlService failed"));
            }
            CloseServiceHandle(schService);
        }
        CloseServiceHandle(schSCManager);
       
    }
   
   
    return FALSE;

//============Start Service===============

SC_HANDLE schSCManager = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS);
    if (schSCManager==0)
    {
        TRACE(_T("RunService OpenSCManager failed\r\n"));
    }
    else
    {
        // open the service
        SC_HANDLE schService = OpenService( schSCManager, pName, SERVICE_ALL_ACCESS);
        if (schService == 0)
        {
            TRACE(_T("RunService OpenService failed"));
        }
        else
        {
            // call StartService to run the service
            if(StartService(schService, 0, (const TCHAR**)NULL))
            {
                CloseServiceHandle(schService);
                CloseServiceHandle(schSCManager);
                return TRUE;
            }
            else
            {
                TRACE(_T("RunService StartService failed"));
            }
            CloseServiceHandle(schService);
        }
        CloseServiceHandle(schSCManager);
       
    }
   

    return FALSE;

沒有留言:

張貼留言