我正在Azure 上运行的 Windows Server 2016 Datacenter Edition VM 中设置BuildBot工作人员。这将使用 Visual Studio C++ 编译器为 Windows 构建我们的产品。
我已经到了在管理桌面会话中安装和运行工作程序的地步。它连接到我们的构建主服务器,并且似乎能够根据测试构建的结果访问它需要的所有工具和服务。
我一直在努力让工人作为服务运行。这将使工作人员可以自动以非特权用户身份运行。
除了...服务没有启动。当我查看事件日志时,我在“Windows 日志 → 系统”中看到两个错误:
事件编号:7000
由于以下错误,BuildBot 服务无法启动:该服务没有及时响应启动或控制请求。
事件编号:7009
等待 BuildBot 服务连接时达到超时(30000 毫秒)
BuildBot 本身没有任何事件记录在“Windows 日志 → 应用程序”中,并且在尝试启动它时会立即记录这些事件(并且服务报告为失败)。
目前,该服务设置为“LocalSystem”运行(我计划稍后限制权限)。据我了解,“LocalSystem”应该可以访问所有本地资源,所以我认为文件系统权限不太可能导致这个问题。
是否有任何常见的导致服务失败的原因?
我应该查看其他日志或诊断信息吗?
我可以采取哪些其他步骤来确定导致此失败的原因?
编辑:即使使用此 Stack Overflow 答案中提供的简单测试服务,此问题也是可重现的。
问题原来是未注册的 DLL。具体来说,pywin32 提供的 Python 服务支持需要特定的 DLL 才能与 win32 API 交互。这些 DLL 应该在安装 pywin32 时自动安装:
正如这个 Stack Overflow answer中提到的,在这种情况下正确的修复是运行:
这解决了我的问题。