欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

给.exe文件添加管理员权限(MinGW)--Qt

程序员文章站 2022-07-14 14:41:46
...

前言

当用户具有本地管理员权限时,他们可以在自己的工作区做任何想做的事情。比如下载任意应用程序,使用任何程序,甚至忽略或撤销IT管理员对他们设备所做的设置。很多本地管理员权限用户——尤其是高层——不喜欢无法完全控制设备所带来的枷锁,因此很多管理员让用户做自己设备的主人。

                                                                                                                          ————百度百科

在我们做自己的程序,有时候需要给予程序更大的权限,便于整个程序的运行,增加体验感。

网上有很多qt给程序添加管理员权限的例子,但是针对MinGW编译器的例子就比较混乱,或者说写的过于简洁,对于我这种在这方面毫无基础的看着很费劲,尝试了多种方法,终于成功了。所以在这里详细的记录一下。

步骤

先说下我的用的是Qt5.7.1,编译器是MinGW。

添加管理员权限,需要两个文件:.rc文件.manifest文件。

先说Manifest,Manifest事实上就是一个以.manifest为后缀的XML文件,用于组织和描述隔离应用程序及并行组件,其内部的信息如<assemblyIdentity>元素则标识着一个唯一的程序集,和其他信息一起,他们用于COM类、接口及库的绑定和**,而这些信息,以往都是存储在注册表中的。另外,Manifests也制定了组成程序集的文件及Windows类。

我的理解就是用于配置的xml文件,只不过后缀特殊。

现在暂且我们将manifest文件命名为:app.exe.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>

大体上通看,我们可以理解到它设置了文件的编码格式,还有一些版本信息之类,然后我们就可以看到它设置了security安全部分的 requestedPrivileges请求权限,等级为requireAdministrator管理员权限。所以若其他时候要改成别的,就需要改掉这个关键词就好了。

再说.rc文件,.rc文件是个资源文件,具体的语法等用到的时候再学吧,我看着有点复杂。

我们将.rc文件命名为res.rc文件吧,它只用到了一句话,如***意与上文的.manifest文件名对应)

1 24 app.exe.manifest

看到rc文件很容易想到,在设置exe文件的图标时,rc文件也只需要一句话就可以实现,如***意ico文件路径):

IDI_ICON1               ICON    DISCARDABLE     "icon.ico"

最后看pro文件,也就是把rc文件加到项目中,如下:

RC_FILE=res.rc

 

结束语

好了,结束了,看着很简单,但不懂就是搞不明白,这又什么办法~