[Qt]新增UAC功能之requireAdministrator

来源:互联网 发布:qq同步助手 mac 编辑:程序博客网 时间:2024/06/01 08:00

我们知道, win7及以上的系统权限控制的非常严格,普通用户在系统目录下没有写的权限,软件经常要写一些配置文件之类的功能就无法操作,

其实特定目录没有写的权限,但软件会运行的好好的,表面没有任何问题,它会自己重定向到C:\Users\当前登录用户名\AppData\Local\VirtualStore\类似这样的文件夹下

而且也能顺利的读取写进去的数据,win7及以上的系统有这样的重定向机制,包括注册表。

其实对我们软件来说,这绝对是个隐形的bug,有时会出现莫名其妙的bug正是由这个引起,所以我们不能任由它这么任性的重定向,有种简单的办法就是鼠标右击后“以管理员身份运行”即可解决该问题,但关键是我们不可能让我们的客户每次都这样右击管理员身份运行吧?所以我们还是得在我们自己研发的软件上做文章

首先新建一manifest文件,并编辑:

<?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="mulitray.exe.manifest"    type="win32"/><trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">    <security>        <requestedPrivileges>            <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>        </requestedPrivileges>    </security></trustInfo></assembly>

保存为uac.manifest(文件名自取)文件,放到Qt工程目录下,然后在同级目录创建一rc文件并编辑

1 24 DISCARDABLE "UAC.manifest"


然后在Qt工程中修改pro文件

RC_FILE = ***.rc


编译后即可。这样打包后也会默认以管理员身份运行。

不过这样有时候程序无法运行,会出现“启动程序失败,路径或者权限错误?”这样的错误

不用担心,可以通过管理员身份运行QtCreator解决!

0 0
原创粉丝点击