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

如何让Windows程序运行时主动请求管理员权限

Windows 程序启动弹出管理员权限申请的核心机制

这种提示本质是 Windows 用户账户控制(UAC)的权限校验触发的,主要有两类实现路径,均基于 Windows 系统原生机制实现:

启动时触发提权的常见原因

  • 程序嵌入了提权声明:这是最普遍的场景,Windows 会优先读取 exe 程序(PE 格式文件)的内置 manifest 配置,如果配置中requestedExecutionLevel节点设置为requireAdministrator,程序启动时就会自动触发 UAC 提权提示,不需要额外调用 API。通常需要修改系统配置、写入Program Files目录、修改注册表HKEY_LOCAL_MACHINE节点的程序都会加这个配置。
  • 系统兼容性自动判定:如果程序没有显式配置 manifest,但 Windows 检测到程序是针对 XP 等旧系统开发的、程序名/路径匹配已知的高权限软件特征,也会自动触发提权提示。
  • 代码主动触发提权:部分程序启动时默认以普通权限运行,启动逻辑中主动调用了提权 API,也会在启动阶段弹出提示。

具体实现方式

1. 静态 manifest 配置(最常用)

仅需要在程序编译时嵌入对应格式的 manifest 配置文件即可,不需要额外写业务代码,配置示例如下:

<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
  <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>

2. 主动调用 Windows API 触发

如果需要按需触发提权,可以调用ShellExecuteEx API 传入runas动词实现,C++ 调用示例如下:

SHELLEXECUTEINFO sei = { sizeof(sei) };
sei.lpVerb = L"runas";
sei.lpFile = L"需要提权运行的程序路径.exe";
sei.hwnd = NULL;
sei.nShow = SW_NORMAL;
ShellExecuteEx(&sei);

内容的提问来源于stack exchange,提问作者Radioactive Epic Face

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:36:04