我将我的程序注册为Windows服务。当我重新启动Windows时,该服务将永远是START_PENDING。 跟踪后,我发现它挂在CreateService函数上。
hService=CreateService( hSCManager,
pszDriverName,
pszDriverName,
SERVICE_ALL_ACCESS,
SERVICE_KERNEL_DRIVER,
SERVICE_DEMAND_START,
SERVICE_ERROR_NORMAL,
pszDriverPath,
NULL,
NULL,
NULL,
NULL,
NULL);
我可以通过在重新启动之前创建服务来解决问题,但我想知道挂起发生了什么。有没有人有任何想法?
答案 0 :(得分:1)
如果我记得很清楚,必须只创建一次服务。您不必再次调用CreateService函数!我不建议在Windows启动过程中创建它。
正如您在以下MSDN示例中所看到的,您必须使用“install”命令行参数启动给定的示例软件以创建服务。在任何其他情况下,服务都被视为已安装。
注意在示例中使用StartServiceCtrlDispatcher函数来启动服务主函数(在本例中为SvcMain)。
http://msdn.microsoft.com/en-us/library/windows/desktop/bb540476(v=vs.85).aspx
答案 1 :(得分:0)
具有服务的应用程序通常具有注册和安装其服务的安装程序。安装应用程序时,会生成并注册所有服务,并且在引导系统时无需再次安装它们。 Windows在启动服务时将此功能作为常规功能执行。
当您应该创建新服务时,您在上面提到的功能用于安装程序中的服务安装。