以下配置后,QT在QT Creator调试时,或者生成的.exe程序,都将会默认以管理员身份运行。
一、MSVC编译器
1、在Pro文件中添加以下代码:
QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\"
重启QT软件,以管理员权限打开QT软件,重新构建一下,如果不成功,这样再重新编译时就没有问题了!
2、但是会有个后遗症,会发现我们在debug下,无法进行调试了,会弹出"The CDB process terminated"的错误:
这是因为我们的QtCreator没有以管理员权限运行,却对管理员权限的程序进行调试,所以报错,具体为什么,我也不知道。
当重新以管理员权限运行QtCreator,并进行调试,就不会报错了。
然鹅,每次启动QtCreator都以管理员权限太麻烦,换作不清楚的人,启动这个工程,一定是一脸懵逼。
所以我们稍微修改下pro文件,让程序仅仅在release模式下,才以管理员权限运行。
CONFIG(release, debug|release){
QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\"
}
二、MinGW编译器
1、先创建一个.manifest文件,放到Pro同级目录下,命名如:getAdmin.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、再创建一个.rc
文件,也放在Pro文件同级目录下,命名如:getAdmin.rc,文件内容如下:
1 24 DISCARDABLE "getAdmin.manifest"
3、然后在Pro文件中再附加如下代码:
RC_FILE = getAdmin.rc
重启QT软件,以管理员权限打开QT软件,重新构建一下,如果不成功,这样再重新编译时就没有问题了!
注意:以后需要以管理员身份启动QT!否则可能会有下面的异常: