SelfReg 表

SelfReg 表包含有关需要自行注册的模块的信息。 安装程序在安装模块期间调用 DllRegisterServer 函数;在卸载模块期间调用 DllUnregisterServer。 安装程序不会自行注册 EXE 文件。

SelfReg 表包含以下列。

类型 密钥 Nullable
File_ Identifier Y N
成本 整数 N Y

 

File_

File 表第一列中的外部键,指示需要注册的模块。

Cost

注册模块所产生的成本,以字节为单位。 必须是非负数。

备注

强烈建议安装包作者不要使用自行注册。 他们应该通过创作安装程序为此目的提供的一个或多个表来注册模块。 有关详细信息,请参阅注册表表组。 由于自行注册例程往往会隐藏关键的配置信息,自行注册会导致丧失集中安装程序服务的许多优势。 避免自行注册的原因包括:

  • 无法使用 DllUnregisterServer 安全回滚包含自行注册模块的安装,因为无法判断自行注册的项是否已被其他功能或应用程序使用。
  • 如果在自行注册例程中执行类或扩展服务器注册,则使用播发的能力会下降。
  • 安装程序会自动处理每用户或每计算机安装的注册表表中的 HKCR 项。 DllRegisterServer 例程目前不支持每用户 HKCR 项的概念。
  • 如果多个用户在同一台计算机上使用某个自行注册的应用程序,则每个用户都必须在首次运行该应用程序时安装它。 否则安装程序无法轻松确定是否存在正确的 HKCU 注册表项。
  • 如果组件指定为从源运行并且已在 SelfReg 表中列出,则可能会拒绝 DllRegisterServer 访问类型库等网络资源。 这可能导致组件安装在进行管理安装期间失败。
  • 自行注册 DLL 更容易出现编码错误,因为 DllRegisterServer 所需的新代码对于每个 DLL 通常是不同的。 请改用数据库中的注册表表来利用安装程序提供的现有代码。
  • 自行注册 DLL 有时会链接到不存在或版本错误的辅助 DLL。 相比之下,安装程序可以使用注册表表注册 DLL,而不依赖于系统的当前状态。

注意

无法使用 SelfRegModulesSelfUnRegModules 操作指定安装程序注册或取消注册自行注册 DLL 的顺序。 请参阅指定自行注册的顺序

 

验证

ICE03
ICE06
ICE32