リソースのセキュリティ保護

サービス、ファイル、作成されたフォルダー、レジストリ エントリに対するアクセス許可を設定する Windows インストーラーの機能は、インストール アプリケーションの安全性を高めるのに役立ちます。 MsiLockPermissionsEx または LockPermissions テーブルを使用してリソースをセキュリティで保護することは、推奨される「セキュリティで保護されたインストールを作成するためのガイドライン」の 1 つです。 MsiLockPermissionsEx テーブルを使用すると、パッケージ作成者は カスタム アクションを記述しなくてもリソースをセキュリティで保護できます。

Windows インストーラー 5.0 用に開発されたパッケージ以降では、MsiLockPermissionsEx テーブルが LockPermissions テーブルの使用に取って代わる必要があります。 MsiLockPermissionsEx テーブルによって提供される拡張機能を使用すると、パッケージで Windows サービス、ファイル、フォルダー、レジストリ キーをセキュリティで保護できます。 パッケージには、MsiLockPermissionsEx と LockPermissions テーブルの両方を含めないでください。

Windows インストーラー 4.5 以前では、MsiLockPermissionsEx テーブルは無視されます。 Windows インストーラー 5.0 以降では、パッケージに LockPermissions テーブルと MsiLockPermissionsEx テーブルの両方が含まれている場合、エラー メッセージ 1941 でインストールが失敗します。 LockPermissions テーブルのみを含む既存のインストール パッケージは、引き続き Windows インストーラー 5.0 を使用してインストールできます。

Windows インストーラー 5.0 は、InstallFilesInstallServicesWriteRegistryValues および CreateFolders 標準アクションを実行するときに、MsiLockPermissionsEx テーブル内の情報を処理します。 セキュリティ保護可能なオブジェクトは、セキュリティで保護するためにインストールまたは再インストールされる必要があり、そのオブジェクトを再インストールせずに既存のオブジェクトにアクセス制御リスト (ACL) を追加することはできません。

セキュリティ保護されるサービス、ファイル、ディレクトリ、またはレジストリ キーを指定するには、MsiLockPermissionsEx テーブルの LockObject と Table の各フィールドに識別情報を入力します。 オブジェクトは、ServiceInstall テーブルFile テーブルRegistry テーブル、または CreateFolder テーブル内のその主キーによって識別されます。

指定したアクセス許可がオブジェクトに適用されることを要求するには、有効なセキュリティ記述子定義言語 (SDDL) を使用して、MsiLockPermissionsEx テーブルの SDDLText フィールドに有効なセキュリティ記述子文字列を入力します。 MsiLockPermissionsEx テーブルでは、アクセス許可を拒否するセキュリティ記述子を指定したり、親リソースからアクセス許可を継承するよう指定したり、新しいアカウントのアクセス許可を指定したりできます。 付与、拒否、継承できるアクセス許可の全一覧については、「ACE 文字列」を参照してください。 Windows インストーラー 5.0 では、使用可能なセキュリティ識別子 (SID) のセットが拡張されます。有効な SID の一覧については、「SID 文字列」を参照してください。

Note

親リソースのセキュリティ記述子を構成して、そのアクセス許可が子オブジェクトによって継承されるように指定する場合、インストーラーは子オブジェクトを作成する前に親リソースにアクセス許可を適用する必要があります。 継承可能なアクセス許可を親リソースに適用する前に、インストーラーで子オブジェクトが作成された場合、親リソースのアクセス許可は子オブジェクトに反映されません。

Windows インストーラー 5.0 以降では、FormattedSDDLText データ型が Formatted データ型を拡張します。 Windows インストーラーは、MsiLockPermissionsEx テーブルの SDDLText 列に入力された FormattedSDDLText 文字列がセキュリティ記述子文字列形式に準拠していることを検証します。

Windows インストーラー 4.5 以前: サポートされていません。 MsiLockPermissionsEx テーブルと FormattedSDDLText データ型は、Windows インストーラー 5.0 以降で使用できます。