Запрос служб Windows - PullRequest
       13

Запрос служб Windows

1 голос
/ 01 июня 2009

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

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 служба имеет «Не предпринимать никаких действий» в опциях восстановления. Есть ли способ, которым я могу программно изменить это, чтобы после сбоя он перезапустился?

Ответы [ 3 ]

1 голос
/ 01 июня 2009

Посмотрите на ChangeServiceConfig2 для настройки этих типов сервисных опций.

0 голосов
/ 01 июня 2009

Выполнено дальнейшее копание в 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

Где вы можете настроить «дополнительные» сервисные настройки по своему желанию.

0 голосов
/ 01 июня 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...