有些时候,我们需要在 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 权限相关推荐

  1. 在Windows 下的 Qt 应用程序获得 Administrator 权限

    目录 前言 方法一 方法二 结论 前言 今天用到写注册表,之前都写成功了,后面重新打开怎么都写不成功,肯定不是代码问题,后面想了下,之前是使用的管理员权限打开的IDE,还是VSIDE, 今天是使用Qt ...

  2. 如何在Windows下发布QT应用程序

    如何在Windows下发布QT应用程序 [环境介绍] [操作系统]:Windows 10 64bit [IDE套件]:QT Creator 4.8.0 [编译器版本]:QT5.12.0 MSVC201 ...

  3. 如何在Windows下发布QT应用程序?

    1.  如何在Windows下发布QT应用程序? 当编译完成QT程序生成可执行文件后,发布到其他客户端的方法有两种:一种是使用静态库编译:另一种是使用动态库编译,同时附上需要的动态库. 1.1.  静 ...

  4. Jenkins系列:5、wsl下的Jenkins编译Windows下的Qt程序并自动打包成exe

    Jenkins系列:5.wsl下的Jenkins编译Windows下的Qt程序并自动打包成exe 文章目录 Jenkins系列:5.wsl下的Jenkins编译Windows下的Qt程序并自动打包成e ...

  5. windows下发布Qt程序

    From: http://hi.baidu.com/limingfantasy/blog/item/22f6c459b8720086810a182e.html windows下发布Qt程序 2008- ...

  6. 从零开始在windows下使用QT根据点绘制图像

    从零开始在windows下使用QT根据点绘制图像(QPainter or halcon) 前言 QT+msvc+SDK+halcon环境搭建 1 添加 .lib库文件路径 2 添加 .h 头文件 3 ...

  7. Windows下的Qt Creator的安装

    采用Qt和Qt creator分别下载和安装的方式:(需要手动设置关联Qt和Qt Creator) 一.软件下载 从http://qt-project.org/downloads分别下载Qt和Qt C ...

  8. linux32位运行64位程序,32位windows下可以运行的程序在64位linux下报错

    已结贴√ 问题点数:20 回复次数:3 32位windows下可以运行的程序在64位linux下报错 filt.c在32位windows code:blocks 10.05下运行无任何异样. 传到64 ...

  9. windows下 lvgl+qt 虚拟环境搭建

    windows下 lvgl+qt 虚拟环境搭建 一.工具准备 qt creator 安装 1.软件地址:https://download.qt.io/development_releases/qtcr ...

最新文章

  1. fegin调用为什么要序列化_全方位解析Java的序列化
  2. java 操作数据库
  3. 对象的继承关系在数据库中的实现方式和PowerDesigner设计
  4. Mac上最好的Markdown文本编辑器_编辑工具
  5. wordpress插件制作视频教程【资料分享】
  6. SAP License:SAP S4HANA和ECC的区别
  7. chromium禁用ajax,页面加载时,jQuery AJAX不会在Chrome / Chromium中启动
  8. [luogu1373]小a和uim之大逃离_动态规划
  9. python字典里存字符_python基础知识(三)字典、字符串
  10. 两台主机如何共享一套键鼠一台显示器?
  11. 变种水仙花数 - Lily Number
  12. .net framework 官方下载地址
  13. quartz配置,实时更改
  14. python编程练习--水仙花数
  15. VxWorks中文FAQ(转载)
  16. 理解 Thread.Sleep 函数
  17. 天不怕,地不怕,就怕李佳琦的“OMG,太好看了吧!”
  18. 有哪些在线尺子测量工具?这个工具值得试试
  19. ChatGPT颠覆者来了,能替代90%的人的工作?
  20. unity网络实战开发(丛林战争)-前期知识准备(010-在服务器端解析数据)

热门文章

  1. 《历史的温度1》 读书笔记
  2. HI618E音频解码芯片
  3. Java多线程(上篇)
  4. eclipselink 数据库表命名规则 驼峰转下划线/表名转换
  5. 一款强大的在线计算器
  6. 电脑硬盘不小心格式化了文件怎么恢复,手把手教你变恢复高手
  7. 去雾论文A real-time fast defogging system to clear the vision of driver in foggy highway using minimu...
  8. 渗透测试实战3——bulldog2靶机入侵
  9. 心理正常与异常的区分_正常心理与异常心理的判别标准
  10. 应用上云可以有多快?