2016-03-01 78 views
0

我通过Wix中的CustomAction运行.exe文件。可执行文件正在运行,但没有管理员权限。似乎我正在做的一切正确,但不知道发生了什么问题。这里是我的自定义操作在管理员权限中运行Wix msi中的.exe

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

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

实际的问题是,这是.exe文件通过ExeCommand执行是无法访问注册表项(HKCU \ SOFTWARE \微软\的Windows \ CurrentVersion \ Explorer的\壳牌的样本文件夹)。

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

+0

谁的HKCU你会期望升高EXE将能够访问? –

+0

每次用户登录系统时都会创建HKCU,并且始终适用于当前登录并使用系统的用户。 –

+0

是的,但Execute =“deferred”和Impersonate =“no”的自定义操作可能不会以登录用户的身份运行。它可能以SYSTEM帐户运行。 –

回答

0

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

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