Конференция "Corba" » Регистрация 32-разрядного COM-сервера в Виндовс 7 х64 [Delphi, Windows]
 
  • harisma © (07.04.11 15:07) [0]
    Здравствуйте.
    Не подскажете ли мне, в чем может быть проблема при регистрации нашего COM сервера, который реализован в виде ЕХЕ файла в операционной системе Windows 7 x64 (в операционках архитектуры х86 все корректно регистрируется).
    Процедура регистрации нашего СОМ-сервера реализована следующим образом:

    procedure COMRegisters;
    var
     LObjectFactory: TAutoObjectFactory;
    begin
       LObjectFactory := TAutoObjectFactory.Create(ComServer, TOServer, Class_OServer, ciMultiInstance, tmFree);
       try
         LObjectFactory.RegisterClassObject;
         LObjectFactory.UpdateRegistry(True);
       finally
         FreeAndNil(LObjectFactory);
         CoUninitialize;
         Halt;
       end;
    end;

    Эта процедура вызывается при первом старте нашего приложения.
    TOServer – класс, в котором реализован интерфейс COM-сервера
    Class_OServer – соответственно GUID CoClassa этого СОМ-сервера.

    Приложение написано на Delphi 5.

    После регистрации устанавливаем через dcomcnfg для этого СОМ-сервера запуск от указанного пользователя, указав логин этого пользователя и пароль.
    Когда наше приложение запускается в среде х86 – все нормально – стартует под учетной записью указанного пользователя.
    Когда в среде х64 – создается впечатление, что настройки DCOM игнорируются – приложение стартует под учетной записью ЗАПУСКАЮЩЕГО пользователя. И что самое неприятное, когда идет подключение клиента по сети при уже запущеном сервере, происходит попытка запуска второй копии сервера, чего быть не должно.

    Что можете посоветовать? В чем проблема кроется?
  • umbra © (06.05.11 11:57) [1]
    дело, наверное, в перенаправлении реестра в 64-разрядной Windows 7. Как именно вы запускаете dcomcnfg?
 
Конференция "Corba" » Регистрация 32-разрядного COM-сервера в Виндовс 7 х64 [Delphi, Windows]
Есть новые Нет новых   [134427   +35][b:0][p:0]