You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WIX安装程序两次触发UAC:如何实现仅一次权限请求?

解决WIX安装程序两次触发UAC的问题

你的问题根源在于RegShell.exe的清单文件强制要求管理员权限,而你的WIX安装包本身已经以管理员权限运行(Package配置了InstallScope="perMachine"和InstallPrivileges="elevated"),此时调用带requireAdministrator清单的外部程序会触发第二次UAC验证。要实现仅一次UAC弹窗,按以下步骤处理:

核心解决方案

修改RegShell.exe的清单文件,将requestedExecutionLevel节点改为level="asInvoker",或者直接移除这个节点:

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

原因:你的自定义动作已经配置了Impersonate="no"且为Execute="deferred",此时自定义动作会继承WIX安装程序的管理员权限,RegShell.exe以调用者权限运行即可完成Shell扩展注册,无需自身再请求管理员权限。

额外检查点

  1. 修正自定义动作ID匹配错误:你的<Custom>元素里写的动作ID是RegisterShellExtensionx,但对应的<CustomAction>ID是RegisterShellExtension,笔误会导致自定义动作无法执行,需修正为一致:
    <Custom Action="RegisterShellExtension" After="InstallFinalize">(NOT VersionNT64) AND (NOT Installed)</Custom>
    
  2. 可选调整执行时机:Shell扩展注册建议放在InstallFiles之后、InstallFinalize之前,确保目标DLL已被正确安装到目录后再执行注册操作。

内容的提问来源于stack exchange,提问作者Action Heinz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:55:30