我有一个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服务。