能否强制程序触发UAC验证且仅以非管理员权限运行?
能否强制程序触发UAC验证且仅以非管理员权限运行?
当然可以实现这个需求!在Windows 11 Enterprise环境下,我们可以通过几个组合策略达成你的安全目标——既限制只有管理员能启动程序,又确保程序运行时不获取elevated(高)权限。下面是具体的实现方法:
1. 利用NTFS权限限制启动权限
这是最基础的一层控制:
- 找到目标程序的可执行文件(
.exe),右键选择「属性」→「安全」标签 - 点击「编辑」按钮,修改权限列表:
- 保留
Administrators组的「读取和执行」权限 - 移除或拒绝其他所有用户/组(比如
Users、Authenticated Users)的「读取和执行」权限
- 保留
- 点击「确定」保存设置
这样一来,非管理员用户连访问、启动该程序的权限都没有,自然无法运行;而管理员启动程序时,默认会以标准用户上下文运行(除非程序主动请求提权),刚好符合你要的“无elevated权限”要求。
2. 配置程序的Manifest文件(确保不主动提权)
如果目标程序本身带有请求提权的Manifest配置,需要修改它来强制以调用者权限运行:
- 如果程序有内嵌Manifest:可以用资源编辑工具(比如Resource Hacker)打开程序,找到
RT_MANIFEST资源,将requestedExecutionLevel节点修改为:<requestedExecutionLevel level="asInvoker" uiAccess="false" /> - 如果没有内嵌Manifest:可以在程序同目录下创建一个同名的
.exe.manifest文件,内容如上,Windows会优先读取外部Manifest
这个设置会强制程序以启动它的用户权限运行——管理员启动时就是非管理员权限,同时因为NTFS权限的限制,非管理员根本无法启动程序。
3. 用AppLocker做更精细化的控制(适合企业环境)
Windows 11 Enterprise自带的AppLocker可以实现更灵活的规则:
- 打开「本地组策略编辑器」(运行
gpedit.msc) - 导航到「计算机配置」→「Windows设置」→「安全设置」→「应用程序控制策略」→「AppLocker」
- 右键「可执行规则」,选择「创建新规则」,按照向导:
- 选择「允许」,点击下一步
- 在「用户或组」里选择
Administrators组,点击下一步 - 选择「路径」规则类型,指定目标程序的路径,点击下一步
- 在「例外」页面不需要设置,直接下一步
- 完成规则创建
同时,确保AppLocker的默认规则允许管理员运行程序,并且没有其他规则允许非管理员访问目标程序。AppLocker会强制只有管理员能启动该程序,而程序运行时的权限依然是标准用户级别。
注意事项
- 测试时切换到非管理员账户,确认无法启动程序;用管理员账户启动后,可以通过任务管理器查看进程的完整性级别(右键进程→「属性」→「安全」标签,或者在任务管理器的「详细信息」里添加「完整性级别」列,应该显示为「中等」而非「高」)
- 避免其他高权限进程(比如某些服务)启动该程序,必要时可以通过AppLocker或权限设置限制这类进程的访问
备注:内容来源于stack exchange,提问作者ETL
相关产品推荐
相关产品推荐

