Что на самом деле делает regsvr32 filename.ax?

regsvr32 filename.ax

Я просто вижу, что это сказало что-то установленное успешно, но какова целая история?

13
задан wamp 13 August 2010 в 08:03
поделиться

3 ответа

По сути, он вызывает вашу dll (в данном случае с именем filename.ax) и вызывает ее метод "DllRegisterServer".

В случае с фильтрами directshow, он может "зарегистрировать" эти фильтры в реестре windows, чтобы directshow знал о них.

например: https://github.com/rdp/directshow-demo-audio-input-open-source/blob/master/acam/virt_audio_all.cpp#L698 вызывает. https://github.com/rdp/directshow-demo-audio-input-open-source/blob/master/acam/virt_audio_all.cpp#L631

Хотя есть и более простые версии.

2
ответ дан 1 December 2019 в 19:58
поделиться

regsvr32 регистрирует DLL и EXE в реестре Windows (обычно библиотеки типа COM, идентификаторы классов, идентификаторы интерфейсов и т.д.). Для навигации по реестру можно использовать regedit.

0
ответ дан 1 December 2019 в 19:58
поделиться

COM , широко используемый в Windows, зависит от регистрации. Компонент будет предоставлять библиотеки типов, интерфейсы и классы. Каждый из них определяется идентификатором GUID для уникального имени. Компоненты COM также могут определять идентификаторы ProgID, которые являются своего рода ярлыками для громоздких идентификаторов GUID.

Вся эта информация хранится в специальном улье реестра на компьютере с именем HKEY_CLASSES_ROOT . Используйте RegEdit.exe , чтобы просмотреть его. В частности, вы можете найти библиотеки типов в HKEY_CLASSES_ROOT \ TypeLib , интерфейсы в HKEY_CLASSES_ROOT \ Interface и классы в HKEY_CLASSES_ROOT \ CLSID . Некоторая информация в реестре будет содержать путь к реальной DLL с компонентом, позволяющим Windows найти и загрузить компонент по запросу.

При установке COM-компонента необходимо создать правильную информацию в реестре.По соглашению DLL может предоставлять две экспортируемые функции:

При выполнении RegSvr32.exe MyComponent.dll исполняемый файл RegSvr32.exe попытается выполнить вызовите DllRegisterServer в MyComponent.dll . Затем предполагается, что DLL создаст все необходимые записи реестра, позволяющие использовать компонент.

Аналогичным образом можно использовать RegSvr32.exe / u MyComponent.dll для отмены регистрации компонента. Это удалит всю информацию, ранее добавленную в реестр.

Windows в значительной степени полагается на COM, и очень важно, чтобы регистрация COM была актуальной. К сожалению, нет ничего, что мешало бы вам удалить уже зарегистрированный COM-компонент. В результате в реестре останутся висячие указатели, указывающие на несуществующую библиотеку DLL. Вы даже не можете отменить регистрацию, так как она больше не существует.

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

Microsoft создала исправления для этих проблем. Гораздо лучше предоставить установщик для компонента COM, который сможет восстановить и удалить компонент, если он был удален. Вы также можете создать параллельную установку одного и того же компонента в разных версиях.

30
ответ дан 1 December 2019 в 19:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: