【发布时间】:2012-10-06 21:52:00
【问题描述】:
我使用嵌入了自定义托管 (C#) 操作的 WiX 3.6 构建了一个 Windows Installer 包。
在这个阶段,安装需要
- 使用特定的本地管理员帐户(在本例中为 SharePoint 安装程序帐户,即本地管理员)运行安装程序
- 用户帐户控制被禁用
我确实无法绕过要求 #1,因为托管操作只有在 SharePoint 安装程序帐户的上下文中运行时才能执行某些步骤。
我想删除要求 #2 并让安装程序在启用 UAC 的情况下正常运行。
我已经对这个问题进行了相当广泛的研究,但仍然无法让它发挥作用。我在我的包中设置了 InstallScope="perMachine",这似乎可以正确提示 UAC 提升,但安装程序仍然失败并出现臭名昭著的 2869 错误。
主要问题是我的自定义操作配置了 Impersonate="yes" 因为它必须在当前用户的上下文中运行,而不是本地管理员帐户。当我在线搜索时,几乎所有“修复”都指向自定义操作中的 Impersonate="no",但这不是我的选择。
因此,我的问题是:有没有办法以当前用户的身份运行自定义托管操作,而无需完全禁用 UAC?
【问题讨论】:
-
也喜欢这个问题的答案。
-
我正在尝试做同样的事情。我试图绕过它的方法是创建一个 EXE,它具有 app.manifest (stackoverflow.com/questions/3915370/…) 中所需的管理员权限。然后我将该 EXE 称为模拟用户 (stackoverflow.com/a/8828776/1203288) 的类型 2 延迟自定义操作。但是,这适用于我的机器,但我在其他机器上遇到问题:只要需要管理员在 app.manifest 中,它甚至不会在其他机器上运行。希望这能给你一个好的开始。