LockPermissions テーブル
LockPermissions テーブルは、ロックダウン環境でアプリケーションの個々の部分をセキュリティで保護するために使用されます。 これは、ファイル、レジストリ キー、作成されたフォルダーのインストールに使用できます。
Windows Server 2008 R2 または Windows 7 でのインストールを目的としたパッケージでは、LockPermissions テーブルではなく MsiLockPermissionsEx テーブルを使用する必要があります。 Windows インストーラー 5.0 より前のバージョンの Windows インストーラーでは、MsiLockPermissionsEx テーブルは無視されます。 Windows インストーラー 5.0 では、LockPermissions テーブルを含むパッケージをインストールできます。 Windows インストーラー 5.0 以降では、MsiLockPermissionsEx テーブルと LockPermissions テーブルの両方を含むパッケージのインストールが失敗し、Windows インストーラー エラー メッセージ 1941 が返されます。
LockPermissions テーブルには、次の列があります。
Column | 種類 | キー | Nullable |
---|---|---|---|
LockObject | Identifier | Y | N |
テーブル | テキスト | Y | N |
Domain | 書式設定済み | Y | Y |
User | 書式設定済み | Y | N |
アクセス許可 | DoubleInteger | N | Y |
[列]
-
LockObject
-
この列とテーブル列を合わせて、セキュリティで保護するファイル、ディレクトリ、またはレジストリ キーを指定します。 LockObject 列は、テーブル列で指定されたテーブルの主キーを指す外部キーです。
-
Table
-
この列と LockObject 列は、セキュリティで保護するファイル、ディレクトリ、またはレジストリ キーを指定します。 テーブル列に「File」、「Registry」、「CreateFolder」と入力して、ファイル テーブル、レジストリ テーブル、または CreateFolder テーブルに一覧表示されている LockObject を指定してください。
-
Domain
-
アクセス許可を設定するユーザーのドメインを識別する列です。 これは、スタンドアロン マシンまたはドメイン名の名前です。 列データ型は書式設定済みで、このフィールドの文字列 [%USERDOMAIN] を使用して、現在のドメインの USERDOMAIN 環境変数の値を取得できます。 他のドメインを取得するには、カスタム アクションを使用する必要があります。 詳細については、「カスタム アクション テーブル」をご覧ください。
-
User
-
アクセス許可を設定するユーザーのローカライズされた名前を識別する列です。 この名前は、マシンまたはドメインに存在する必要があります。 マシンまたはドメイン コントローラーがドメインとユーザーの組み合わせを認識しない場合、またはユーザーのセキュリティ識別子 (SID) を取得できない場合、インストールは失敗します。 1 つの LockObject に対して複数のユーザーを指定できます。
共通ユーザー名 "Everyone" と "Administrators" は英語で入力でき、既知の SID にマップされます。 LocalSystem は、LockPermissions テーブルを介して作成されたすべてのセキュリティ記述子に対する完全な制御が与えられます。 このフィールドの ComputerName プロパティ、LogonUser プロパティ、または USERNAME プロパティを使用して、現在のユーザーを取得できます。 他のユーザーまたはグループのローカライズされた名前を入力するには、カスタム アクションが必要です。
同じ LockObject エントリと Table エントリ (ただし、異なるユーザー エントリ) を持つ複数のレコードを使用して、複数のユーザーのアクセス制御リストを指定できます。
-
Permission
-
システム特権の整数の説明を識別する列です。 最も一般的に使用される値を次に示します (完全なリストは Winnt.h にあります)。
特権 説明 GENERIC_ALL
0X10000000
268435456読み取り、書き込み、実行アクセス GENERIC_EXECUTE
0X20000000
536870912実行アクセス権 GENERIC_WRITE
0X40000000
1073741824書き込みアクセス Permission 列に GENERIC_READ を指定することはできません。 これを試みると失敗します。 代わりに、KEY_READ や FILE_GENERIC_READ などの値を指定する必要があります。
この列に入力された Null は、将来使用するために予約されています。
解説
"シーケンス テーブル" の InstallFiles、WriteRegistryValues、CreateFolders アクションは、このテーブルの情報を処理します。 "シーケンス テーブル" の使用方法については、「シーケンス テーブルの使用」のページをご覧ください。
アクセス許可は、コンピューターまたはドメインに既に存在するユーザーの LockPermissions テーブルでのみ設定できます。 不明なユーザーのアクセス許可を設定しようとすると、ユーザー アカウントがインストール中に遅延カスタム アクションによって作成された場合でも、インストールが失敗します。
システム管理者のローカル グループは、すべてのアクセス制御リスト (ACL) に含めることをお勧めします。 これにより、システム管理者がオブジェクトにアクセスして保守できるようになります。
LockPermissions テーブルに一覧表示されているすべてのファイル、レジストリ キー、またはディレクトリは、既存のオブジェクトを置き換えるかどうかにかかわらず、明示的なセキュリティ記述子を受け取ります。 Windows インストーラーは、システム上に既に存在するオブジェクトのセキュリティを維持しようとします。 オブジェクトが LockPermissions テーブルに一覧表示されておらず、既存のオブジェクトを置き換えると、置き換えられたものは、置き換えるオブジェクトのセキュリティ設定を取得します。
オブジェクトが LockPermissions テーブルに一覧表示されておらず、既存のオブジェクトを置き換えない場合、明示的なセキュリティ記述子は受け取りません。 新しいオブジェクトへのアクセスは、その親またはコンテナー オブジェクトの属性に基づきます。 オブジェクトがテーブルに一覧表示されておらず、オブジェクトを明示的なセキュリティ記述子なしで置き換える場合、新しいオブジェクトへのアクセスは、その親またはコンテナー オブジェクトの属性に基づきます。
Windows インストーラーにより、UserSID プロパティが、セキュリティ識別子 (SID) またはインストールしているユーザーに設定されます。
検証
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示