ChangeServiceConfig2设置SERVICE_CONFIG_FAILURE_ACTIONS

 

 SERVICE_FAILURE_ACTIONS sdBuf={0};
    BOOL bSuccess=TRUE;
 
 if (argc!=2)
 {
  return 1;
 }
    // Open a handle to the service.
 SC_HANDLE sch=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
 if (sch==NULL)
 {
  return 1;
 }
    SC_HANDLE schService = OpenService(
        sch,           // SCManager database
        argv[1],    // name of service
        SC_MANAGER_ALL_ACCESS); // need CHANGE access

    if (schService == NULL)
    {
        printf("OpenService failed (%d)\n", GetLastError());
        return FALSE;
    }

    sdBuf.lpRebootMsg=NULL;
 sdBuf.dwResetPeriod=3600*24;

 SC_ACTION action[3];

 action[0].Delay=60*1000;
 action[0].Type=SC_ACTION_RESTART;

 action[1].Delay=0;
 action[1].Type=SC_ACTION_NONE;
 action[2].Delay=0;
 action[2].Type=SC_ACTION_NONE;

 sdBuf.cActions=3;
 sdBuf.lpsaActions=action;
 sdBuf.lpCommand=NULL;

    if( !ChangeServiceConfig2(
        schService,                
        SERVICE_CONFIG_FAILURE_ACTIONS,
        &sdBuf) )                  
    {
        printf("%s ChangeServiceConfig2 failed\n",argv[1]);
        bSuccess = FALSE;
    }
    else
        printf("%s ChangeServiceConfig2 succeeded\n",argv[1]);
 
    CloseServiceHandle(schService);

 

posted @ 2009-04-24 15:54  ahuo  阅读(2843)  评论(1编辑  收藏  举报