Необходимо реализовать алгоритм, работающий (сбор и анализ данных) в течении работы системы и передающий результаты по запросам клиентов. Все происходит на локальной машине, сеть не нужна в принципе.
Как лучше сделать, с учетом что работать будет только под Win2k/XP?
Я реализовал процесс сбора и обработки данных как Singleton COM. В результате все клиенты получают доступ к единственному экземпляру. Осталось только создавать его при запуске ОС (и что бы приложение любого юзера получило к нему доступ).
Пробовал сделать так:
1) Service с COM-интерфейсом.
Создал визардом ATL Service, добавил реализацию своего COM интерфейса.
В итоге запускается сервис при старте ОС, а клиенты, еще при запросе IUnknown, получают E_ACCESSDENIED.
Проблема решается если запускать сервис от текущего юзера. Однако это не решение...
2) Сделал так:
— COM в отдельном EXE-сервере
— сервис, создающий экземпляр и "удерживающий" его в течении работы системы. Сам ничего больше не делает, главное что все последующий клиенты получат этот же экземпляр.
— клиенты получают доступ к единственному экземпляру.
Вроде все ок, но как-то криво получилось.