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;
沒有留言:
張貼留言