Я разрабатываю приложение DCOM, которое должно работать как служба. Мне удалось заставить это приложение работать как отдельное приложение (клиент запрашивает компонент, а ОС запускает отдельное приложение) - для этого я выполняю MyApp.exe / regserver, но после запуска MyApp.exe / service клиент не может получить доступ к приложению - ни когда служба не запущена, ни когда она запущена. Клиент не разработан мной (фактически, это функция Excel RTD), поэтому я не могу проверить, на каком этапе возникает проблема. Итак, как мне зарегистрировать класс / приложение, чтобы оно работало как служба? Разработан в VS2013, создан проект ATL "service exe".
Регистрация COM-класса для работы в качестве службы
Ответы (1)
Регистрация COM для проекта ATL службы очень похожа на его режим приложения: те же ключи реестра для классов COM с той лишь разницей, что сервер размещен службой. Однако более важным для вас является то, что клиенты получают доступ к COM-объектам службы через границу сеанса и с другими учетными данными. YourApp.exe работает как служба, вошедшая в систему как локальная система (если вы не изменили ее вручную или не настроили регистрационный код COM), тогда как клиенты входят в систему как пользователи.
Сделав это службой, обязательно ознакомьтесь с разрешениями на запуск и активацию для своего COM-объекты. Для устранения неполадок вы также можете изменить учетную запись пользователя для своей службы, чтобы она соответствовала пользователю, запускающему клиентское приложение (чтобы исключить проблемы, связанные с разрешениями и различными учетными записями пользователей).
AppID < / a> со значением LocalService, чтобы указать имя службы, поэтому COM может запустить службу, которая еще не запущена.
- person Remy Lebeau; 02.06.2015
LocalService из кода - ATL делает это из коробки), и типичные проблемы связаны с разрешениями, а не с самой регистрацией.
- person Roman R.; 02.06.2015
CoInitialize + CoCreateInstance и посмотреть, сможет ли он создать ваш COM-объект, размещенный на сервере.
- person Roman R.; 02.06.2015