如何让程序开机自动运行?我发现对于小白而言,这确实是个问题,而且通过这个问题,可以反过来知道那些自动运行的软件都是通过什么途径运行的,进而去取消他们。
电脑从启动到进入操作系统最终启动完成,有很多个过程,不管是正常程序,还是病毒程序,他们只有在系统进入到最后桌面的状况下,程序还保持在运行,才能发挥作用。
举一个通俗的例子,看一场球赛,或者演唱会,不管你是为了看演出,还是要制造破坏,你需要最终进入到会场,那么进入会场实际上会有很多个阶段跟可能性,比如还在布置会场的阶段伪装为工作人员,比如伪装成现场的安保人员,比如伪装成演唱会的工作人员,比如购买假票,等等等等,不同的角色会在不同的时间混进会场,软件或者程序,需要最终进入操作系统运行,也不例外!
下面告诉你怎么个也不例外法:
这个问题离不开注册表,注册表你可以理解为操作系统的一个登记本,各种系统的设置,信息,软件的设置,信息等,都会记录在里面,所以也就包括那些软件需要在什么阶段运行起来这样的事情。
打开注册表编辑器的方法是按win+R键,输入regedit,或者点开始,运行,然后输入regedit,这里以win7为例进行说明。
打开后,是这样的:
关于注册表的科普,看这里:
从最前面的介绍可以看出,注册表的数据非常重要,不可以随便删除的,所以操作的时候要比较小心,否则可能导致系统崩溃。
下面开始说说,都有哪些途径,程序可以随机器启动自动运行起来:
一、最常见的一个入口:Run键、RunOnce键
注意上面图片的红色箭头指示的路径,我的系统这一项为空,就是没有程序通过这里来启动运行,如果右边有数据,那么对应数据的程序就会开机运行。
细心的你看到上图中,下面挨着还有个RunOnce键,直译的意思就是运行一次,没错,这个键下面的程序会开机运行一次,随后被删除,比如有时候安装某个软件要求重启后继续,可能重启后就会自动运行某个程序,只用运行一次,那么就会往这个里面写入数据。
除了HKEY_CURRENT_USER这个下面有这两个外,HKEY_LOCAL_MACHINE下面,也有Run跟RunOnce键。
那么这个跟之前那个有啥区别呢?从名称上,前者是CURRENT_USER、当前用户,LOCAL_MACHINE、本地机器,顾名思义,前者是当前用户登陆后会被执行,而后者本地机器是没登陆之前就会被执行,这个就是类似前面参加演唱会,有一些是工作人员,有一些是凭票进入的人员。
二、Services键
这个其实等同于前面的两个,不同的是,这里是以服务出现的,它更加底层一些,我们通过开始,运行,输入services.msc看到的这些。
这些也会在注册表中有记录。
RunServices及RunServicesOnce之后启动的程序,位于注册表[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices]和[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
RunServices]键。
RunServicesOnce键位于[HKEY_CURRENT_USER\Software\Microsoft\
Windows\CurrentVersion\RunServicesOnce]和[HKEY_LOCAL_MACHINE\
Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]下,其中的程序会在系统加载时自动启动执行一次。
这个主要是针对应用程序的,系统一级的不会出现在这里,所以如果没有应用程序使用这个,这两个键值就没有。
三、其他
除了上面两处常见的自启动项目外,下面这些也可以让程序自动运行起来:
[HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows]下的load键值的程序;
[HKEY_CURRENT_USER\SOFTWARE\
Microsoft\WindowsNT\CurrentVersion\Winlogon]和[HKEY_LOCAL_MACHINE\
SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon],注意下面的Notify、Userinit、Shell键值也会有自启动的程序,而且其键值可以用逗号分隔,从而实现登录的时候启动多个程序。
[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]
是不是觉得很恐怖,干嘛留这么多可能的入口,跟人类一样呀,演唱会不是也有很多角色可以进入会场嘛!
四、系统层面的入口
还没完,上面是注册表层面的,系统层面还有一些入口:
比如,最常见的是下面这个地方:
你把软件的快捷方式拖到这个启动下面,这里是进入系统之后,最后运行的一个地方,这里的程序也会被运行,这里就是针对最终用户的。
除此之外,还有,你点开始,运行,输入win.ini回车,或者system.ini回车,还有两个配置文件,一个是windows的配置文件,一个是系统级别的配置文件,他们里面也可以添加自启动项。
Win.ini文件中,在[windows]段下的“Run=”和“LOAD=”语句后面就可以直接加可执行程序,只要程序名称及路径写在“=”后面即可。
“load=”后面的程序在自启动后最小化运行,而“run=”后程序则会正常运行。
System.ini文件,找到[boot]段下“shell=”语句,该语句默认为“shell=Explorer.exe”,启动的时候运行Windows外壳程序explorer.exe。
上面这些,除了正常程序外,病毒程序,恶意软件,也都可以通过修改上面这些地方来实现自启动,然后来干坏事,是不是更加觉得恐怖。
最后的最后,还有一种方式可以自启动,就是使用计划任务:
通过“开始→程序→附件→系统工具→任务计划”即可该界面,当然这个除了开机之外的其他计划任务也是可以执行的。
反过来,你想干掉这些自启动的程序,也是检查这些地方,可以手工去检查,也可以通过工具软件,360这些软件的启动优化就是自动化的去干这些事情。