regsvr32 filename.ax
Я просто вижу, что это сказало что-то установленное успешно, но какова целая история?
По сути, он вызывает вашу 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
Хотя есть и более простые версии.
regsvr32 регистрирует DLL и EXE в реестре Windows (обычно библиотеки типа COM, идентификаторы классов, идентификаторы интерфейсов и т.д.). Для навигации по реестру можно использовать regedit.
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, который сможет восстановить и удалить компонент, если он был удален. Вы также можете создать параллельную установку одного и того же компонента в разных версиях.