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

为Windows编译带管理员权限清单的Rust程序时清单未生效求解

解决Rust GNU工具链下Windows清单不生效的问题

问题原因

你使用的是i686-pc-windows-gnu目标(GNU工具链),而[package.metadata.win]是针对MSVC工具链的专属配置,GNU工具链不会读取该选项,导致清单文件未被嵌入到最终生成的可执行文件中。

方法一:手动用windres编译清单(无需额外依赖)

  • 编写资源脚本文件app.rc,内容如下:
1 24 "app.manifest"

(注:1为资源ID,24是RT_MANIFEST资源类型的数值,直接关联你的清单文件)

  • 用GNU工具链的windres工具将.rc文件编译为.o目标文件:
windres -i app.rc -o app.o --target=pe-i386

(--target=pe-i386对应x86平台,确保与编译目标匹配)

  • 在Cargo.toml中添加链接配置,告知Cargo链接生成的.o文件:
[target.i686-pc-windows-gnu.build]
rustflags = ["-C", "link-arg=app.o"]
  • 重新执行编译命令:
cargo build --release --target=i686-pc-windows-gnu

方法二:使用cargo-windows-manifest工具(自动化方式)

  • 安装该cargo子命令:
cargo install cargo-windows-manifest
  • 确保app.manifest在项目根目录,执行编译时附加子命令:
cargo windows-manifest build --release --target=i686-pc-windows-gnu

该工具兼容GNU和MSVC工具链,会自动完成清单嵌入操作。

验证清单是否生效

编译完成后,右键生成的exe文件→属性→兼容性,查看"以管理员身份运行此程序"选项是否被锁定为勾选状态,或者直接运行exe,确认是否弹出UAC权限请求窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 00:45:20