SC_HANDLE OpenService(SC_HANDLE HandleGestionnaire, LPCTSTR NomDuService, DWORD ModeDAcces);
Le mode d'accès ModeDAcces est le plus souvent GENERIC_EXECUTE pour agir sur l'état d'exécution du service.
Le résultat est le handle sur le service.
#include <windows.h>
#include <winbase.h>
SC_HANDLE HandleGestionnaire;
SC_HANDLE HandleService;
Handle=OpenSCManager(NULL, NULL, GENERIC_EXECUTE);
if (!Handle)
{
...
}
...
HandleService=OpenService(HandleGestionnaire, "MonService", SERVICE_START);
if (!HandleService)
{
...
}
CloseServiceHandle(HandleService);
...
HandleService=OpenService(HandleGestionnaire, "MonService", QUERY_STATUS);
if (!HandleService)
{
...
}
CloseServiceHandle(HandleService);
...
HandleService=OpenService(HandleGestionnaire, "MonService", SERVICE_STOP);
if (!HandleService)
{
...
}
...
CloseServiceHandle(HandleService);
CloseServiceHandle(HandleGestionnaire);
Bien s'assurer que le gestionnaire de services a été correctement ouvert.