保护资源

Windows Installer 中用于设置服务、文件、创建的文件夹和注册表项访问权限的功能有助于提高安装应用程序的安全性。 使用 MsiLockPermissionsExLockPermissions 表保护资源是建议的有关创作安全安装的准则之一。 MsiLockPermissionsEx 表使包作者无需编写自定义操作即可保护资源。

从针对 Windows Installer 5.0 开发的包开始,应使用 MsiLockPermissionsEx 表来取代 LockPermissions 表。 MsiLockPermissionsEx 表提供的扩展功能使包能够保护 Windows 服务、文件、文件夹和注册表项。 包不应同时包含 MsiLockPermissionsEx 和 LockPermissions 表。

Windows Installer 4.5 及更低版本会忽略 MsiLockPermissionsEx 表。 从 Windows Installer 5.0 开始,如果软件包同时包含 LockPermissions 表和 MsiLockPermissionsEx 表,则安装将会失败并显示错误消息 1941。 仍可使用 Windows Installer 5.0 来安装仅包含 LockPermissions 表的现有安装包。

在运行 InstallFilesInstallServicesWriteRegistryValuesCreateFolders 标准操作时,Windows Installer 5.0 将处理 MsiLockPermissionsEx 表中的信息。 必须安装或重新安装安全对象才能确保其安全,并且在不重新安装现有对象的情况下,无法将访问控制列表 (ACL) 追加到该对象。

若要指定要保护的服务、文件、目录或注册表项,请在 MsiLockPermissionsEx 表的 LockObject 和 Table 字段中输入标识信息。 对象由它在 ServiceInstall 表File 表Registry 表CreateFolder 表中的主键标识。

若要请求将指定的权限应用于某个对象,请使用有效的安全描述符定义语言 (SDDL) 在 MsiLockPermissionsEx 表的 SDDLText 字段中输入有效的安全描述符字符串。 MsiLockPermissionsEx 表可以指定拒绝权限的安全描述符、指定从父资源继承权限或指定新帐户的权限。 有关可授予、拒绝或继承的所有权限的列表,请参阅 ACE 字符串。 Windows Installer 5.0 扩展了可用安全标识符 (SID) 集。有关有效 SID 的列表,请参阅 SID 字符串

注意

如果你要配置父资源的安全描述符以指定其权限将由子对象继承,则安装程序必须在创建子对象之前将权限应用于父资源。 如果安装程序在将可继承权限应用于父资源之前创建了子对象,则父资源的权限将不会传播到子对象。

从 Windows Installer 5.0 开始,FormattedSDDLText 数据类型扩展了 Formatted 数据类型。 Windows Installer 将验证在 MsiLockPermissionsEx 表的 SDDLText 列中输入的 FormattedSDDLText 字符串是否符合安全描述符字符串格式

Windows Installer 4.5 或更低版本:不支持。 MsiLockPermissionsEx 表和 FormattedSDDLText 数据类型从 Windows Installer 5.0 开始提供。