Проблема с запуском службы Windows

#delphi #windows-services

#delphi #windows-services

Вопрос:

У меня возникли проблемы с запуском службы Windows. Каждый раз, когда он запускается в среде IDE, как служба или иным образом, в журнале событий Windows отображается ошибка с указанием:

«Процессу обслуживания не удалось подключиться к контроллеру службы».

При отладке я могу выполнить пошаговую ServiceCreate процедуру, и я успешно выполняю печать в файл журнала. Однако у меня есть идентичный код (сохраните строку сообщения) в процедурах ServiceStart or ServiceExecute , и он, похоже, никогда не запускается.

Отладчик позволяет мне войти Application.CreateForm , который сразу переходит к ServiceCreate процедуре, но я не могу войти Application.Run .

Есть идеи?

Редактировать: чтобы уточнить, я выполняю отладку, запуская службу Windows, а затем подключаюсь к процессу в Delphi во время ожидания, которое я добавил для запуска.

Редактировать 2: Хорошо, теперь это позволяет мне углубиться Application.Run и узнать больше подробностей, где бы я ни захотел. Я отключил отладочные DCU. Думал, что просмотр кода VCL ничего не сделал, чтобы помочь мне понять, в чем проблема. Я до сих пор понятия не имею, как ServiceStart или ServiceExecute должны вызываться.

Комментарии:

1. ServiceStart или ServiceExecute вызываются в ответ на сообщения, отправляемые диспетчером управления службами

Ответ №1:

это единственное сообщение об ошибке, которое вы получаете? какой код у вас есть в разделе инициализации ваших pas-файлов? эта ошибка обычно возникает, когда возникает ошибка, и ваше приложение ее не улавливает. попробуйте зарегистрировать все события из приложения. кроме того, загляните в средство просмотра событий Windows для получения более подробной информации, связанной с этим.

Комментарии:

1. Итак, сейчас это работает. В итоге я начал с нуля, чтобы убедиться, что я обнаружил ошибки по мере их появления. (Большая часть кода находится в отдельной библиотеке, поэтому я просто подключил его к приложению-службе.) Похоже, что недостатки в основном заключались в том, что я делал предположения (рабочий каталог НЕ там, где запускается exe) и не улавливал ошибки на верхнем уровне.