处理Windows加密服务(cryptsvc)依赖性

时间:2019-06-05 16:19:42

标签: c++ windows windows-services

我有一个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服务。请注意,我不想严格确保在启动服务之前启动crypt服务,但应尽快启动crypt服务。

0 个答案:

没有答案