LockPermissions テーブル

LockPermissions テーブルは、ロックダウンされた環境でアプリケーションの個々の部分を保護するために使用されます。 ファイル、レジストリ キー、作成されたフォルダーのインストールに使用できます。

Windows Server 2008 R2 または Windows 7 でのインストールを目的としたパッケージでは、LockPermissions テーブルではなく、MsiLockPermissionsEx テーブル を使用する必要があります。 Windows Installer 5.0 より前のバージョンの Windows Installer では、MsiLockPermissionsEx テーブルは無視されます。 Windows Installer 5.0 は、LockPermissions テーブルを含むパッケージをインストールできます。 Windows インストーラー 5.0 以降では、MsiLockPermissionsEx テーブルと LockPermissions テーブルの両方を含むパッケージのインストールは失敗し、Windows インストーラー エラー メッセージ 1941 が返されます。

LockPermissions テーブルには次の列が含まれています。

Type キー NULL 値の使用
LockObject Identifier N
テーブル テキスト N
[ドメイン] 形式 Y
User 形式 N
権限 DoubleInteger N

 

LockObject

この列とテーブル列を組み合わせて、保護するファイル、ディレクトリ、またはレジストリ キーを指定します。 LockObject 列は、Table 列で指定されたテーブルの主キーを指す外部キーです。

テーブル

この列と LockObject 列を組み合わせて、保護するファイル、ディレクトリ、またはレジストリ キーを指定します。 [テーブル] 列に「File」、「Registry」、または「CreateFolder」と入力して、File TableRegistry Table、または CreateFolder Table にリストされている LockObject を指定します。

ドメイン

アクセス許可を設定するユーザーのドメインを識別する列。 これは、スタンドアロン コンピューターまたはドメイン名の名前です。 列データ型は Formatted であり、このフィールドの文字列 [%USERDOMAIN] を使用して、現在のドメインの USERDOMAIN 環境変数の値を取得できます。 他のドメインを取得するには、カスタム アクション を使用する必要があります。 詳細については、カスタム アクション テーブルを参照してください。

User

アクセス許可を設定するユーザーのローカライズされた名前を識別する列。 この名前は、コンピューターまたはドメインに存在する必要があります。 コンピューターまたはドメイン コントローラーがドメインとユーザーの組み合わせを認識しない場合、またはユーザーのセキュリティ識別子 (SID) を取得できない場合、インストールは失敗します。 1 つの LockObject に対して複数のユーザーを指定できます。

一般的なユーザー名「Everyone」および「Administrators」は英語で入力でき、既知の SID にマップされます。 LocalSystem には、LockPermissions テーブルを通じて作成されたすべてのセキュリティ記述子に対する完全な制御が与えられます。 このフィールドの ComputerName プロパティLogonUser プロパティまたは USERNAME プロパティを使用して、現在のユーザーを取得できます。 他のユーザーまたはグループのローカライズされた名前を入力するには、カスタム アクションが必要です。

同一の LockObject および Table エントリ (ただし、User エントリは異なる) を持つ複数のレコードを使用して、複数のユーザーのアクセス制御リストを指定できます。

アクセス許可

システム権限の整数記述を識別する列。 以下に最もよく使用される値を示します (完全なリストは Winnt.h に存在します)。

Privilege (特権) 説明
GENERIC_ALL
0X10000000
268435456
読み取り、書き込み、実行アクセス
GENERIC_EXECUTE
0X20000000
536870912
アクセスを実行
GENERIC_WRITE
0X40000000
1073741824
書き込みアクセス

 

[アクセス許可] 列に GENERIC_READ を指定することはできません。 これを行おうとすると失敗します。 代わりに、KEY_READ や FILE_GENERIC_READ などの値を指定する必要があります。

この列に入力された null は、将来使用するために予約されています。

解説

InstallFilesWriteRegistryValues、およびシーケンス テーブル内の CreateFoldersアクションは、このテーブルの情報を処理します。 シーケンス テーブルの使用については、「シーケンス テーブルの使用」を参照してください。

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

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

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

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

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

検証

ICE03
ICE06
ICE46
ICE55