可以运行名为 程序集注册工具(Regasm.exe) 的命令行工具,以注册或注销程序集以用于 COM。 Regasm.exe 向系统注册表添加有关该类的信息,以便 COM 客户端可以透明地使用 .NET Framework 类。 该 RegistrationServices 类提供等效的功能。
必须先在 Windows 注册表中注册托管组件,然后才能从 COM 客户端激活它。 下表显示了 Regasm.exe 通常会添加到 Windows 注册表的键。 (0000000 表示实际 GUID 值)。
| GUID | DESCRIPTION | 注册表项 |
|---|---|---|
| CLSID | 类标识符 | HKEY_CLASSES_ROOT\CLSID\{000…000} |
| IID | 接口标识符 | HKEY_CLASSES_ROOT\Interface\{000…000} |
| LIBID | 库标识符 | HKEY_CLASSES_ROOT\TypeLib\{000…000} |
| 编程标识符 | 编程标识符 | HKEY_CLASSES_ROOT\000…000 |
在 HKCR\CLSID\{0000...0000} 键中,默认值设置为类的 ProgID,并添加了两个新的命名值:“Class”和“Assembly”。 运行时从注册表中读取程序集值,并将其传递给运行时程序集解析程序。 程序集解析程序会根据程序集信息(如名称和版本号)尝试查找程序集。 若要使程序集解析程序找到程序集,程序集必须位于以下位置之一:
全局程序集缓存(必须为强名称程序集)。
在应用程序目录中。 从应用程序路径加载的程序集只能从该应用程序访问。
沿 /codebase 选项指定的文件路径到 Regasm.exe。
Regasm.exe 还会在 HKCR\CLSID\{0000…0000} 键下创建 InProcServer32 密钥。 键的默认值设置为初始化公共语言运行时 (Mscoree.dll) 的 DLL 的名称。
检查注册表项
COM 互作提供一个标准类工厂实现,用于创建任何 .NET Framework 类的实例。 客户端可以调用 DllGetClassObject 托管 DLL 来获取类工厂并创建对象,就像使用任何其他 COM 组件一样。
关于 InprocServer32 子项, 出现在传统 COM 类型库中的对 Mscoree.dll 的引用表示公共语言运行时创建托管对象。
另请参阅
- 向 COM 公开 .NET Framework 组件
- 如何:从 COM 引用 .NET 类型
- 调用 .NET 对象
- 为 COM 访问部署应用程序