如何添加瑞典互动用户,
NT INSTANS\INTERAKTIV
或英语互动用户,
NT AUTHORITY\INTERACTIVE
或任何其他对程序文件夹的 ACL 具有写入权限的本地化用户组?
这个问题实际上是“我如何使用secureObject ”吗?我无法使用LockPermissions 表,因为我不知道继承已被删除。secureObject权限似乎需要CreateDirectory而不是Directory ...
如何添加瑞典互动用户,
NT INSTANS\INTERAKTIV
或英语互动用户,
NT AUTHORITY\INTERACTIVE
或任何其他对程序文件夹的 ACL 具有写入权限的本地化用户组?
这个问题实际上是“我如何使用secureObject ”吗?我无法使用LockPermissions 表,因为我不知道继承已被删除。secureObject权限似乎需要CreateDirectory而不是Directory ...
在最近发布的 Wix 中,您可以通过属性检索常用内置用户名和组名的本地化名称。例如,WIX_ACCOUNT_NETWORKSERVICE
包含网络服务帐户的本地化名称。不幸的是,截至 3.0.4513NT AUTHORITY\INTERACTIVE
不在其中。
存在为许多内置用户和组名称创建属性的示例 MSI 自定义操作。 在这里得到它。将 CA 添加到您的 Wix 安装程序并在安装执行序列的早期安排它。
获得本地化帐户名称后,添加 PermissionEx 元素以修改目录的 ACL。例如:
<Directory ...>
<Component ...>
<CreateFolder>
<PermissionEx User="[SID_INTERACTIVE]" .../>
</CreateFolder>
</Component ...>
</Directory ...>
无法将这两个帐户名称添加到 ACL,因为它们是一个且相同的。您看到的名称对应于一个 SID,并且该 SID 在英语和瑞典语本地化中是相同的。在 INTERACTIVE 组的情况下,该 SID 是S-1-5-4
。
我很久没有关注 WiX,但我希望必须有一种方法可以为 ACL 指定 SID 而不是帐户名称。除非绝对无法避免,否则您永远不应依赖知名帐户的帐户名称。以下是供参考的知名 SID 列表。
编辑:这篇文章似乎为您的问题提供了一个解决方案,使用自定义操作将 SID 转换为帐户名称 - 显然 WiX 不支持将 SID 用于 Permission 或 PermissionEx 对象。
这里是微软知识库Q243330中更权威的知名 SID 列表。