Конференция "Corba" » CoRegisterClassObject и Сервис [Delphi, Windows]
 
  • tormoz (25.04.07 21:44) [0]
    Здравствуйте.

    Подскажите, как в Операционной системе Windows 2003 Server при создании сервиса зарегистрировать COM объект с помощью функции CoRegisterClassObject для дальнейшего доступа из других приложений на данной машине.
  • clickmaker © (26.04.07 18:15) [1]
    а какие трудности?

    CoRegisterClassObject(ClassID, <интерфейс твоей ComFactory>, CLSCTX_LOCAL_SERVER,  REGCLS_MULTIPLEUSE , dwRegister)
  • clickmaker © (26.04.07 18:17) [2]
    а чем, кстати, стандартный TComServer не устроил?
    Он все это сам сделает...
  • tormoz (29.04.07 15:11) [3]
    Это все понятно... Так все работает в простом приложении...
    Если приложение запуено как сервис, то:
    - функция CoRegisterClassObject возвращает значение 0 (ошибки нет)
    - при попытке подключиться из другого приложения с помощью функции CoGetClassObject запускается еще один процесс с именем сервиса с правами пользователя, который запустил клиентское приложение, даже в том случае, если сервис уже запущен под этим пользователем
    - клиент "виснет", через некоторое время выдается ошибка...

    Это все в операционной системе Windows XP.

    Для ОС Windows 2003 Server сначала должна быть зарегистрирована служба, а потом уже зарегистрирован COM Объект. Это не сложно: вызвать Application.Initialize после Application.Run...  Но все равно возникают те же проблемы что и в Windows XP...
  • clickmaker © (02.05.07 10:24) [4]

    > [3] tormoz   (29.04.07 15:11)

    вообще-то на клиенте нужно вызывать CoCreateInstanceEx, если сервер на другой машине
  • имя (29.12.07 01:20) [5]
    Удалено модератором
  • Сергей М. © (29.12.07 08:50) [6]

    > tormoz   (29.04.07 15:11) [3]


    Сервис при старте должен зарегистрироваться в running object table (ROT), тогда запуска нового экз-ра не произойдет.

    Ищи статью Набережных С. (С) c примером.
  • имя (10.01.08 17:36) [7]
    Удалено модератором
  • имя (10.01.08 17:38) [8]
    Удалено модератором
  • имя (10.01.08 17:38) [9]
    Удалено модератором
  • имя (10.01.08 17:39) [10]
    Удалено модератором
  • имя (11.01.08 00:25) [11]
    Удалено модератором
  • имя (11.01.08 08:56) [12]
    Удалено модератором
  • имя (16.01.08 19:02) [13]
    Удалено модератором
  • имя (16.01.08 19:02) [14]
    Удалено модератором
  • имя (16.01.08 19:02) [15]
    Удалено модератором
  • имя (09.02.08 17:39) [16]
    Удалено модератором
 
Конференция "Corba" » CoRegisterClassObject и Сервис [Delphi, Windows]
Есть новые Нет новых   [134430   +4][b:0][p:0.001]