zoukankan      html  css  js  c++  java
  • Qt之开机自启动

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

        以下是开机的启动项:
    Qt之开机自启动

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

        这样以来,大部分工作已经做完!
        修改注册表的时候,可能会注册失败,杀毒软件或者Windows也会进行提示:是否禁用或者允许程序更改。。。好的,怎么解决呢?
    (1)让程序拥有管理员权限
    (2)设置电脑的UAC级别
    关于(1),何为程序拥有管理员权限?即程序运行的时候不需要右键->以管理员权限运行就可默认以此权限运行。在VS2008以后,配置比较简单,工程右键->属性->链接器->清单文件->UAC执行级别
    (requireAdministrator)即可。
        重新生成之后,可执行程序就会发生相应的变化(旁边多了一个小盾牌)!
        Qt之开机自启动Qt之开机自启动
    关于(2),可参考UAC及其设置来对UAC进行设置。
     
    注:
        技术在于交流、沟通,转载请注明出处并保持作品的完整性。
  • 相关阅读:
    io系列浅谈
    git 删除分支--本地分支和远程分支
    提问须知
    PDF 补丁丁 0.6.2.3691 测试版发布
    PDF 补丁丁 0.6.2.3689 测试版发布
    .Net调用接口处理时间过长,前端访问超时解决方案
    Abp用多个DbContext
    IDEA 报错 Could not autowire. No beans of 'UserMapper' type found(无法自动装配。找不到类型为 'UserMapper' 的 bean)解决IDEA中自动装配,找不到类型的bean问题
    springboot整合springmvc拦截器
    springboot自动配置原理
  • 原文地址:https://www.cnblogs.com/lanye/p/3533782.html
Copyright © 2011-2022 走看看