У меня есть служба Windows скажет test
, которая зависит от cryptsvc
. В некоторых системах (например, Windows XP) cryptsvc
запускается позже, чем мой сервис.
Один из способов справиться с этим - добавить cryptsvc
в качестве зависимого сервиса в мой тестовый сервис.
Но это также задержит запуск службы test
.
Я попытался вручную запустить cryptsvc
, используя startservice()
как часть моей инициализации службы, как показано ниже:
SERVICE_STATUS Status;
Status.dwCurrentState = SERVICE_START_PENDING;
setservicestatus(hTestService, &Status);
ServiceInit();
Status.dwCurrentState = SERVICE_RUNNING;
setservicestatus(hTestService, &Status);
И
ServiceInit()
{
// launch a worker thread that
// calls startservice() to start cryptsvc.
}
Но вызов startservice()
, кажется, на некоторое время блокируется и в итоге завершается с ошибкой 1056 (уже запущен экземпляр).
Как я могу гарантировать, что служба шифрования запускается как можно раньше, или как я могу запустить службу шифрования как часть инициализации моей службы. Обратите внимание, что я не хочу строго следить за тем, чтобы служба crypt работала до того, как моя служба заработала, но служба crypt должна быть запущена как можно скорее.