所以我开发这个程序已经有一段时间了...它的目的是充当我们 IT 团队的资产经理(将来可能会更多)。我有 2 项服务,我们现在将其称为“Manager”和“IAM”。 “管理器”负责所有服务(目前只有库存资产管理器,称为“IAM”)的所有管理工作,例如自动更新等,而资产管理器则完成其工作。
无论如何,它已经工作了一段时间了。最近我实现了一个自动更新功能(实际上仍然需要测试和可能调试)。在执行此操作时,我需要使命名保持一致(例如,将我的服务从“Updater”和“CppWindowsService”重命名为软件的实际名称)。
在此之前,它一直运行良好!启动、停止、安装和卸载都没有出现任何问题。我更改了所有内容的名称,并确保一切都可以正常编译。看起来不错。现在安装对于“Manager”和“IAM”都非常有效,但是当我尝试启动它时,我得到:
启动服务失败(1053)
此外,当我尝试从 services.msc 启动它时,我收到以下错误消息:
Windows 无法启动本地计算机上的服务。
错误1053:服务没有及时响应启动或控制请求
奇怪的是,它不会等待任何超时。它只是立即吐出消息。该消息来自我的 wmain() (Windows 入口点。
main()
否则。)函数调用的代码。
if (!StartService(
schService, // handle to service
0, // number of arguments
NULL)) // no arguments
{
printf("StartService failed (%d)\n", GetLastError());
CloseServiceHandle(schService);
CloseServiceHandle(schSCManager);
return;
}
else printf("Service start pending...\n");
在 Windows 事件日志中,我收到一个应用程序错误,其中包含故障后的以下详细信息。
故障应用程序名称:InITManager.exe,版本:0.0.0.0,时间戳:0x59e11e44
故障模块名称:ucrtbase.dll,版本:10.0.15063.674,时间戳:0x8ac9f9d4
异常代码:0xc0000409
故障偏移:0x000000000007350e
故障进程 ID:0x3008
应用程序启动时间出现故障:0x01d346915918e17d
故障应用路径: C:\用户