QT中为程序加入超级管理员权限
日期 | 作者 | 版本 | 说明 |
---|---|---|---|
2022.10.14 | Dog Tao | V1.0 | 完成文章的摘录 |
QT的一些文件操作,注册表的操作等,有些操作会无效,主要是因为没有对C盘的相关权限。通过为程序加入超级管理员权限可以解决此问题。
1. mingw编译器
在pro工程文件中加入:
RC_FILE=main.rc
main.rc
是Qt项目的资源文件,其内容示例如下:
IDI_ICON1 ICON DISCARDABLE "./res/logo.ico"
1 24 uac.manifest
第一行是为程序添加图标,第二行是增加超级管理员权限。
uac.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>
2. MSVC编译器
在QT工程文件中加入QMAKE_LFLAGS
的增加配置:
QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\"
3. CMAKE
放在add_executable的后面:
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS
"/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\"
/SUBSYSTEM:WINDOWS")
已经获得windows管理员权限的应用程序图标上会出现一个盾牌,例如: