给.exe文件添加管理员权限(MinGW)--Qt
前言
当用户具有本地管理员权限时,他们可以在自己的工作区做任何想做的事情。比如下载任意应用程序,使用任何程序,甚至忽略或撤销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
结束语
好了,结束了,看着很简单,但不懂就是搞不明白,这又什么办法~
上一篇: zookeeper没有对节点设置删除权限,如何删除节点
下一篇: 235. 二叉搜索树的最近公共祖先