Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2863|回复: 0
打印 上一主题 下一主题

Qt之开机自启动及拥有管理员权限

[复制链接]

437

主题

566

帖子

2381

积分

金牌会员

Rank: 6Rank: 6

积分
2381
跳转到指定楼层
楼主
发表于 2016-11-30 16:20:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
http://blog.sina.com.cn/s/blog_a6fb6cc90101feia.html

Windows开机自启动的程序很多,包括系统软件、杀毒软件、一些其他安装软件等等。当然可以禁止,通过软件管理或者手动删除对应的注册表中的项即可!但是为了系统的服务或者操作上的方便,我们往往需要开机自启动一些服务。    以下是开机的启动项:


    Qt也不例外,在发布Qt程序的时候,我们通常也需要开机自启动自己的程序,那么如何实现呢?主要采用修改注册表的方式。
代码比较简单:

#define REG_RUN "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"

void SettingDialog::setAutoStart(bool is_auto_start)
{
    QString application_name = QApplication::applicationName();
    QSettings *settings = new QSettings(REG_RUN, QSettings::NativeFormat);
    if(is_auto_start)
    {
        QString application_path = QApplication::applicationFilePath();
        settings->setValue(application_name, application_path.replace("/", "\\"));
    }
    else
    {
        settings->remove(application_name);
    }
    delete settings;
}


    相信这段代码大家都能看懂,就不多做解释了!

查看注册表:
(1)运行:regedit
(2)找到对应的路径REG_RUN


   
    里面的内容并没有加进去,当然是因为我们并没有调用自启动的方法!
    可根据setAutoStart的不同参数来添加或者删除注册表中的项。
调用方法后:



    这样以来,大部分工作已经做完!
    修改注册表的时候,可能会注册失败,杀毒软件或者Windows也会进行提示:是否禁用或者允许程序更改。。。好的,怎么解决呢?
(1)让程序拥有管理员权限
(2)设置电脑的UAC级别
关于(1),何为程序拥有管理员权限?即程序运行的时候不需要右键->以管理员权限运行就可默认以此权限运行。在VS2008以后,配置比较简单,工程右键->属性->链接器->清单文件->UAC执行级别
(requireAdministrator)即可。
(3)Creator配置需要在pro中添加:
QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\" #以管理员运行QMAKE_LFLAGS += /SUBSYSTEM:WINDOWS,\"5.01\" #VS2013 在XP运行然后以管理员身份运行Creator,重新编译即可。
    重新生成之后,可执行程序就会发生相应的变化(旁边多了一个小盾牌)!
   

关于(2),可参考UAC及其设置来对UAC进行设置。

注:
    技术在于交流、沟通,转载请注明出处并保持作品的完整性。
    作者:╰☆奋斗ing❤孩子`  原文:http://blog.sina.com.cn/s/blog_a6fb6cc90101feia.html



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-11-25 22:43 , Processed in 0.057740 second(s), 19 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表