Windows开机自启动的程序很多,包括系统软件、杀毒软件、一些其他安装软件等等。自启动当然是可以禁止的,通过软件管理或者手动删除对应的注册表中的键值项即可!但是为了系统的服务或者操作上的方便,我们往往需要在开机的时候自启动一些服务。Qt程序也不例外,在发布Qt程序的时候,我们通常也需要开机自启动自己的程序,那么如何实现呢?主要采用修改注册表的方式。
代码比较简单:

#define REG_RUN "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"
void setAutoStart(bool isAutoStart)
{QString applicationName = QApplication::applicationName();QSettings *settings = new QSettings(REG_RUN, QSettings::NativeFormat);if(isAutoStart){QString applicationPath = QApplication::applicationFilePath();settings->setValue(applicationName, applicationPath.replace("/", "\\"));}else{settings->remove(applicationName);}delete settings;
}

查看注册表:
(1)运行:regedit
(2)找到对应的路径REG_RUN,就可以查看当前添加自启动项
修改注册表的时候,可能会注册失败,杀毒软件或者Windows也会进行提示:是否禁用或者允许程序更改,怎么解决呢?
(1)让程序拥有管理员权限
(2)设置电脑的UAC级别
注:何为程序拥有管理员权限?即程序运行的时候不需要右键->以管理员权限运行就可默认以此权限运行。在VS2008以后,配置比较简单,工程右键->属性->链接器->清单文件->UAC执行级别(requireAdministrator)即可。
(3)Creator配置需要在pro中添加:

QMAKE_LFLAGS += /MANIFESTUAC:\”level=\’requireAdministrator\’ uiAccess=\’false\’\” #以管理员运行
QMAKE_LFLAGS += /SUBSYSTEM:WINDOWS,\”5.01\” #VS2013 在XP运行

然后一贯运行Creator,重新编译即可。重新生成之后,可执行程序就会发生相应的变化(图标上多了一个小盾牌)

其他的可以自启动的方法:

一、经典的启动——“启动”文件夹

单击“开始→程序”,你会发现一个“启动”菜单,这就是最经典的Windows启动位置,右击“启动”菜单选择“打开”即可将其打开,其中的程序和快捷方式都会在系统启动时自动运行。

二、有名的启动——注册表启动项

注册表是启动程序藏身之处最多的地方,主要有以下几项:
1.Run键
Run键是病毒最青睐的自启动之所,该键位置是[HKEY_CURRENT_
USER\Software\Microsoft\Windows\CurrentVersion\Run]和[HKEY_
LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run],其下的所有程序在每次启动登录时都会按顺序自动执行。
还有一个不被注意的Run键,位于注册表[HKEY_CURRENT_
USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run]和[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
Policies\Explorer\Run],也要仔细查看。
2.RunOnce键
RunOnce位于[HKEY_CURRENT_USER\Software\Microsoft\Windows\
CurrentVersion\RunOnce]和[HKEY_LOCAL_MACHINE\Software\Microsoft\
Windows\CurrentVersion\RunOnce]键,与Run不同的是,RunOnce下的程序仅会被自动执行一次。
3.RunServicesOnce键
RunServicesOnce键位于[HKEY_CURRENT_USER\Software\Microsoft\
Windows\CurrentVersion\RunServicesOnce]和[HKEY_LOCAL_MACHINE\
Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]下,其中的程序会在系统加载时自动启动执行一次。
4.RunServices键
RunServices继RunServicesOnce之后启动的程序,位于注册表[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices]和[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
RunServices]键。
5.RunOnceEx键
该键是Windows XP/2003特有的自启动注册表项,位于[HKEY_
CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx]和[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx]。
6.load键
[HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows]下的load键值的程序也可以自启动。
7.Winlogon键
该键位于位于注册表[HKEY_CURRENT_USER\SOFTWARE\
Microsoft\Windows NT\CurrentVersion\Winlogon]和[HKEY_LOCAL_MACHINE\
SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon],注意下面的Notify、Userinit、Shell键值也会有自启动的程序,而且其键值可以用逗号分隔,从而实现登录的时候启动多个程序。
8.其他注册表位置
还有一些其他键值,经常会有一些程序在这里自动运行,如:[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\Shell]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad]
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\Scripts]
[HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\System\Scripts]
小提示
★注册表的[HKEY_LOCAL_MACHINE]和[HKEY_CURRENT_USER]键的区别:前者对所有用户有效,后者只对当前用户有效。

三、古老的启动——自动批处理文件

从DOS时代过来的朋友肯定知道autoexec.bat(位于系统盘根目录)这个自动批处理文件,它会在电脑启动时自动运行,早期许多病毒就看中了它,使用deltree、format等危险命令来破坏硬盘数据。如“C盘杀手”就是用一句“deltree /y c:.”命令,让电脑一启动就自动删除C盘所有文件,害人无数。
小提示
★在Windows 98中,Autoexec.bat还有一个哥们——Winstart.bat文件,winstart.bat位于Windows文件夹,也会在启动时自动执行。
★在Windows Me/2000/XP中,上述两个批处理文件默认都不会被执行。

四、常用的启动——系统配置文件

在Windows的配置文件(包括Win.ini、System.ini和wininit.ini文件)也会加载一些自动运行的程序。
1.Win.ini文件
使用“记事本”打开Win.ini文件,在[windows]段下的“Run=”和“LOAD=”语句后面就可以直接加可执行程序,只要程序名称及路径写在“=”后面即可。
小提示
★“load=”后面的程序在自启动后最小化运行,而“run=”后程序则会正常运行。
2.System.ini文件
使用“记事本”打开System.ini文件,找到[boot]段下“shell=”语句,该语句默认为“shell=Explorer.exe”,启动的时候运行Windows外壳程序explorer.exe。病毒可不客气,如“妖之吻”病毒干脆把它改成“shell=c:\yzw.exe”,如果你强行删除“妖之吻”病毒程序yzw.exe,Windows就会提示报错,让你重装Windows,吓人不?也有客气一点的病毒,如将该句变成“shell=Explorer.exe 其他程序名”,看到这样的情况,后面的其他程序名一定是病毒程序如图2所示。
3.wininit.ini
wininit.ini文件是很容易被许多电脑用户忽视的系统配置文件,因为该文件在Windows启动时自动执后会被自动删除,这就是说该文件中的命令只会自动执行一次。该配置文件主要由软件的安装程序生成,对那些在Windows图形界面启动后就不能进行删除、更新和重命名的文件进行操作。若其被病毒写上危险命令,那么后果与“C盘杀手”无异。
小提示
★如果不知道它们存放的位置,按F3键打开“搜索”对话框进行搜索;
★单击“开始→运行”,输入sysedit回车,打开“系统配置编辑程序”,在这里也可以方便的对上述文件进行查看与修改。

五、智能的启动——开/关机/登录/注销脚本

在Windows 2000/XP中,单击“开始→运行”,输入gpedit.msc回车可以打开“组策略编辑器”,在左侧窗格展开“本地计算机策略→用户配置→管理模板→系统→登录”,然后在右窗格中双击“在用户登录时运行这些程序”,单击“显示”按钮,在“登录时运行的项目”下就显示了自启动的程序。

六、定时的启动——任务计划

在默认情况下,“任务计划”程序随Windows一起启动并在后台运行。如果把某个程序添加到计划任务文件夹,并将计划任务设置为“系统启动时”或“登录时”,这样也可以实现程序自启动。通过“计划任务”加载的程序一般会在任务栏系统托盘区里有它们的图标。大家也可以双击“控制面板”中的“计划任务”图标查看其中的项目。
小提示
★“任务计划”也是一个特殊的系统文件夹,单击“开始→程序→附件→系统工具→任务计划”即可打开该文件夹,从而方便进行查看和管理.

Qt应用程序自启动及管理员权限相关推荐

  1. windows10应用程序需要设置管理员权限自启动

    问题描述: 整常情况下程序设置自启动只需要把,快捷方式放到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 但是当程序设置以管理 ...

  2. QT: 为程序加入超级管理员权限

    当QT应用需要对C盘文件进行修改时,可能由于权限不够导致修改失败,这时需要对应用程序加入超级管理员权限. 在pro文件中加入 QMAKE_LFLAGS += /MANIFESTUAC:\"l ...

  3. QT中为程序加入超级管理员权限

    QT中为程序加入超级管理员权限 日期 作者 版本 说明 2022.10.14 Dog Tao V1.0 完成文章的摘录 文章目录 QT中为程序加入超级管理员权限 1. mingw编译器 2. MSVC ...

  4. 在 Windows 系统上降低 UAC 权限运行程序(从管理员权限降权到普通用户权限)

    在 Windows 系统中,管理员权限和非管理员权限运行的程序之间不能使用 Windows 提供的通信机制进行通信.对于部分文件夹(ProgramData),管理员权限创建的文件是不能以非管理员权限修 ...

  5. 溢出键盘程序漏洞 得到管理员权限

    没有任何一台电脑是安全的,没有一条安全防线是无法攻破的.我们要做的就是利用一切资源进行入侵.在这里你可以看到最激动人心的入侵实录,可以学到最实用的入侵技巧.这里是所有入侵爱好者的乐园.但是记住哟,入侵 ...

  6. 在Winform程序中设置管理员权限及为用户组添加写入权限

    在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行程序具有管理员权限或者设置运行程序的目录具有写入的权限,如果是在操作系统里面,我们可以设置运行程序以管理员身 ...

  7. (转)在Winform程序中设置管理员权限及为用户组添加写入权限

    本文转载自:http://www.cnblogs.com/wuhuacong/p/5645172.html 在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行 ...

  8. windows 7 下让 Delphi 2010 开发的程序具备UAC管理员权限

    windows从Vista起引入了UAC控制,对应用程序的一些行为做出了限制,例如修改注册表的操作,如果程序没有申请到管理员权限就无法执行该操作.如何让delphi开发的程序可以支持在启动时就申请管理 ...

  9. C语言让程序自己获得管理员权限

    网上很多关于ShellExecuteEx获取管理员权限的,一搜就是,但这是调用其他程序,那么怎样让自己获得呢? 很简单,调用自己不就得了ヽ( ̄▽ ̄)ノ 程序格式: #include <windo ...

最新文章

  1. JSON字符串转为指定实体类对象
  2. 安卓开发环境_我的安卓开发环境
  3. map分组后取前10个_map根据属性排序、取出map前n个
  4. Vim的基本操作总结
  5. Linux namespace之:uts namespace
  6. JavaEE实战班第三天
  7. 网络知识普及:双网卡下知识知多少,路由表及网关那点事
  8. rsync java_Linux 同步工具rsync学习
  9. IAR软件生成库文件.a的license限制
  10. Automating Android with Ant
  11. 如何用开源软件办一场技术大会?
  12. Bugly热更新最详细的使用教程
  13. python触发点击事件,如何在python中模拟onclick事件?
  14. java 实现创建拨号_电话拨号盘的实现
  15. 大学四年,靠着这些学习网站,我从挂科学渣变成了别人眼中的大神
  16. C++ Primer Plus P60 程序清单4.1(马铃薯的分析程序 ,理解数组的一些属性)——中职
  17. Z-Stack + OSAL操作系统
  18. 苹果EMS物流管理系统
  19. [AcWing] 104. 货仓选址(C++实现)贪心---绝对值不等式例题
  20. 王者荣耀吃鸡气泡等等头像框DIY在线生成N种风格微信小程序源码下载

热门文章

  1. list实现PageInfo方式手动分页
  2. 黑莓奇葩方屏手机Passport定价599美元
  3. Go后台管理系统 | EasyGoAdmin
  4. NGCF,论文Neural Graph Collaborative Filtering的理解
  5. AJAX框架:Rialto的使用
  6. java 支持的编码格式_Java支持的编码格式(各个国家的语言)
  7. 邓耀鑫:黄金短线继续下挫,黄金最新行情分析及操作建议
  8. LeetCode题解(1846):减小和重新排列数组后的最大元素(Python)
  9. git权威指南总结五:git克隆
  10. 配置wifi为AP模式 -- 接入点hostapd基本配置