2009-06-01 4 views
1

Использование метода, описанного в MSDN для регистрации службы Windows (ms-help: //MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/dllproc/base/createservice .htm) и используя аналогичный код на прилагаемом примере:Запрос служб Windows

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 

Моя проблема заключается в том, что, хотя услуга зарегистрирована и работает отлично, в msconfig.msc услуга «не выполнять никаких действий» в параметрах восстановления. Есть ли способ, который я могу программно изменить это, чтобы после сбоя перезапускался?

ответ

0

Возможно, вы сможете установить это с помощью команды sc.

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

Это покажет его для сброса счетчика отказов после 0 дней (никогда), и перезапуска после 30 секунд на первую неудачу с какими-либо действиями для второго и последующих неудач.

0

Выполненные дальше копаться в MSDN - это было не очень легко найти, но он появляется

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 
); 

Когда пары dwInfoLevel является SERVICE_CONFIG_FAILURE_ACTIONS (2), то lpInfo параметр - указатель на структуру SERVICE_FAILURE_ACTIONS.

SERVICE_FAILURE_ACTIONS Структура http://msdn.microsoft.com/en-us/library/ms685939(VS.85).aspx

Где можно настроить «необязательные» параметры службы, как вы хотите.

Смежные вопросы