Обработка зависимости служб криптографии Windows (cryptsvc) - PullRequest
0 голосов
/ 05 июня 2019

У меня есть служба 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 должна быть запущена как можно скорее.

...