使用管理员权限

时间:2016-03-01 01:26:26

标签: wix custom-action

我正在通过Wix中的CustomAction运行.exe文件。可执行文件正在运行,但没有管理员权限。似乎我正在做一切正确但不确定出了什么问题。以下是我的自定义操作的示例

<CustomAction Id="RunExe" FileKey="Setup" ExeCommand="-switch" Execute="deferred" Return="check" Impersonate="no"/>

<InstallExecuteSequence>
<Custom Action="RunExe" Before="InstallFinalize">NOT Installed</Custom>  
</InstallExecuteSequence>

实际问题是,通过ExeCommand执行的.exe无法访问注册表项(HKCU \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell文件夹)。

以管理员身份运行msi可以解决问题,但我需要一个解决方案,其中WIX本身能够以管理员身份运行命令,或者至少向用户发出提示。

1 个答案:

答案 0 :(得分:0)

每台计算机安装中的延迟自定义操作会随系统帐户一起提升。通过访问HKCU密钥并不清楚您的意思,但使用系统帐户运行的可执行文件的HKCU密钥是系统帐户的HKCU,而不是安装用户的HKCU。如果你确切地说出你想要实现的目标会有所帮助,因为你可能根本不需要代码。如果您使用WiX / MSI的注册表功能,安装将为安装用户更新HKCU,因此这可能是根本不需要代码的情况。

还不清楚为什么以管理员身份运行MSI可以解决问题,因为在安装了InstallPrivileges的每台机器安装中,自定义操作已经被提升。您的帖子中没有足够的信息作为您的安装上下文,但我的猜测是您可能在没有提升InstallPrivileges的情况下进行每用户安装 - 这是MSI将在安装用户下运行CA的一种情况&#39 ; s帐户但它们不会被提升,除非你按照你的说法提升整个安装 - 以管理员身份运行MSI。