注册表表

注册表表包含应用程序需要在系统注册表中设置的注册表信息。

注册表表包含以下列。

类型 密钥 Nullable
注册表 Identifier Y N
Root 整数 N N
RegPath N N
名称 格式 化 N Y
格式 化 N Y
Component_ Identifier N N

 

注册 表

用于标识注册表记录的主键。

注册表值的预定义根键。 在此字段中输入值 -1,使根密钥依赖于安装类型。 在下表中输入其他值之一,强制在特定根键下写入注册表值。

常数 十六进制 小数 根密钥
(无) - 0x001 -1 如果这是每个用户的安装,则注册表值在 HKEY_CURRENT_USER下编写。 如果这是每台计算机安装,则注册表值在 HKEY_LOCAL_MACHINE下写入。 请注意,通过将 ALLUSERS 属性设置为 1 来指定每台计算机安装。
msidbRegistryRootClassesRoot 0x000 0 HKEY_CLASSES_ROOT安装程序在每用户安装上下文中写入或删除 HKCU\Software\Classes hive 中的值。
安装程序在每台计算机安装期间写入或删除 HKLM\Software\Classes hive 中的值。
msidbRegistryRootCurrentUser 0x001 1 HKEY_CURRENT_USER
msidbRegistryRootLocalMachine 为 0x002 2 HKEY_LOCAL_MACHINE
msidbRegistryRootUsers 0x003 3 HKEY_USERS

 

请注意,建议写入 HKCU hive 的注册表项引用组件,该组件在 组件表的 Attributes 列中设置了 RegistryKeyPath 位。 这可确保安装程序在同一台计算机上有多个用户时写入必要的注册表项。

关键

注册表值的可本地化密钥。

名字

此列包含注册表值名称 (可本地化) 。 如果为 Null,则输入值列中的数据将写入默认注册表项。

如果“值”列为 Null,则“名称”列中下表中显示的字符串具有特殊意义。

String 含义
+ 安装组件时,将创建密钥(如果不存在)。
- 卸载组件时,将删除密钥(如果存在)及其所有值和子项。
* 安装组件时,将创建密钥(如果不存在)。 此外,卸载组件时,将删除密钥(如果存在)及其所有值和子项。

 

请注意,如果在安装组件时删除已安装的注册表项及其值和子项,则必须使用 RemoveRegistry 表

价值

此列是可本地化的注册表值。 字段的格式。 如果值附加到以下前缀之一 (即 #%value) ,则该值将解释为表中所述。 请注意,每个前缀以数字符号 (#) 开头。 如果值以两个或更多个连续数字符号 (#) 开头,则忽略第一个 #,并将值解释并存储为字符串。

前缀 含义
#x 该值解释并存储为十六进制值 (REG_BINARY) 。
#% 该值解释并存储为可扩展字符串 (REG_EXPAND_SZ) 。
# 该值解释并存储为整数 (REG_DWORD) 。

 

  • 如果值包含序列平铺 [~],则将该值解释为字符串 (REG_MULTI_SZ) 以 Null 分隔的列表。 例如,若要指定包含三个字符串的列表 a、b 和 c,请使用“a[~]b[~]c”。
  • 值内的序列 [~] 分隔单个字符串,并将其解释并存储为 Null 字符。
  • 如果字符串列表前面有 [~],则字符串将追加到任何现有注册表值字符串。 如果注册表值中已发生追加字符串,则会删除字符串的原始匹配项。
  • 如果 [~] 紧跟字符串列表的末尾,则字符串将追加到任何现有的注册表值字符串。 如果注册表值中已出现追加字符串,则会删除字符串的原始匹配项。
  • 如果 [~] 位于开头和末尾,或者字符串列表的开头和末尾都不是,则字符串将替换任何现有的注册表值字符串。
  • 否则,该值将被解释并存储为字符串 (REG_SZ) 。

Component_

组件 的第一列的外部键引用控制注册表值的安装组件。

注解

序列表中WriteRegistryValues 和 RemoveRegistryValues 操作处理此表中的信息。 有关使用 序列表的信息,请参阅 使用序列表

当选择相应的组件在本地安装或从源运行时,注册表信息将写入系统注册表。

请注意,安装程序在删除密钥下的最后一个值或子项后删除注册表项。 若要防止卸载时删除空注册表项,请在需要保留的密钥下编写虚拟值,并在“名称”列中输入 +。 如果 * 位于 Name 列中,则在删除组件时,会删除该键及其所有值和子项。

自定义操作可用于在安装、卸载或修复事务期间将行添加到注册表表。 这些行不会保留在注册表表中,并且信息仅在当前事务期间可用。 因此,必须在每个安装、卸载或修复事务中运行自定义操作,该事务需要这些附加行中的信息。 自定义操作必须位于操作序列中的 RemoveRegistryValuesWriteRegistryValues 操作之前。

有关如何保护注册表项的信息,请参阅 MsiLockPermissionsEx 表LockPermissions 表

验证

ICE02
ICE03
ICE06
ICE32
ICE38
ICE43
ICE46
ICE49
ICE53
ICE55
ICE57
ICE70
ICE80