LockPermissions 表

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

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

LockPermissions 表具有以下列。

类型 密钥 Nullable
LockObject 标识符 Y N
Text Y N
格式 化 Y Y
User 格式 化 Y N
权限 DoubleInteger N Y

 

LockObject

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

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

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

用户

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

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

可以使用具有相同 LockObject 和表条目的多个记录 (但不同的用户条目) 为多个用户指定访问控制列表。

许可

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

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

 

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

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

备注

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

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

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

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

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

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

验证

ICE03
ICE06
ICE46
ICE55