• 22919阅读
  • 16回复

Win7/8中QT程序避开UAC [复制链接]

上一主题 下一主题
离线wigou
 

只看楼主 倒序阅读 楼主  发表于: 2012-03-09
QT开发的程序会修改系统部分设置,UAC会阻止这些修改,QT中该如何避开UAC?
在VS中可以修改manifest,使程序用administrator权限运行
离线20091001753

只看该作者 1楼 发表于: 2012-03-28
(づ ̄ 3 ̄)づ
离线zamxqun

只看该作者 2楼 发表于: 2014-05-04
这样做,只是让我以管理员方式运行程序时,不会出现警告。但是怎样才能使编译出的程序直接能以管理员身份运行,而不需要右键选择以管理员运行呢?
离线roywillow

只看该作者 3楼 发表于: 2014-05-04
回 zamxqun 的帖子
zamxqun:这样做,只是让我以管理员方式运行程序时,不会出现警告。但是怎样才能使编译出的程序直接能以管理员身份运行,而不需要右键选择以管理员运行呢? (2014-05-04 15:01) 

我觉得这是不可能的,除非让客户关掉UAC
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线zamxqun

只看该作者 4楼 发表于: 2014-05-05
回 roywillow 的帖子
roywillow:我觉得这是不可能的,除非让客户关掉UAC (2014-05-04 20:24) 

使用vs2010很容易实现:http://www.qtcn.org/bbs/read-htm-tid-56403.html
离线ashe0817

只看该作者 5楼 发表于: 2014-05-05
在.pro文件中加入链接参数就可以了啊,或者用下面的办法,永久修改
http://blog.csdn.net/aqtata/article/details/17222691
离线zamxqun

只看该作者 6楼 发表于: 2014-05-05
回 ashe0817 的帖子
ashe0817:在.pro文件中加入链接参数就可以了啊,或者用下面的办法,永久修改
http://blog.csdn.net/aqtata/article/details/17222691  (2014-05-05 09:32) 

我改了E:\Qt\Qt5.2.1\5.2.1\msvc2010\mkspecs\win32-msvc2010\qmake.conf,但是编译后还是没有盾牌
离线jakes

只看该作者 7楼 发表于: 2014-05-23
回 zamxqun 的帖子
zamxqun:我改了E:\Qt\Qt5.2.1\5.2.1\msvc2010\mkspecs\win32-msvc2010\qmake.conf,但是编译后还是没有盾牌[表情] (2014-05-05 11:56)

http://t.cn/8FJ8oNL

可以按照这个解决方法。亲测可用。


离线zamxqun

只看该作者 8楼 发表于: 2014-05-23
回 jakes 的帖子
jakes:http://t.cn/8FJ8oNL
可以按照这个解决方法。亲测可用。[表情]
....... (2014-05-23 16:28) 

qt5.2.1 + vs2010
使用解决方案三:
QMAKE_LFLAGS += /MANIFESTUAC:"level='requireAdministrator'uiAccess='false'"
重新qmake, 重新编译后:启动程序失败
离线jakes

只看该作者 9楼 发表于: 2014-06-12
回 zamxqun 的帖子
zamxqun:qt5.2.1 + vs2010
使用解决方案三:
QMAKE_LFLAGS += /MANIFESTUAC:"level='requireAdministrator'uiAccess='false'"
重新qmake, 重新编译后:启动程序失败 (2014-05-23 17:49) 

我用第二个方法在VS2012上成功过,建议尝试一下。

只看该作者 10楼 发表于: 2014-06-13
博客地址:https://waleon.blog.csdn.net
微信公众号:高效程序员
QQ 群:242790253
微信群:加微信(iwaleon),邀请入群。

承接各种 C++/Qt/QML 项目,专业的团队,一流的服务,不二的选择!
离线zamxqun

只看该作者 11楼 发表于: 2014-07-16
回 奋斗ing孩子 的帖子
奋斗ing孩子:这有详解:http://blog.sina.com.cn/s/blog_a6fb6cc90101feia.html  (2014-06-13 08:38) 

这个UAC应该是用VS实现的,用Qt Creator怎么实现
离线yujincheng08

只看该作者 12楼 发表于: 2014-07-17
回 zamxqun 的帖子
zamxqun:
这个UAC应该是用VS实现的,用Qt Creator怎么实现

QtCreator的话可在PRO里面添加
  1. RC_FILE = resource.rc

在 resource.rc里面就可以添加图标或者UAC权限之类了。如
  1. 1 24 uac.manifest
这样就是申请uac权限。当然在pro文件同目录得有uac.manifest文件 内容如下
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  3. <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
  4. <security>
  5. <requestedPrivileges>
  6. <requestedExecutionLevel level="requireAdministrator"/>
  7. </requestedPrivileges>
  8. </security>
  9. </trustInfo>
  10. </assembly>
这样编译就可以了。另外rc文件还有其他很多功能,如图标的话,可以在resource.rc添加如下
  1. IDI_ICON1 ICON DISCARDABLE "icon.ico"
有icon.ico就可以添加图标了。
离线zrbfly

只看该作者 13楼 发表于: 2014-07-21

QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\"  #以管理员运行
QMAKE_LFLAGS += /SUBSYSTEM:WINDOWS,\"5.01\" #VS2013 在XP运行
添加到 PRO文件。并以管理员运行QT CRTEATOR
离线809097747

只看该作者 14楼 发表于: 2016-11-10
大神们,我用qt 使用win32-vs2005编译器编译出错提示:
release\DMX126_V10.intermediate.manifest : general error c1010070: Failed to load and parse the manifest.
我查了下,老外说什么manifest的文件名过长,导致加载不了这文件,请问怎么破?怎么去设置呢?
离线809097747

只看该作者 15楼 发表于: 2016-11-10
回 zrbfly 的帖子
zrbfly:QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\"  #以管理员运行
QMAKE_LFLAGS += /SUBSYSTEM:WINDOWS,\"5.01\" #VS2013 在XP运行
添加到 PRO文件。并以管理员运行QT CRTEATOR (2014-07-21 11:07) 

无效啊,我用的是静态编译
离线809097747

只看该作者 16楼 发表于: 2016-11-10
回 yujincheng08 的帖子
yujincheng08:QtCreator的话可在PRO里面添加
RC_FILE = resource.rc
在 resource.rc里面就可以添加图标或者UAC权限之类了。如1 24 uac.manifest这样就是申请uac权限。当然在pro文件同目录得有uac.manifest文件 内容如下
<?xml version="1.0" encoding="UTF-8" standalo .. (2014-07-17 19:33)

你这种方法试过了,不能用,但如果同时修改qmake.conf文件的话(QMAKE_LFLAGS_WINDOWS    = /SUBSYSTEM:WINDOWS \"/MANIFESTDEPENDENCY:type=\'win32\' name=\'Microsoft.Windows.Common-Controls\' version=\'6.0.0.0\' publicKeyToken=\'6595b64144ccf1df\' language=\'*\' processorArchitecture=\'*\'\"\"/MANIFESTUAC:level=\'requireAdministrator\' uiAccess=\'false\'\")倒是可以用,编译之后生成的exe文件点击打开会自动弹出“用户账户控制”窗口。我用的qt是静态编译。但编译的时候会报告错误,但不影响生成exe。例如我上面说的,“用qt 使用win32-vs2005编译器编译出错提示:release\DMX126_V10.intermediate.manifest : general error c1010070: Failed to load and parse the manifest.
我查了下,老外说什么manifest的文件名过长,导致加载不了这文件,请问怎么破?怎么去设置呢?”

快速回复
限100 字节
 
上一个 下一个