Registry テーブル

Registry テーブルには、アプリケーションによるシステム レジストリへの設定が必要なレジストリ情報が保持されます。

Registry テーブルには次の列があります。

Column 種類 キー Nullable
レジストリ Identifier Y N
Root 整数 N N
キー RegPath N N
名前 Formatted N Y
Formatted N Y
Component_ Identifier N N

 

[列]

Registry

レジストリ レコードを識別するために使用される主キー。

Root

レジストリ値の定義済みのルート キー。 このフィールドに -1 の値を入力すると、ルート キーはインストールの種類に依存します。 次の表にある他の値のいずれかを入力すると、レジストリ値は特定のルート キーの下に強制的に書き込まれます。

一定 16 進数 Decimal (10 進数型) ルート キー
(なし) - 0x001 -1 これがユーザーごとのインストールの場合、レジストリ値は HKEY_CURRENT_USER の下に書き込まれます。 これがマシンごとのインストールの場合、レジストリ値は HKEY_LOCAL_MACHINE の下に書き込まれます。 マシンごとのインストールは、ALLUSERS プロパティを 1 に設定することで指定されることに注意してください。
msidbRegistryRootClassesRoot 0x000 0 HKEY_CLASSES_ROOTユーザーごとのインストール コンテキストでのインストール中に、インストーラーによって HKCU\Software\Classes ハイブの値が書き込まれるか削除されます。
インストーラーによって、マシンごとのインストール中に HKLM\Software\Classes ハイブの値が書き込まれるか削除されます。
msidbRegistryRootCurrentUser 0x001 1 HKEY_CURRENT_USER
msidbRegistryRootLocalMachine 0x002 2 HKEY_LOCAL_MACHINE
msidbRegistryRootUsers 0x003 3 HKEY_USERS

 

HKCU ハイブに書き込まれるレジストリ エントリでは、Component テーブルの Attributes 列に RegistryKeyPath ビットが設定されているコンポーネントを参照することをお勧めします。 これにより、同じコンピューターに複数のユーザーがいる場合に、必要なレジストリ エントリがインストーラーによって確実に書き込まれます。

Key

レジストリ値のローカライズ可能なキー。

Name

この列には、レジストリ値の名前 (ローカライズ可能) が含まれます。 これが Null の場合、Value 列に入力されたデータは既定のレジストリ キーに書き込まれます。

Value 列が Null の場合、Name 列の次の表に示す文字列は特別な意味を持ちます。

String 説明
+ キーが存在しない場合は、コンポーネントのインストール時に作成されます。
- キーが存在する場合は、コンポーネントのアンインストール時に、すべての値とサブキーを含み削除されます。
* キーが存在しない場合は、コンポーネントのインストール時に作成されます。 さらに、キーが存在する場合は、コンポーネントのアンインストール時に、すべての値とサブキーを含み削除されます。

 

インストールされているレジストリ キーが、コンポーネントのインストール時に、その値とサブキーで削除される場合、RemoveRegistry テーブルが使用される必要があることに注意してください。

Value

この列は、ローカライズ可能なレジストリ値です。 フィールドは Formatted です。 値が次のいずれかのプレフィックス (#%value など) にアタッチされている場合、値は表の説明に従って解釈されます。 各プレフィックスは番号記号 (#) で始まります。 値が 2 つ以上の連続する番号記号 (#) で始まる場合、最初の # は無視され、値は解釈されて文字列として保存されます。

Prefix 説明
#x 値は解釈され、16 進数の値 (REG_BINARY) として保存されます。
#% 値は解釈され、展開可能な文字列 (REG_EXPAND_SZ) として保存されます。
# 値は解釈され、整数 (REG_DWORD) として保存されます。

 

  • 値にシーケンス チルダ [~] が含まれている場合、値は Null で区切られた文字列のリスト (REG_MULTI_SZ) として解釈されます。 たとえば、a、b、c の 3 つの文字列を含むリストを指定するために、"a[~]b[~]c" を使用するとします。
  • 値のシーケンス [~] は個々の文字列を区切り、Null 文字として解釈されて保存されます。
  • 文字列リストの前に [~] がある場合、文字列は既存のレジストリ値の文字列に追加されます。 追加する文字列がレジストリ値に既に存在する場合は、文字列の元の出現が削除されます。
  • 文字列リストの最後に [~] がある場合、文字列は既存のレジストリ値の文字列の先頭に追加されます。 先頭に追加する文字列がレジストリ値に既に存在する場合は、文字列の元の出現が削除されます。
  • [~] が文字列リストの先頭と末尾の両方にある場合、または両方に存在しない場合、文字列は既存のレジストリ値の文字列に置き換えられます。
  • それ以外の場合は、値は解釈され、文字列 (REG_SZ) として保存されます。

Component_

レジストリ値のインストールを制御するコンポーネントを参照する Component テーブルの最初の列への外部キー。

解説

"シーケンス テーブル" の WriteRegistryValuesRemoveRegistryValues アクションは、このテーブルの情報を処理します。 "シーケンス テーブル" の使用方法については、「シーケンス テーブルの使用」のページをご覧ください。

対応するコンポーネントがローカルにインストールされるかソースから実行されるように選択されている場合、レジストリ情報はシステム レジストリに書き出されます。

レジストリ キー以下の最後の値またはサブキーが削除されると、インストーラーによってそのキーは削除されることに注意してください。 アンインストール時に空のレジストリ キーが削除されないようにするには、残す必要があるキー以下にダミーの値を記述し、Name 列に「+」を入力します。 * が Name 列にある場合、コンポーネントが削除されるときに、すべての値とサブキーを含み、キーが削除されます。

カスタム アクションを使用すると、インストール、アンインストール、または修復トランザクション中に Registry テーブルに行を追加できます。 これらの行は Registry テーブルに保持されず、情報は現在のトランザクション中にのみ使用できます。 したがって、このカスタム アクションは、これらの追加行の情報を必要とするすべてのインストール、アンインストール、または修復トランザクションで実行する必要があります。 このカスタム アクションは、アクション シーケンス内の RemoveRegistryValues および WriteRegistryValues アクションの前に存在する必要があります。

レジストリ キーをセキュリティで保護する方法については、「MsiLockPermissionsEx テーブル」および「LockPermissions テーブル」を参照してください。

検証

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