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