如何使用WiX将交互式用户添加到本地化Windows中的目录?
-
05-07-2019 - |
题
如何添加瑞典交互式用户
NT INSTANS\INTERAKTIV
或英语互动用户
NT AUTHORITY\INTERACTIVE
或对程序文件夹的ACL具有写入权限的任何其他本地化用户组?
这个问题实际上是“如何使用 secureObject ”?我无法使用 LockPermissions表,因为我删除了未删除的继承。 secureObject 权限似乎需要 CreateDirectory 而不是目录 ......
解决方案
使用最新版本的Wix,您可以通过属性检索常用内置用户名和组名的本地化名称。例如, WIX_ACCOUNT_NETWORKSERVICE
包含网络服务帐户的本地化名称。不幸的是,从3.0.4513开始, NT 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对象的开箱即用支持。
以下是 Microsoft知识库的Q243330 。
不隶属于 StackOverflow