Страницы

7 июня 2012 г.

Регистрация COM сервера в системе

       Здравствуйте.
       Тем, кто уже работал с COM-серверами и успешно переносил их на другие машины - можно не читать.
       На начальном этапе программеров смущает тот факт, что при переносе на новую машину клиенты их COM-серверов (я работал только Out-precess) выдают ошибку "Interface not supported". Лично мой сервер является приложением, а не библиотекой. Где-то я вычитал что сервера-приложения сами себя регистрируют при запуске, что меня в конечном итоге и сбило с толку. При переносе на другую машину столкнулся с вышеописанной ошибкой. Все оказалось не так просто...
Итак, COM-сервера бывают 2-х видов:
  • В виде DLL;
  • В виде исполняемого файла.

DLL версию сервера можно зарегистрировать с помощью утилиты "regsvr32.exe". Для этого в командной строке пишем: "regsvr32.exe путь до библиотеки DLL". Это простейший случай.
Более расширенное описание:

regsvr32 [/u] [/s] [/n] [/i[:строка_команд]] DLL-файл

/u – отменяет регистрацию DLL;
/s – «тихий» режим – окна сообщений не отображаются;
/i – вызывает DllInstall, передавая параметром необязательную строку_команд, при использовании с ключом /u вызывает DLLUnInstall;
/n – не вызывает DllRegisterServer; это может использоваться с ключом /i.

       Версию COM-сервера в виде исполняемого файла можно зарегестрировать запустив его с ключем  "/regserver".
Например, регистрируем сервер:
My_COM_Program.exe  /regserver 

Отменяем регистрацию:
My_COM_Program.exe  /unregserver

В Window 7, регистрация приложения может вызвать ошибку обращения к OLE. Чтобы ее обойти, я просто запустил cmd.exe с правами администратора и выполнил указанные выше команды.

Комментариев нет:

Отправить комментарий