使 Windows 下的 Qt 应用程序获得 Administrator 权限
有些时候,我们需要在 Windows 平台以管理员权限运行某个应用程序。这样的应用程序会在右下角有一个小盾牌的图标:
Windows 如何知道一个应用程序需要在运行时获取管理员权限?这是通过向应用程序的 exe 文件中注入一个 manifest 文件来告知的。知道了这个原理,我们就可以编译出需要管理员权限的 Qt 程序了。下面就是编译过程。
1. 创建一个普通的 Qt 工程。
2. 在这个 Qt 工程中添加一个 XML 文件,命名为 menifest.xml。
menifest.xml 文件内容如下:
XML
13 lines
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="applicationname" type="win32"></assemblyIdentity>
<description>Description of application</description>
<!-- Identify the application security requirements. -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
3. 在 .pro 文件中添加下面语句:
Plain Text
3 lines
1
2
3
win32 {
QMAKE_POST_LINK += mt -manifest $$PWD/manifest.xml -outputresource:$$OUT_PWD/debug/$$TARGET".exe" $$escape_expand(\n\t)
}
在这段语句中,win32
块表示仅在 Windows 平台才会运行其中的语句。这保证了我们的项目能够跨平台编译。QMAKE_POST_LINK
意味着会在链接结束之后执行后面的语句,也就是在链接完成后运行:
Plain Text
1 lines
1
mt -manifest $$PWD/manifest.xml -outputresource:$$OUT_PWD/debug/$$TARGET".exe" $$escape_expand(\n\t)
这是一条普通的 CMD 命令,因此需要注意的是,mt(即 mt.exe)必须在环境路径中(mt.exe 是 VS 开发环境提供的一个工具,一般安装过 VS 都会有这个工具)。同时还要注意,$$PWD/manifest.xml
和$$OUT_PWD/debug/$$TARGET".exe"
都是正确的路径。为确保路径正确,可以在 .pro 文件中使用message()
函数输出,例如:
Plain Text
1 lines
1
message($$OUT_PWD/debug/$$TARGET".exe")
准备完毕之后,重新运行 qmake 再重新构建工程,就可以得到我们想要的可执行程序了:
注意,如果生成失败,可重新尝试运行 qmake 再次构建。还需要注意三个路径的问题:mt.exe,$$PWD/manifest.xml 以及 $$OUT_PWD/debug/$$TARGET”.exe”。
from:https://www.devbean.net/2016/03/enable-qt-app-admin-on-win/
使 Windows 下的 Qt 应用程序获得 Administrator 权限相关推荐
- 在Windows 下的 Qt 应用程序获得 Administrator 权限
目录 前言 方法一 方法二 结论 前言 今天用到写注册表,之前都写成功了,后面重新打开怎么都写不成功,肯定不是代码问题,后面想了下,之前是使用的管理员权限打开的IDE,还是VSIDE, 今天是使用Qt ...
- 如何在Windows下发布QT应用程序
如何在Windows下发布QT应用程序 [环境介绍] [操作系统]:Windows 10 64bit [IDE套件]:QT Creator 4.8.0 [编译器版本]:QT5.12.0 MSVC201 ...
- 如何在Windows下发布QT应用程序?
1. 如何在Windows下发布QT应用程序? 当编译完成QT程序生成可执行文件后,发布到其他客户端的方法有两种:一种是使用静态库编译:另一种是使用动态库编译,同时附上需要的动态库. 1.1. 静 ...
- Jenkins系列:5、wsl下的Jenkins编译Windows下的Qt程序并自动打包成exe
Jenkins系列:5.wsl下的Jenkins编译Windows下的Qt程序并自动打包成exe 文章目录 Jenkins系列:5.wsl下的Jenkins编译Windows下的Qt程序并自动打包成e ...
- windows下发布Qt程序
From: http://hi.baidu.com/limingfantasy/blog/item/22f6c459b8720086810a182e.html windows下发布Qt程序 2008- ...
- 从零开始在windows下使用QT根据点绘制图像
从零开始在windows下使用QT根据点绘制图像(QPainter or halcon) 前言 QT+msvc+SDK+halcon环境搭建 1 添加 .lib库文件路径 2 添加 .h 头文件 3 ...
- Windows下的Qt Creator的安装
采用Qt和Qt creator分别下载和安装的方式:(需要手动设置关联Qt和Qt Creator) 一.软件下载 从http://qt-project.org/downloads分别下载Qt和Qt C ...
- linux32位运行64位程序,32位windows下可以运行的程序在64位linux下报错
已结贴√ 问题点数:20 回复次数:3 32位windows下可以运行的程序在64位linux下报错 filt.c在32位windows code:blocks 10.05下运行无任何异样. 传到64 ...
- windows下 lvgl+qt 虚拟环境搭建
windows下 lvgl+qt 虚拟环境搭建 一.工具准备 qt creator 安装 1.软件地址:https://download.qt.io/development_releases/qtcr ...
最新文章
- fegin调用为什么要序列化_全方位解析Java的序列化
- java 操作数据库
- 对象的继承关系在数据库中的实现方式和PowerDesigner设计
- Mac上最好的Markdown文本编辑器_编辑工具
- wordpress插件制作视频教程【资料分享】
- SAP License:SAP S4HANA和ECC的区别
- chromium禁用ajax,页面加载时,jQuery AJAX不会在Chrome / Chromium中启动
- [luogu1373]小a和uim之大逃离_动态规划
- python字典里存字符_python基础知识(三)字典、字符串
- 两台主机如何共享一套键鼠一台显示器?
- 变种水仙花数 - Lily Number
- .net framework 官方下载地址
- quartz配置,实时更改
- python编程练习--水仙花数
- VxWorks中文FAQ(转载)
- 理解 Thread.Sleep 函数
- 天不怕,地不怕,就怕李佳琦的“OMG,太好看了吧!”
- 有哪些在线尺子测量工具?这个工具值得试试
- ChatGPT颠覆者来了,能替代90%的人的工作?
- unity网络实战开发(丛林战争)-前期知识准备(010-在服务器端解析数据)
热门文章
- 《历史的温度1》 读书笔记
- HI618E音频解码芯片
- Java多线程(上篇)
- eclipselink 数据库表命名规则 驼峰转下划线/表名转换
- 一款强大的在线计算器
- 电脑硬盘不小心格式化了文件怎么恢复,手把手教你变恢复高手
- 去雾论文A real-time fast defogging system to clear the vision of driver in foggy highway using minimu...
- 渗透测试实战3——bulldog2靶机入侵
- 心理正常与异常的区分_正常心理与异常心理的判别标准
- 应用上云可以有多快?