-
Здравствуйте.
Подскажите, как в Операционной системе Windows 2003 Server при создании сервиса зарегистрировать COM объект с помощью функции CoRegisterClassObject для дальнейшего доступа из других приложений на данной машине.
-
а какие трудности?
CoRegisterClassObject(ClassID, <интерфейс твоей ComFactory>, CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE , dwRegister)
-
а чем, кстати, стандартный TComServer не устроил? Он все это сам сделает...
-
Это все понятно... Так все работает в простом приложении... Если приложение запуено как сервис, то: - функция CoRegisterClassObject возвращает значение 0 (ошибки нет) - при попытке подключиться из другого приложения с помощью функции CoGetClassObject запускается еще один процесс с именем сервиса с правами пользователя, который запустил клиентское приложение, даже в том случае, если сервис уже запущен под этим пользователем - клиент "виснет", через некоторое время выдается ошибка...
Это все в операционной системе Windows XP.
Для ОС Windows 2003 Server сначала должна быть зарегистрирована служба, а потом уже зарегистрирован COM Объект. Это не сложно: вызвать Application.Initialize после Application.Run... Но все равно возникают те же проблемы что и в Windows XP...
-
> [3] tormoz (29.04.07 15:11)
вообще-то на клиенте нужно вызывать CoCreateInstanceEx, если сервер на другой машине
-
Удалено модератором
-
> tormoz (29.04.07 15:11) [3]
Сервис при старте должен зарегистрироваться в running object table (ROT), тогда запуска нового экз-ра не произойдет.
Ищи статью Набережных С. (С) c примером.
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
|