要让软件每次启动都弹出UAC确认框,需修改其Manifest声明为requireAdministrator,并配置组策略为“提示凭据”,再可选设置NTFS权限限制非管理员访问。
要让某个特定软件每次启动都弹出uac确认框(即强制提权提示),关键不是“让它提权”,而是**让它被系统识别为需要管理员权限的操作**。windows本身不会对普通程序自动触发uac,除非它明确声明或行为触发了权限提升机制。所以真正的做法是:让该程序在启动时**主动请求管理员权限**,再配合组策略控制提示方式。
修改程序的执行级别声明(核心步骤)
UAC是否弹窗,取决于程序自身的Manifest配置。默认情况下,没有声明的程序以标准用户权限运行,不触发UAC。你需要让它“说自己需要提权”:
- 如果程序自带内嵌Manifest(常见于较新开发的.exe),用Resource Hacker等工具打开,找到
<requestedexecutionlevel></requestedexecutionlevel>节点,改为:<requestedexecutionlevel level="requireAdministrator" uiaccess="false"></requestedexecutionlevel> - 如果程序无内嵌Manifest,可在其所在目录新建一个同名文件,比如
MyApp.exe.manifest,内容同上 - 保存后,该程序每次双击或命令行启动,都会触发UAC——因为系统读到这个声明,就知道它必须以管理员身份运行
统一配置UAC提示行为(确保弹窗要求输入凭据)
仅改Manifest还不够,还要让UAC弹窗按你期望的方式出现(比如不预选账户、必须输密码):
- 按
Win + R输入gpedit.msc打开组策略编辑器 - 导航至:计算机配置 → Windows设置 → 安全设置 → 本地策略 → 安全选项
- 修改两项策略:
– 用户账户控制:管理员批准模式中管理员的提升提示行为 → 设为「提示凭据」
– 用户账户控制:标准用户的提升提示行为 → 设为「提示输入用户名和密码」 - 执行
gpupdate /force或重启生效
限制非管理员无法启动(可选但推荐)
如果你只想让管理员能点开这个程序,且每次点都必须UAC验证,建议叠加NTFS权限控制:
- 右键程序.exe → 属性 → 安全 → 编辑
- 移除
Users、Authenticated Users等组的「读取和执行」权限 - 只保留
Administrators组的「读取和执行」 - 这样非管理员连双击都做不到,而管理员启动时因Manifest声明+组策略设置,必然弹UAC凭据框
验证与注意事项
完成上述设置后:
- 用管理员账户测试:双击程序 → 应弹出带空白用户名/密码框的UAC窗口(安全桌面下)
- 用标准账户测试:应提示“拒绝访问”或根本无法看到该程序图标(取决于权限设置)
- 注意:某些绿色免安装软件可能绕过Manifest机制;若无效,可考虑用Task Scheduler创建带“最高权限”标记的任务来间接启动
- 不建议关闭UAC或禁用LUA,否则整个机制失效


















