レジストリ テーブル
レジストリ テーブルには、アプリケーションがシステム レジストリで設定する必要があるレジストリ情報が格納されます。
レジストリ テーブルには、次の列があります。
コラム | 種類 | 鍵 | 許容 |
---|---|---|---|
記帳 | 識別子の | Y | N |
根 | 整数 の | N | N |
鍵 | RegPath を する | N | N |
名前 | 書式設定された | N | Y |
価値 | 書式設定された | N | Y |
コンポーネント_ | 識別子の | N | N |
列
-
レジストリ
-
レジストリ レコードを識別するために使用される主キー。
-
ルート
-
レジストリ値の定義済みのルート キー。 ルート キーをインストールの種類に依存させるために、このフィールドに -1 の値を入力します。 次の表に他の値のいずれかを入力して、レジストリ値を特定のルート キーの下に強制的に書き込みます。
定数 16 進 数 小数 ルート キー (なし) - 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 に書き込まれたレジストリ エントリは、コンポーネント テーブルの [属性] 列に RegistryKeyPath ビットが設定されているコンポーネント参照することをお勧めします。 これにより、同じコンピューターに複数のユーザーがいる場合に、インストーラーによって必要なレジストリ エントリが書き込まれます。
-
キー
-
レジストリ値のローカライズ可能なキー。
-
名
-
この列には、レジストリ値の名前 (ローカライズ可能) が含まれています。 これが Null の場合、[値] 列に入力されたデータが既定のレジストリ キーに書き込まれます。
[値] 列が Null の場合、[名前] 列の次の表に示す文字列は特別な意味を持ちます。
糸 意味 + キーは、コンポーネントのインストール時に作成されます (存在しない場合)。 - コンポーネントがアンインストールされるときに、キーが存在する場合は、その値とサブキーをすべて削除します。 * キーは、コンポーネントのインストール時に作成されます (存在しない場合)。 さらに、コンポーネントがアンインストールされるときに、キーが存在する場合は、その値とサブキーをすべて削除します。 コンポーネントのインストール時に、RemoveRegistry テーブル、インストールされているレジストリ キーとその値とサブキーを削除する場合に使用する必要があることに注意してください。
-
値
-
この列はローカライズ可能なレジストリ値です。 フィールドは 書式設定されたです。 値が次のいずれかのプレフィックス (つまり、#%値) に関連付けられている場合、値は表の説明に従って解釈されます。 各プレフィックスは数字記号 (#)で始まる点に注意してください。 値が 2 つ以上の連続する数値記号 (#)で始まる場合、最初の # は無視され、値は解釈され、文字列として格納されます。
接頭辞 意味 #x 値は解釈され、16 進値 (REG_BINARY) として格納されます。 #% 値は、展開可能な文字列 (REG_EXPAND_SZ) として解釈され、格納されます。 # 値は整数 (REG_DWORD) として解釈され、格納されます。 - 値にシーケンス チルダ [~] が含まれている場合、値は null で区切られた文字列のリスト (REG_MULTI_SZ) として解釈されます。 たとえば、a、b、c の 3 つの文字列を含むリストを指定するには、"a[~]b[~]c" を使用します。
- 値内のシーケンス [~] は個々の文字列を区切り、Null 文字として解釈されて格納されます。
- 文字列リストの前に [~] がある場合、文字列は既存のレジストリ値文字列に追加されます。 レジストリ値に追加文字列が既に存在する場合は、文字列の元の出現箇所が削除されます。
- [~] が文字列リストの末尾に続く場合、文字列は既存のレジストリ値文字列の先頭に付加されます。 レジストリ値にプリペンド文字列が既に存在する場合は、文字列の元の出現箇所が削除されます。
- [~] が先頭と末尾の両方にある場合、または文字列リストの先頭と末尾の両方に存在する場合、文字列は既存のレジストリ値文字列を置き換えます。
- それ以外の場合、値は解釈され、文字列 (REG_SZ) として格納されます。
-
Component_
-
レジストリ値のインストールを制御するコンポーネントを参照 、 コンポーネント テーブルの最初の列の外部キー。
備考
WriteRegistryValues および removeRegistryValues 、このテーブル内の情報を処理シーケンス テーブルのアクションを します。 シーケンス テーブル 使用の詳細については、「シーケンス テーブル の使用を参照してください。
レジストリ情報は、対応するコンポーネントがローカルにインストールされるか、ソースから実行されるように選択されると、システム レジストリに書き出されます。
インストーラーは、キーの最後の値またはサブキーを削除した後、レジストリ キーを削除することに注意してください。 アンインストール時に空のレジストリ キーが削除されないようにするには、保持する必要があるキーの下にダミー値を書き込み、[名前] 列に「+」と入力します。 * が [名前] 列にある場合、コンポーネントが削除されると、すべての値とサブキーを含むキーが削除されます。
カスタム アクションを使用して、インストール、アンインストール、または修復トランザクション中にレジストリ テーブルに行を追加できます。 これらの行はレジストリ テーブルに保持されず、情報は現在のトランザクション中にのみ使用できます。 そのため、これらの追加行の情報を必要とするすべてのインストール、アンインストール、または修復トランザクションでカスタム アクションを実行する必要があります。 カスタム アクションは、RemoveRegistryValues および WriteRegistryValues アクションの前に実行する必要があります。
レジストリ キーをセキュリティで保護する方法については、「MsiLockPermissionsEx Table と LockPermissions Table を参照してください。
検証