登錄表
登錄資料表會保存應用程式在系統登錄中必須設定的登錄資訊。
登錄資料表具有下列資料行。
資料行 | 類型 | 答案 | Nullable |
---|---|---|---|
登錄 | 識別碼 | Y | N |
Root | 整數 | N | N |
答案 | RegPath | N | N |
名稱 | 格式 化 | N | Y |
值 | 格式 化 | N | Y |
元件_ | 識別碼 | N | N |
資料行
-
註冊 表
-
用來識別登錄記錄的主鍵。
-
根
-
登錄值的預先定義根機碼。 在此欄位中輸入 -1 的值,使根金鑰相依于安裝類型。 在下表中輸入其中一個其他值,強制在特定根機碼下寫入登錄值。
常數 十六進位 Decimal 根索引鍵 (無) - 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 的登錄專案參考在 Component 資料表的 Attributes 資料行中設定 RegistryKeyPath 位的元件。 這可確保當同一部電腦上有多個使用者時,安裝程式會寫入必要的登錄專案。
-
關鍵
-
登錄值的可當地語系化機碼。
-
名字
-
此資料行包含可當地語系化) (登錄值名稱。 如果這是 Null,則輸入 [值] 資料行中的資料會寫入預設登錄機碼。
如果 [值] 資料行為 Null,則 [名稱] 資料行中下表所示的字串具有特殊重要性。
String 意義 + 安裝元件時,如果不存在,則會建立金鑰。 - 卸載元件時,如果存在,則會刪除索引鍵及其所有值和子機碼。 * 安裝元件時,如果不存在,則會建立金鑰。 此外,卸載元件時,如果存在,則會刪除索引鍵及其所有值和子機碼。 請注意,如果在安裝元件時,必須刪除已安裝的登錄機碼及其值和子機碼,才能使用 RemoveRegistry 資料表 。
-
價值
-
此資料行是可當地語系化的登錄值。 欄位為 Formatted。 如果值附加至下列其中一個前置詞 (亦即 #%value) 則值會解譯為數據表中所述。 請注意,每個前置詞的開頭都是數位記號 (#) 。 如果值以兩個以上的連續數位記號 (#) 開頭,則會忽略第一個 #,並將值解譯並儲存為字串。
前置詞 意義 #x 值會解譯並儲存為十六進位值 (REG_BINARY) 。 #% 值會解譯並儲存為可展開的字串 (REG_EXPAND_SZ) 。 # 值會解譯並儲存為整數 (REG_DWORD) 。 - 如果值包含序列波浪線 [~],則會將值解譯為以 Null 分隔的字串清單 (REG_MULTI_SZ) 。 例如,若要指定包含 a、 b 和 c 三個字串的清單,請使用 「a[~]b[~]c」。
- 值內的序列 [~] 會分隔個別字串,並解譯並儲存為 Null 字元。
- 如果 [~] 在字串清單之前,字串會附加至任何現有的登錄值字串。 如果登錄值中已經發生附加字串,則會移除原始出現的字串。
- 如果 [~] 緊接在字串清單的結尾,字串會前面加上任何現有的登錄值字串。 如果登錄值中已經發生前面加上的字串,則會移除原始出現的字串。
- 如果 [~] 同時位於開頭和結尾,或不是字串清單的開頭或結尾,則字串會取代任何現有的登錄值字串。
- 否則,值會解譯並儲存為字串 (REG_SZ) 。
-
元件_
-
外部機碼會參考控制登錄值安裝之元件的 Component 資料表 的第一個資料行。
備註
Sequence資料表中的WriteRegistryValues和RemoveRegistryValues動作會處理此資料表中的資訊。 如需使用 時序表的詳細資訊,請參閱 使用時序表。
當選取要安裝在本機或從來源執行對應的元件時,會將登錄資訊寫出至系統登錄。
請注意,安裝程式會在移除機碼下的最後一個值或子機碼之後,移除登錄機碼。 若要防止卸載時移除空的登錄機碼,請在 [名稱] 資料行中,在您需要保留的機碼下寫入虛擬值,並輸入 + 。 如果 * 位於 Name 資料行中,則會在移除元件時,刪除索引鍵及其所有值和子機碼。
自訂動作可用來在安裝、卸載或修復交易期間,將資料列新增至登錄資料表。 這些資料列不會保存在登錄資料表中,而且資訊只能在目前的交易期間使用。 因此,自訂動作必須在每個安裝、卸載或修復交易中執行,而這些交易需要這些額外資料列中的資訊。 自訂動作必須出現在動作順序中的 RemoveRegistryValues 和 WriteRegistryValues 動作之前。
如需如何保護登錄機碼的資訊,請參閱 MsiLockPermissionsEx Table 和 LockPermissions 資料表。
驗證