gpt4 book ai didi

directshow - regsvr32 filename.ax 的实际作用是什么?

转载 作者:行者123 更新时间:2023-12-02 11:19:50 24 4
gpt4 key购买 nike

regsvr32 filename.ax

我刚刚看到它说安装成功,但是整个故事是什么呢?

最佳答案

COM Windows 中广泛使用的依赖于注册。组件将提供类型库、接口(interface)和类。其中每一个都由 GUID 定义以唯一地命名它们。 COM 组件还可以定义 ProgID,这是笨重的 GUID 的快捷方式。

所有这些信息都存储在名为 HKEY_CLASSES_ROOT 的计算机上的特殊注册表配置单元中。使用RegEdit.exe查看它。特别是,您可以在 HKEY_CLASSES_ROOT\TypeLib 中找到类型库,在 HKEY_CLASSES_ROOT\Interface 中找到接口(interface),在 HKEY_CLASSES_ROOT\CLSID 中找到类。注册表中的一些信息将包含实际 DLL 与组件的路径,允许 Windows 在请求时定位并加载该组件。

当您安装 COM 组件时,必须创建正确的注册表信息。按照惯例,DLL 可以提供两个导出函数:

当您执行RegSvr32.exe MyComponent.dll时,RegSvr32.exe可执行文件将尝试调用MyComponent.dll中的DllRegisterServer 。然后 DLL 应该创建所有必要的注册表项以允许使用该组件。

以类似的方式,您可以使用 RegSvr32.exe/u MyComponent.dll 取消注册该组件。这将删除之前添加到注册表中的所有信息。

Windows 严重依赖 COM,因此 COM 注册保持最新非常重要。不幸的是,没有什么可以阻止您删除已经注册的 COM 组件。这将在注册表中留下指向不再存在的 DLL 的悬空指针。您甚至无法取消注册它,因为它不再存在。

另一个问题是当两个不同的应用程序需要同一组件的不同版本时。注册表只能指向两个版本之一,这可能会导致其中一个应用程序失败。

Microsoft 已针对这些问题创建了修复程序。最好为 COM 组件提供一个安装程序,该安装程序能够修复和卸载已被删除的组件。您还可以在不同版本中创建同一组件的并行安装。

关于directshow - regsvr32 filename.ax 的实际作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3474988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com