所以我开发这个程序已经有一段时间了...它的目的是充当我们 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:\Users\collin.walker\Desktop\InITService\C++\x64\Release\Manager.exe
错误模块路径: C:\WINDOWS\System32\ucrtbase.dll
报告 ID:7fcbdcc4-be8e-476a-960f-4fa1fb21f892
错误包全名:
错误包相关应用程序 ID:
其他信息:ucrtbase.dll 由 Visual Studio 使用,并与发布版本关联,而 ucrtbased.dll 与调试器版本关联。我正在发布模式下构建。
现在,我已经被告知问题不是我的代码,但如果有人觉得他们需要看到它,我会将其包含在内。不过,它是非常简单的 c++ winapi 东西。
如果有人对如何解决此问题有任何进一步的建议,请告诉我,并提前感谢所有帮助!