问题背景
由于项目涉及到注册表操作,产物须避免客户右键->以管理员身份运行,双击即自动以管理员权限运行。
解决方案
msvc编译器
在项目的.pro文件中添加:
QMAKE_LFLAGS += /MANIFESTUAC:"level='requireAdministrator'uiAccess='false'"
MinGW编译器
先创建一个 .manifest 文件,如:app.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>
然后在产物(.exe)所在的目录中执行mt命令(在VS自带的“开发人员命令提示”工具中):
mt.exe -manifest "app.manifest" -outputresource:"app.exe";#1
注意:直接执行以上命令要确保先切换到产物目录并且保证app.exe和app.manifest文件都要在其中。