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 は、将来使用するために予約されています。

解説

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

アクセス許可は、コンピューターまたはドメインに既に存在するユーザーの LockPermissions テーブルでのみ設定できます。 不明なユーザーのアクセス許可を設定しようとすると、ユーザー アカウントがインストール中に遅延カスタム アクションによって作成された場合でも、インストールが失敗します。

システム管理者のローカル グループは、すべてのアクセス制御リスト (ACL) に含めることをお勧めします。 これにより、システム管理者がオブジェクトにアクセスして保守できるようになります。

LockPermissions テーブルに一覧表示されているすべてのファイル、レジストリ キー、またはディレクトリは、既存のオブジェクトを置き換えるかどうかにかかわらず、明示的なセキュリティ記述子を受け取ります。 Windows インストーラーは、システム上に既に存在するオブジェクトのセキュリティを維持しようとします。 オブジェクトが LockPermissions テーブルに一覧表示されておらず、既存のオブジェクトを置き換えると、置き換えられたものは、置き換えるオブジェクトのセキュリティ設定を取得します。

オブジェクトが LockPermissions テーブルに一覧表示されておらず、既存のオブジェクトを置き換えない場合、明示的なセキュリティ記述子は受け取りません。 新しいオブジェクトへのアクセスは、その親またはコンテナー オブジェクトの属性に基づきます。 オブジェクトがテーブルに一覧表示されておらず、オブジェクトを明示的なセキュリティ記述子なしで置き換える場合、新しいオブジェクトへのアクセスは、その親またはコンテナー オブジェクトの属性に基づきます。

Windows インストーラーにより、UserSID プロパティが、セキュリティ識別子 (SID) またはインストールしているユーザーに設定されます。

検証

ICE03
ICE06
ICE46
ICE55