wix 自定义操作,管理员组
Posted
技术标签:
【中文标题】wix 自定义操作,管理员组【英文标题】:wix custom action, administrators group 【发布时间】:2013-09-03 20:34:54 【问题描述】:我有一个使用 wix 构建的安装程序,其中包含在延迟模式下运行的自定义操作,并且需要本地计算机上的管理权限。
在本地计算机上使用管理员帐户时安装程序可以正常工作,但当我使用管理员组中的帐户时安装程序不能正常工作。当我试图将密钥分配给注册表时,我得到了关于权限不足的异常。使用 Impersonate="no" 不是一个选项,因为此操作还需要在本地计算机上具有管理员权限,并且不时访问不同的网络共享。我希望“网络共享访问”级别由用于安装应用程序的帐户(而不是管理员帐户)确定,但似乎无法找到解决方案 - 任何人都将不胜感激。
【问题讨论】:
你能告诉我们你的代码吗? InstallScope 是 perMachine 并且 CustomAction 看起来像这样<CustomAction Id='LaunchFile' ExeCommand='[SourceDir]' Return='check' Execute='deferred' FileKey='SetupHelper' ></CustomAction>
@gparyani
【参考方案1】:
听起来您没有正确处理 UAC。我的猜测是该安装适用于管理员用户,因为您的安全策略仅为该用户帐户禁用 UAC,但为管理员组的所有其他成员启用 UAC。
当自定义操作模拟启用了 UAC 的用户时,it uses the filtered (non-Administrators) security token。您的自定义操作假定它可以执行管理员组成员可以执行的操作,但由于您的安全令牌不包括管理员组,它会被拒绝访问。
您需要如何解决此问题取决于您的自定义操作正在执行的操作。您是正确的,它需要模拟以用户身份访问网络共享;或许您可以将自定义操作拆分为两个单独的操作:一个模拟和访问网络共享,另一个不执行管理员级别的任务。
如果您可以完全控制要安装它的计算机,则解决方法可能是在安装过程中禁用 UAC。然后您可以在安装完成后重新启用它。
【讨论】:
感谢您的链接 - 希望我能在一周前找到这个,我想这是通过大量的反复试验得出的 - 很高兴阅读这篇文章作为确认。我考虑过按照您的建议使用两个自定义操作,但最后我能够通过不接触注册表来解决这个问题。谢谢@斯蒂芬以上是关于wix 自定义操作,管理员组的主要内容,如果未能解决你的问题,请参考以下文章