如何让Python生成的Windows .exe程序默认请求管理员权限运行?
让Python打包的.exe默认请求管理员权限
方法一:打包时嵌入UAC manifest(推荐)
- 新建一个XML文件,命名为
admin.manifest,写入以下内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly>
- 使用PyInstaller打包时,添加
--manifest参数指定这个文件:
pyinstaller --onefile --manifest admin.manifest your_script.py
生成的exe启动时会自动弹出UAC权限请求窗口,无需手动右键选择管理员运行。
方法二:修改已生成的.exe兼容性设置
如果已经完成打包,不想重新编译,可以直接修改exe的属性:
- 右键目标.exe文件,打开「属性」窗口
- 切换到「兼容性」标签页
- 勾选「以管理员身份运行此程序」
- 点击「更改所有用户的设置」,确保所有用户启动该程序时都默认使用管理员权限
方法三:通过PyInstaller的.spec文件配置
如果平时习惯用.spec文件管理打包配置,可按以下步骤操作:
- 先生成基础的.spec文件:
pyinstaller --onefile your_script.py
- 打开生成的
your_script.spec,找到exe配置段,添加manifest参数指向之前的admin.manifest文件:
exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='your_script', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, console=True, manifest='admin.manifest')
- 最后用.spec文件重新打包:
pyinstaller your_script.spec
内容的提问来源于stack exchange,提问作者Muzzamil Hussain
相关产品推荐
相关产品推荐

