Что нужно для регистрации COM-компонента? - PullRequest
2 голосов
/ 09 октября 2009

Я разработчик .NET, новичок в COM. Я хотел бы знать, что нужно для регистрации COM-компонента? Что происходит при регистрации.

Ответы [ 4 ]

2 голосов
/ 09 октября 2009

Для создания экземпляра COM-компонента потребитель вызывает CoCreateInstance () (либо напрямую, либо вызывается неким классом-оберткой - не имеет значения), предоставляя ему два GUID - идентификатор класса и идентификатор интерфейса. Затем подсистема COM автоматически находит, какую библиотеку или исполняемый файл загрузить, зная только предоставленный идентификатор класса. Для этого он использует информацию в реестре, которая записывается во время регистрации компонента.

Другая информация также может быть написана. Потребитель может использовать так называемый ProgID для обнаружения идентификатора класса с символическим именем. Сначала он вызывает CLSIDFromProgID () для преобразования ProgID в идентификатор класса, затем снова CoCreateInstance (). Перевод осуществляется с использованием информации в реестре.

2 голосов
/ 09 октября 2009

Для того, чтобы ОС нашла компонент, когда это нужно программе, это должен быть зарегистрирован в системе. Затем система записывает это в Реестр.

Обычно компонент регистрируется запустив программу REGSVR32.EXE, который предполагает, что компонент имеет были должным образом закодированы для поддержки Открытый метод DLLRegisterServer (). Выполнение regsvr32.exe должен ответить с диалоговым окном, указывающим успех или неудача регистрация.

Чтение

Понимание регистрации COM-компонента

1 голос
/ 10 октября 2009

COM-объекты могут быть созданы из любого процесса в системе, не зная ничего, кроме имени компонента, например. Word.Application. Поскольку создаваемое приложение не должно знать, где находится dll или exe-файл, содержащий код, что-то еще должно. В реестре хранится вся эта информация

  1. Физическое расположение файла, который реализует объект COM.
  2. Все классы и интерфейсы COM-объекта.
  3. Другая важная информация.

Без регистрации вызывающему приложению нужно было бы знать намного больше о том, где находятся библиотеки DLL и т. Д., Какие методы они открывают, как их вызывать и т. Д. Фактически, вы также можете вызывать старые добрые DLL.

Вся регистрация - это несколько записей в реестре, но она упрощает многие вещи.

1 голос
/ 09 октября 2009

COM использует реестр для сопоставления идентификаторов ProgID и CLSID с вашим компонентом. Это позволяет кому-то совместно создавать ваш COM-компонент без необходимости вручную загружать .dll и т. Д.

...