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 テーブルの最初の列への外部キー。
解説
"シーケンス テーブル" の WriteRegistryValues と RemoveRegistryValues アクションは、このテーブルの情報を処理します。 "シーケンス テーブル" の使用方法については、「シーケンス テーブルの使用」のページをご覧ください。
対応するコンポーネントがローカルにインストールされるかソースから実行されるように選択されている場合、レジストリ情報はシステム レジストリに書き出されます。
レジストリ キー以下の最後の値またはサブキーが削除されると、インストーラーによってそのキーは削除されることに注意してください。 アンインストール時に空のレジストリ キーが削除されないようにするには、残す必要があるキー以下にダミーの値を記述し、Name 列に「+」を入力します。 * が Name 列にある場合、コンポーネントが削除されるときに、すべての値とサブキーを含み、キーが削除されます。
カスタム アクションを使用すると、インストール、アンインストール、または修復トランザクション中に Registry テーブルに行を追加できます。 これらの行は Registry テーブルに保持されず、情報は現在のトランザクション中にのみ使用できます。 したがって、このカスタム アクションは、これらの追加行の情報を必要とするすべてのインストール、アンインストール、または修復トランザクションで実行する必要があります。 このカスタム アクションは、アクション シーケンス内の RemoveRegistryValues および WriteRegistryValues アクションの前に存在する必要があります。
レジストリ キーをセキュリティで保護する方法については、「MsiLockPermissionsEx テーブル」および「LockPermissions テーブル」を参照してください。
検証