2009-06-01 9 views
1

Utilisation de la méthode décrite dans le MSDN pour l'enregistrement d'un service Windows (ms-help: //MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/dllproc/base/createservice .htm) et en utilisant un code similaire à l'exemple fourni:Requête Windows Services

schService = CreateService( 
    schSCManager,    // SCManager database 
    TEXT("Sample_Srv"),  // name of service 
    lpszDisplayName,   // service name to display 
    SERVICE_ALL_ACCESS,  // desired access 
    SERVICE_WIN32_OWN_PROCESS, // service type 
    SERVICE_DEMAND_START,  // start type 
    SERVICE_ERROR_NORMAL,  // error control type 
    szPath,     // path to service's binary 
    NULL,      // no load ordering group 
    NULL,      // no tag identifier 
    NULL,      // no dependencies 
    NULL,      // LocalSystem account 
    NULL);      // no password 

Mon problème est que, même si le service est enregistré et fonctionne parfaitement, en msconfig.msc le service a « Ne rien faire » dans les options de récupération. Y a-t-il un moyen de changer cela par programmation afin qu'en cas d'échec, il redémarre?

Répondre

0

Vous pouvez définir ce paramètre à l'aide de la commande sc.

sc failure "servicename" reset= 0 actions= restart/30000//// 

Cela lui dire de remettre le compteur d'échec après 0 jours (jamais) et redémarrer au bout de 30 secondes sur le premier échec sans action pour les échecs deuxième et plus tard.

0

Effectué creuser plus loin dans le MSDN - il n'a pas été particulièrement facile à trouver, mais il semble

ChangeServiceConfig2 (http://msdn.microsoft.com/en-us/library/ms681988(VS.85).aspx)

BOOL WINAPI ChangeServiceConfig2(
    __in  SC_HANDLE hService, 
    __in  DWORD dwInfoLevel, 
    __in_opt LPVOID lpInfo 
); 

Lorsque dwInfoLevel est SERVICE_CONFIG_FAILURE_ACTIONS param (2), le lpinfo paramètre est un pointeur vers une structure SERVICE_FAILURE_ACTIONS.

SERVICE_FAILURE_ACTIONS Structure http://msdn.microsoft.com/en-us/library/ms685939(VS.85).aspx

vous permet de configurer les paramètres de service 'en option' que vous le souhaitez.

Questions connexes