Создание COM при запуске? (посоветуйте структуру приложения)
От: Doc Россия http://andrey.moveax.ru
Дата: 09.11.04 18:20
Оценка:
Необходимо реализовать алгоритм, работающий (сбор и анализ данных) в течении работы системы и передающий результаты по запросам клиентов. Все происходит на локальной машине, сеть не нужна в принципе.

Как лучше сделать, с учетом что работать будет только под Win2k/XP?

Я реализовал процесс сбора и обработки данных как Singleton COM. В результате все клиенты получают доступ к единственному экземпляру. Осталось только создавать его при запуске ОС (и что бы приложение любого юзера получило к нему доступ).

Пробовал сделать так:
1) Service с COM-интерфейсом.
Создал визардом ATL Service, добавил реализацию своего COM интерфейса.
В итоге запускается сервис при старте ОС, а клиенты, еще при запросе IUnknown, получают E_ACCESSDENIED.
Проблема решается если запускать сервис от текущего юзера. Однако это не решение...

2) Сделал так:
— COM в отдельном EXE-сервере
— сервис, создающий экземпляр и "удерживающий" его в течении работы системы. Сам ничего больше не делает, главное что все последующий клиенты получат этот же экземпляр.
— клиенты получают доступ к единственному экземпляру.
Вроде все ок, но как-то криво получилось.

Может есть варианты лучше?
Re: Создание COM при запуске? (посоветуйте структуру приложе
От: rus blood Россия  
Дата: 09.11.04 18:34
Оценка:
Здравствуйте, Doc, Вы писали:

Doc>Пробовал сделать так:

Doc>1) Service с COM-интерфейсом.
Doc>Создал визардом ATL Service, добавил реализацию своего COM интерфейса.
Doc>В итоге запускается сервис при старте ОС, а клиенты, еще при запросе IUnknown, получают E_ACCESSDENIED.
Doc>Проблема решается если запускать сервис от текущего юзера. Однако это не решение...
Дело, скорее всего, не в текущем юзере.
В dcomcnfg для твоего сервиса на вкладке Security настрой access permission и launch permission.


Doc>2) Сделал так:

Doc>- COM в отдельном EXE-сервере
Doc>- сервис, создающий экземпляр и "удерживающий" его в течении работы системы. Сам ничего больше не делает, главное что все последующий клиенты получат этот же экземпляр.
Doc>- клиенты получают доступ к единственному экземпляру.
Doc>Вроде все ок, но как-то криво получилось.
Да. Сервис не нужен. EXE-сервер может сам себя держать в памяти.
Имею скафандр — готов путешествовать!
Re[2]: Создание COM при запуске? (посоветуйте структуру прил
От: Doc Россия http://andrey.moveax.ru
Дата: 10.11.04 01:19
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>Дело, скорее всего, не в текущем юзере.

RB>В dcomcnfg для твоего сервиса на вкладке Security настрой access permission и launch permission.

Все равно остается вопрос — как сделать такие настроки автоматом при установке?
Т.е. юзер не будет ковыряться в таких детялях.

RB>Да. Сервис не нужен. EXE-сервер может сам себя держать в памяти.

Да, однако EXE-сервер запускается в контексте текущего не будет "виден" другим юзерам (например в WinXP при смене).
А вообще мне хочется убежать от того, что каждому юзеру создается своя копия — достаточно 1 сервиса.
Re[3]: Создание COM при запуске? (посоветуйте структуру прил
От: NKZ  
Дата: 10.11.04 07:54
Оценка:
Здравствуйте, Doc, Вы писали:

Doc>Все равно остается вопрос — как сделать такие настроки автоматом при установке?

Doc>Т.е. юзер не будет ковыряться в таких детялях.

Посмотри пример в MSDN
INFO: DCOMCNFG Programmatically Manipulates DCOM Server Permissions
... << RSDN@Home 1.1.4 beta 3 rev. 0>>
Re[4]: Создание COM при запуске? (посоветуйте структуру прил
От: Doc Россия http://andrey.moveax.ru
Дата: 10.11.04 09:31
Оценка:
Здравствуйте, NKZ, Вы писали:

NKZ>Посмотри пример в MSDN

NKZ>INFO: DCOMCNFG Programmatically Manipulates DCOM Server Permissions<br />
<span class='lineQuote level1'>NKZ&gt;</span>


Там ссылка на пример, который лежит в 100Мб сборнике примеров от VC6. С моим соединением это не выкачать.
А отдельно этого примера нет? Если он не большой может кто-нибудь кинет им в меня?
Re[5]: Создание COM при запуске? (посоветуйте структуру прил
От: Alexey Goncharov Россия  
Дата: 10.11.04 10:17
Оценка: 2 (1)
Здравствуйте, Doc, Вы писали:

Doc>Там ссылка на пример, который лежит в 100Мб сборнике примеров от VC6. С моим соединением это не выкачать.

Doc>А отдельно этого примера нет? Если он не большой может кто-нибудь кинет им в меня?

Ушло почтой
Re[6]: Создание COM при запуске? (посоветуйте структуру прил
От: Doc Россия http://andrey.moveax.ru
Дата: 10.11.04 10:31
Оценка:
Здравствуйте, Alexey Goncharov, Вы писали:

AG>Ушло почтой


Спасибо всем приславшим
Re[7]: Создание COM при запуске? (посоветуйте структуру прил
От: EjikVTumane  
Дата: 31.05.05 11:02
Оценка:
Здравствуйте, Doc, Вы писали:

Doc>Здравствуйте, Alexey Goncharov, Вы писали:


AG>>Ушло почтой


Doc>Спасибо всем приславшим


А можно и в меня метнуть этим экзамплом?
Re[8]: Создание COM при запуске? (посоветуйте структуру прил
От: Alexey Goncharov Россия  
Дата: 03.06.05 09:39
Оценка:
Здравствуйте, EjikVTumane, Вы писали:

EVT>А можно и в меня метнуть этим экзамплом?


DCOMPERM sample
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.