Я написал несколько COM-хостинг услуг с использованием BCB6, и все они прекрасно работают во всех версиях Windows, от Win9x годов, так что я должен был иметь дело с этим же эмиссионными много раз.
Просто не называйте Application.Initialize()
при запуске процесса на Win2003 +, ждать, пока TService
«s OnStart
или OnExecute
случае назвать его. Таким образом, API-интерфейс службы запускается до инициализации любых COM-объектов.
Трюк заключается в том, чтобы отложить вызов до Application.Initialize()
ТОЛЬКО на Win2003 + и ТОЛЬКО, когда служба фактически запущена. Не откладывайте вызов, если либо:
- Сервис работает на версиях Windows, ранее 2003
- когда услуга быть (не) установлен.
- когда COM-объект регистрируется (un).
В этих условиях звоните Application.Initialize()
обычно при запуске процесса.
Итак, вам нужно проверить версию ОС и параметры командной строки, чтобы знать, когда правильно позвонить Application.Initialize()
.
* Я считаю, что моя служба должна делать X. Это не делает X. Есть ли альтернатива X? * Я правильно понял это? –
Помимо этого, как вы диагностировали проблему. Можете ли вы четко указать, в чем проблема. –