LockPermissions 表

LockPermissions 表用于保护锁定环境中应用程序的各个部分。 它可用于安装文件、注册表项和创建的文件夹。

在 Windows Server 2008 R2 或 Windows 7 中用于安装的程序包应使用 MsiLockPermissionsEx 表,而不是 LockPermissions 表。 早于 Windows Installer 5.0 的 Windows Installer 版本将忽略 MsiLockPermissionsEx 表。 Windows Installer 5.0 可以安装包含 LockPermissions 表的程序包。 从 Windows Installer 5.0 开始,安装包含 MsiLockPermissionsEx 表和 LockPermissions 表的程序包将失败,并返回 Windows Installer 错误消息 1941。

LockPermissions 表包含以下列。

类型 密钥 Nullable
LockObject Identifier Y N
文本 Y N
带格式 Y Y
用户 带格式 Y N
权限 DoubleInteger N Y

 

LockObject

此列和表列共同指定要保护的文件、目录或注册表项。 LockObject 列是一个外键,指向表列指定的表的主键。

此列和 LockObject 列指定要保护的文件、目录或注册表项。 在“表”列中,输入“File”、“Registry”或“CreateFolder”以指定 File 表Registry 表CreateFolder 表中列出的 LockObject。

标识要为其设置权限的用户的域的列。 这是独立计算机或域名的名称。 列数据类型为 Formatted,可以使用此字段中的字符串 [%USERDOMAIN] 获取当前域的 USERDOMAIN 环境变量的值。 若要获取任何其他域,需要使用自定义操作。 有关详细信息,请参阅“自定义操作表”。

用户

标识要为其设置权限的用户的本地化名称的列。 此名称必须位于计算机或域中。 如果计算机或域控制器无法识别域和用户组合,或者无法检索用户的安全标识符 (SID),则安装失败。 可以为单个 LockObject 指定多个用户。

常用用户名“Everyone”和“Administrators”可能以英语输入,并映射到已知的 SID。 LocalSystem 完全控制通过 LockPermissions 表创建的所有安全描述符。 可以使用此字段中的 ComputerName 属性LogonUser 属性USERNAME 属性来获取当前用户。 需要自定义操作才能输入任何其他用户或组的本地化名称。

可以将多个记录与相同的 LockObject 和表条目(但不同的用户条目)一起用于为多个用户指定访问控制列表。

权限

标识系统特权的整数说明的列。 下面提供最常用的值(Winnt.h 中有完整列表)。

特权 说明
GENERIC_ALL
0X10000000
268435456
读取、写入和执行访问
GENERIC_EXECUTE
0X20000000
536870912
执行访问权限
GENERIC_WRITE
0X40000000
1073741824
写入权限

 

不能在“权限”列中指定 GENERIC_READ。 尝试执行此操作将失败。 相反,必须指定一个值,例如 KEY_READ 或 FILE_GENERIC_READ。

保留在此列中输入的 Null 供将来使用。

注解

序列表中的 InstallFilesWriteRegistryValuesCreateFolders 操作可处理此表中的信息。 有关使用序列表的信息,请参阅使用序列表

只能在 LockPermissions 表中为计算机或域上已存在的用户设置权限。 尝试为未知用户设置权限会导致安装失败,即使该用户帐户在安装过程中由延迟的自定义操作创建也是如此。

建议在所有访问控制列表 (ACL) 中包括系统管理员的本地组。 这确保系统管理员可以访问和维护对象。

LockPermissions 表中列出的每个文件、注册表项或目录都会收到显式安全描述符,无论它是否替换现有对象。 Windows Installer 会尝试保护系统上已存在的对象,确保其安全。 如果未在 LockPermissions 表中列出对象并替换现有对象,替换项将获取它替换的对象的安全设置。

如果某对象未在 LockPermissions 表中列出,并且不会替换现有对象,则不会收到显式安全描述符。 对新对象的访问权限基于其父对象或容器对象的属性。 如果表中未列出对象,并且替换对象没有显式安全描述符,则对新对象的访问权限基于其父对象或容器对象的属性。

Windows Installer 将 UserSID 属性设置为安全标识符 (SID) 或运行安装的用户。

验证

ICE03
ICE06
ICE46
ICE55