2011-01-10 2 views
0

В соответствии с этой статьей: http://msdn.microsoft.com/en-us/library/ms809975.aspx вы можете экспортировать компонент в службу.Несколько услуг, экспортирующих один и тот же компонент COM

Но возможно ли создать несколько служб, которые экспортируют разные экземпляры одного и того же компонента?

Я вижу одну потенциальную проблему при определении \ HKEY_CLASSES_ROOT \ AppID \\ LocalService, поскольку каждая служба имеет другое имя, я не могу иметь их всех в одном ключе.

Благодаря

ответ

2

Он совершенно явно упоминается в связанном статье:

Do not use REGCLS_SINGLEUSE. Registration fails if you use this flag. The operating system allows a single instance of a service. For this reason, the COM component must be available to multiple clients simultaneously.

Вы есть использовать обычный сервер вне процесса, если вы хотите несколько экземпляров.

+0

Эмм, ладно, как получилось? Ключевым моментом цитаты является то, что вы можете получить услугу только один раз. –

+0

То, что я сделал это: CoGetClassObject (MyCLSID CLSCTX_INPROC_SERVER, NULL, IID_IClassFactory (PVOID *) &pCF); и позже CoRegisterClassObject (MyCLSID, PCF, CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE | REGCLS_MULTI_SEPARATE, и m_ckClassObj); – mathk

+0

меня установить службу с именем 2 Дифференца и его работой но в какой-то момент у меня есть ошибка: «Класс настроен на запуск в качестве идентификатора безопасности, отличный от вызывающего». Затем я переименую \ HKEY_CLASSES_ROOT \ AppID \ {CLSID} \ LocalService в имя первой службы, запустите ее и переименуйте его на имя второй службы и запустите вторую услугу, и она работает. – mathk

Смежные вопросы