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 |
Domain | 带格式 | 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 供将来使用。
注解
序列表中的 InstallFiles、WriteRegistryValues 和 CreateFolders 操作可处理此表中的信息。 有关使用序列表的信息,请参阅使用序列表。
只能在 LockPermissions 表中为计算机或域上已存在的用户设置权限。 尝试为未知用户设置权限会导致安装失败,即使该用户帐户在安装过程中由延迟的自定义操作创建也是如此。
建议在所有访问控制列表 (ACL) 中包括系统管理员的本地组。 这确保系统管理员可以访问和维护对象。
LockPermissions 表中列出的每个文件、注册表项或目录都会收到显式安全描述符,无论它是否替换现有对象。 Windows Installer 会尝试保护系统上已存在的对象,确保其安全。 如果未在 LockPermissions 表中列出对象并替换现有对象,替换项将获取它替换的对象的安全设置。
如果某对象未在 LockPermissions 表中列出,并且不会替换现有对象,则不会收到显式安全描述符。 对新对象的访问权限基于其父对象或容器对象的属性。 如果表中未列出对象,并且替换对象没有显式安全描述符,则对新对象的访问权限基于其父对象或容器对象的属性。
Windows Installer 将 UserSID 属性设置为安全标识符 (SID) 或运行安装的用户。
验证