Назад | Перейти на главную страницу

Почему моя служба Windows BuildBot сразу выдает ошибку 7000?

Я настраиваю BuildBot worker на виртуальной машине Windows Server 2016 Datacenter Edition, работающей в Azure. Это будет сборка нашего продукта для Windows с использованием компилятора Visual Studio C ++.

Я дошел до того, что рабочий установлен и работает в сеансе административного рабочего стола. Он подключается к нашему главному серверу сборки и, судя по результатам тестовых сборок, может получить доступ ко всем необходимым инструментам и службам.

Я работал над тем, чтобы рабочий запускался как служба. Это позволит автоматически запускать воркер от имени непривилегированного пользователя.

Только вот ... служба не запускается. Когда я смотрю в журнал событий, я вижу две ошибки в «Журналы Windows → Система»:

Никаких событий от самого BuildBot не регистрируется в «Журналы Windows → Приложение», и эти события регистрируются (и служба регистрируется как сбойная) сразу же при попытке ее запуска.

В настоящее время служба настроена на работу как «LocalSystem» (позже я планировал ограничить права доступа). Насколько я понимаю, «LocalSystem» должна иметь доступ ко всем локальным ресурсам, поэтому я не думаю, что разрешения файловой системы могут вызывать эту проблему.

Изменить: эта проблема воспроизводима даже с использованием простой службы тестирования, представленной в этот ответ на переполнение стека.

Проблема оказалась в незарегистрированных DLL. В частности, поддержка службы Python, предоставляемая pywin32, требует, чтобы определенные библиотеки DLL были доступны для взаимодействия с Win32 API. Эти библиотеки DLL должны быть установлены автоматически при установке pywin32 с помощью:

pip install pypiwin32

Как упоминалось в этот ответ на переполнение стека, правильным исправлением в этом случае было запустить:

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

Это решило мою проблему.