Wix:如何检索共享文件夹的本地Windows组用户

问题描述

这篇文章是我不久前创建的this thread的后续内容
基本上,我要使用WiX设置一个共享文件夹,并且我想提出一种干净有效的方法(有关最佳做法,请参见上面的链接)。

我当前的设置如下:

<Directory Id="MYSHAREDFOLDER" Name="FolderName">
    <Component Id="MyShareComponent" Feature="MyShareFeature" Guid="MyGuid">
        <util:User Id="Everyone" Name="Everyone" />
        <util:FileShare Id="MyFileShare" Name="MyFolderName">
            <util:FileSharePermission User="Everyone" GenericAll="yes"/>
        </util:FileShare>
        <CreateFolder>
            <util:PermissionEx User="Everyone" GenericAll="yes" />
        </CreateFolder>
    </Component>
</Directory>

最终,我遇到了一个本地化的老问题:非英语Windows上不存在“每个人”用户组,它已经本地化并转换为OS文化。
我不是要本地化我的msi,我只是想检索其他地区的“ Everyone”用户组。

现在我已经看到了很多可以帮助我解决这个问题的帖子,但是其中大多数确实已经过时了,并且涉及最佳实践(同样,您可以在我之前的主题中查看SteinÅsmul的回答),我找不到任何不涉及在.wxs文件中直接使用custom actionsscripts defining the user value解决方案。

我正在尝试避免执行自定义操作,但是目前大多数其他解决方案对我来说似乎还是晦涩难懂或难以维护。
我想知道,从今天开始,是否有更好的方法可以将本地化的“每个人”用户组传递给util:User标记
如果没有,那我应该寻求什么解决方案?

编辑
关于斯坦的评论
对我来说不幸的是,无论操作系统是否本地化,“每个人”在运行时都不会翻译。我的意思是“每个人”当然都可以在英语版本的Windows上使用,但是我的主要目标是国外版本,在该版本中不会翻译。

我最初也忘记提及我考虑使用内置的WixQueryOsWellKNownSID,因为我看到Rob Mensching也提出了建议,但是我遇到了以下错误,但未能解决用户管理员的行为相同):
Failed to create user. (-2147022694 BUILTIN\Users)

我见过this post之后here,但没有更好的选择。
我还检查了this link评论,他们解释说您不应该使用合并模块,但我没有。一切都在.wxs文件中。

至于SDDL字符串,我已经阅读了整个内容,但据我了解,您需要事先知道文件夹的确切位置才能生成正确的SDDL?我不能依赖此解决方案,因为文件夹位置是在运行时确定的。除非我当然错了。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)