-
Здравствуйте. Не подскажете ли мне, в чем может быть проблема при регистрации нашего 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 игнорируются – приложение стартует под учетной записью ЗАПУСКАЮЩЕГО пользователя. И что самое неприятное, когда идет подключение клиента по сети при уже запущеном сервере, происходит попытка запуска второй копии сервера, чего быть не должно.
Что можете посоветовать? В чем проблема кроется?
-
дело, наверное, в перенаправлении реестра в 64-разрядной Windows 7. Как именно вы запускаете dcomcnfg?
|