如何使用WiX将交互式用户添加到本地化Windows中的目录?

时间:2008-10-04 11:05:34

标签: wix windows-installer

如何添加瑞典交互式用户

NT INSTANS\INTERAKTIV  

或英语互动用户

NT AUTHORITY\INTERACTIVE  

或对程序文件夹的ACL具有写入权限的任何其他本地化用户组?

这个问题实际上是“如何使用 secureObject ”?我无法使用 LockPermissions表,因为我删除了未删除的继承。 secureObject 权限似乎需要 CreateDirectory 而不是目录 ......

2 个答案:

答案 0 :(得分:6)

使用最新版本的Wix,您可以通过属性检索常用内置用户名和组名的本地化名称。例如,WIX_ACCOUNT_NETWORKSERVICE包含网络服务帐户的本地化名称。不幸的是,从3.0.4513开始NT AUTHORITY\INTERACTIVE不在其中。

存在一个示例MSI自定义操作,该操作为许多内置用户名和组名创建属性。 Get it here。将CA添加到Wix安装程序并在安装执行序列的早期安排它。

获得本地化帐户名后,添加PermissionEx元素以修改目录的ACL。例如:

<Directory ...>
   <Component ...>
      <CreateFolder>
         <PermissionEx User="[SID_INTERACTIVE]" .../>
      </CreateFolder>
   </Component ...>
</Directory ...>

答案 1 :(得分:4)

无法将这两个帐户名添加到ACL中,因为它们是同一个。您看到的名称对应于SID,并且该英语和瑞典语本地化中的SID相同。对于INTERACTIVE小组,该SID为S-1-5-4

我很长一段时间没有关注过WiX,但我希望有一种方法可以为ACL而不是帐户名指定SID。除非绝对无法避免,否则您永远不应该依赖知名帐户的帐户名称。这是一个list of well-known SIDs供参考。

编辑:This post似乎使用自定义操作将SID转换为帐户名称来解决您的问题 - 显然,WiX并不是使用SID进行Permission或PermissionEx对象的开箱即用支持。

以下是Microsoft知识库Q243330中众所周知的SID的权威列表。