CustomAction 以管理员身份运行

DaI*_*mTo 6 permissions wix

我创建了一个自定义操作:

<CustomAction Id='AddEventLog' BinaryKey='CustomActionEventLog.dll' DllEntry='AddEventLog' Return="check" Execute="immediate"/>
Run Code Online (Sandbox Code Playgroud)

安装顺序

<Custom Action="AddEventLog" Before="InstallFinalize"  />
Run Code Online (Sandbox Code Playgroud)

我的安装程序确实弹出并说它需要管理员权限才能运行。我授予它。

InstallPrivileges='elevated' InstallScope='perMachine' AdminImage='yes'
Run Code Online (Sandbox Code Playgroud)

但是,当它运行自定义操作时,它不起作用,因为它不是以管理员身份运行。

我什至尝试将以下内容添加到我的自定义操作项目 dll 上的 app.manifest。它没有帮助。

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Run Code Online (Sandbox Code Playgroud)

我已经搜索了所有关于这个主题的教程和论坛帖子。注意到已经奏效了。

如果有人对此有更好的标签,请随时添加它们,我一整天都在为此苦苦挣扎。

更新澄清:

虽然我的 customAction 与 EventLog 一起工作,但我没有使用http://schemas.microsoft.com/wix/UtilExtension Util:EventSource。这是一个普遍的问题,您甚至可以强制以管理员身份运行 customAction 吗?

Pat*_*ood 2

免责声明,我以前没有这样做过,我个人会采取使用 wix 扩展的另一种方法,但您应该能够通过使用延迟执行而不是模拟当前用户来为自定义操作授予更高的权限。因此,就您而言,Execute="immediate"是什么阻碍了您。

<CustomAction Id="MyCustomAction" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="check" Impersonate="no"/>


<!-- -or- -->


<CustomAction Id="MyCustomAction" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="commit" Return="check" Impersonate="no"/>
Run Code Online (Sandbox Code Playgroud)

来源