为什么我的 Windows BuildBot 服务立即失败并出现错误 7000?

为什么我的 Windows BuildBot 服务立即失败并出现错误 7000?

我正在建立一个建造机器人在 Azure 上运行的 Windows Server 2016 Datacenter Edition VM 中的工作人员。这将使用 Visual Studio C++ 编译器为 Windows 构建我们的产品。

我已经安装好工作器并在管理桌面会话中运行。它连接到我们的构建主服务器,并且似乎能够根据测试构建的结果访问所需的所有工具和服务。

我一直在努力让工作程序以服务形式运行。这样就可以自动以非特权用户身份运行工作程序。

只是……服务没有启动。当我查看事件日志时,我在“Windows 日志 → 系统”中看到两个错误:

  • 事件 ID:7000

    BuildBot 服务由于以下错误启动失败:该服务未及时响应启动或控制请求。

  • 事件 ID:7009

    等待 BuildBot 服务连接时超时(30000 毫秒)

BuildBot 本身没有在“Windows 日志 → 应用程序”中记录任何事件,并且在尝试启动时立即记录这些事件(并报告服务失败)。

目前,该服务设置为以“LocalSystem”运行(我计划稍后限制权限)。据我了解,“LocalSystem”应该可以访问所有本地资源,因此我认为文件系统权限不太可能导致此问题。

  • 导致此类服务失败的常见原因有哪些?

  • 还有其他我应该查看的日志或诊断信息吗?

  • 我还可以采取哪些其他步骤来确定导致此失败的原因?

编辑:即使使用提供的简单测试服务,此问题也可以重现这个 Stack Overflow 上的答案

答案1

问题原来是未注册的 DLL。具体来说,pywin32 提供的 Python 服务支持需要特定的 DLL 才能与 win32 API 交互。这些 DLL 应该在安装 pywin32 时自动安装:

pip install pypiwin32

正如所提到的这个 Stack Overflow 上的答案,在这种情况下正确的修复方法是运行:

python C:\Python27\Scripts\pywin32_postinstall.py install

这解决了我的问题。

相关内容