经常有些新手问有哪些方法可以设置开机自启动。特此做个常用自启动的方法的汇总。
开始菜单启动项
最简单的方法莫过于把程序丢到【开始菜单-所有程序-启动】里了。地球人都知道……不过这个文件夹的本地路径在哪儿捏?
其实这个文件夹就位于“C:Documents and SettingsAll Users「开始」菜单程序启动”(路径中的"C:"为你实际安装系统的盘符)里面。只要将程序复制进去。开机就可以实现启动了……
正如地球人民所熟知的那样,把程序放在开始菜单是很简单的方法……不过,偶尔也有想让程序隐蔽的自启动的人。这时候作为第二首选,注册表是不二选择。不为多数人知晓的是,注册表可以用来启动程序键并不仅仅只有“RUN”而已。
下面写出注册表的开机自启动键:
以下键值的路径所指向的程序都可以开机自启动。
1. HKEY_LOCAL_MACHINEsoftwaremicrosoftwindowscurrent version下的RunServices、RunServicesOnce、Run、RunOnce、RunEx、 RunOnceEx
2. HKEY_CURRENT_USERsoftwaremicrosoftwindowscurrent version下的RunServices、RunServicesOnce、Run、RunOnce、RunEx、 RunOnceEx
3. HKEY_LOCAL_MACHINEsoftwaremicrosoftwindowscurrent versionPoliciesExplorerRun
4. HKEY_CURRENT_USERsoftwaremicrosoftwindowscurrent versionPoliciesExplorerRun
5. HKEY_LOCAL_MACHINESystemcurrentControlsetServices
6. HKEY_LOCAL_MACHINESystemcurrentControlsetOntrolSession Manager
7. HKEY_LOCAL_MACHINEsoftwaremicrosoftwindows NTcurrent versionWinlogonUserinit
以下的键值里如果有可执行程序,也能开机自启动:
1. HKEY_CLASSES_ROOTexefileshellopenconmand
2. HKEY_CLASSES_ROOTcomfileshellopenconmand
3. HKEY_CLASSES_ROOTbatfileshellopenconmand
4. HKEY_CLASSES_ROOThtafileshellopenconmand
5. HKEY_CLASSES_ROOTpiffileshellopenconmand
6. HKEY_LOCALMACHINEsoftwareclassesexefileshellopencommand
7. HKEY_LOCALMACHINEsoftwareclassescomfileshellopencommand
8. HKEY_LOCALMACHINEsoftwareclassesbatfileshellopencommand
9. HKEY_LOCALMACHINEsoftwareclasseshtafileshellopencommand
10. HKEY_LOCALMACHINEsoftwareclassespiffileshellopencommand
注意:这些键下面的值都是""%1"%*",如果这些值里面包含了可执行文件的话,那么这个可执行文件也回开机启动的,例:如果将值""%1"%*"改为"s1.exe%1%*"的话,那么s1.exe就会在系统每次启动的时候执行。(可执行文件的类型有:bat、exe、pif、com、hta)
除了注册表,一个方法也被大量的采用,那就是添加服务。众所周知,服务是开机启动的啦,那自然也可以启动程序拉
添加程序作为一个服务,一般有两种途径。其中常用的是调用命令行“sc create”命令。
调用格式为 sc create 服务名称 binpath= 程序路径 type= own start= auto
其中
type是关于建立服务的类型,选项值包括驱
动程序使用的类型。
值可以是以下值:
own, share, interact, kernel, filesys
默认是share。
start是关于启动服务的类型,选项值包括驱动程序使用的类型。
值可以是以下的值:
boot, system, auto, demand, disabled
默认是demand(手动)。
注意:sc create 命令创建完的服务默认是不启动的。如果要马上启动,可以在后面再使用
net start 服务名
来马上启动服务。
另外,需要注意的是,服务的程序入口点和一般程序不同,名为service main。同时作为服务的程序,本身的函数名字和格式,必须符合标准,并且用SetServiceStatus设置服务状态。否则启动服务的时候会提示未响应导致启动失败。
怎样关闭开机启动项例子
假设在C盘有个文件“客户端”,想把他设置成一个叫“服务”的服务。那么可以在命令行里这么写:
sc create 服务 binpath= c:客户端.exe type= own start= auto
net start 服务
如果想要把一个普通的标准程序注册为服务,也可以输入:
sc create 服务名称 type= own type= interact start=启动类型 DisplayName=显示名称 /c start 要启动的程序的路径
以上这行命令的作用是使用这个命令行编辑器来代为启动你要启动的程序,这样即便是普通的程序也可以用服务启动(用户名也是SYSTEM)。这么做的一个不好的地方就是当你的计算机启动的时候,往往会蹦跶出硕大的一个框“XXX启动失败”之类的。但是虽然显示失败了,程序却是正确的启动了。
除了调用命令行,直接在注册表上下手,达到添加服务的目的也是可行的。
系统服务跟以下的注册表几个项目相关:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices
HKEY_LOCAL_MACHINESYSTEMControlSet001Services
HKEY_LOCAL_MACHINESYSTEMControlSet002Services
懒得打字了,以下是引用网上的资料
在以上任何注册表列中添加一个新项:
名字是你想要添加系统服务的名字,比如Backdoor。
在BACKDOOR项下新建一个字符串,数值名称Displayname 数值数据为要添加服务的
名称Backdoor。
下面列出一个表,会直观一些:
名称类型数据 备注
Displayname REG_SZ 想要添加服务的名称 想要添加服务的名称
Description REG_SZ 服务的描述 服务的描述
ImagePath REG EXPAND SZ 程序的路径
Start REG_DWORD 0,2,3,4 2代表自动启动,3代表手动启动服务.4代表禁用服务,0代表系统对底层设备驱动(一般不需要这个)
ErrorControl REG_DWORD 1
Type REG_DWORD 10 or 20 一般应用程序都是10,其他的对应20
ObjectName REG_SZ LocalSystem 显示本地登陆
注意:在XP/2003下可以完全手工来添加REG EXPAND SZ类型。在XP/2003下直接修改ImagePath 键值就可以了。但是在WIN2000下却不可以。原因我也不清楚:(。
但是在WIN2000下我们写一个REG来直接注册系统服务,这样WIN2000下添加系统也能很轻松了。这里同样需要注意的是注册表文件里的ImagePath的数值类型必须是HEX(16进制)。可以拿WINHEX来把程序的绝对路径转换成16进制的。每一个数值用逗号搁开。比如我的ImagePath键值是那就应该转换成:
63,3A,5C,77,69,6E,6E,74,5C,6E,75,6B,65,2E,65,78,65(无空格)
打开记事本,敲入以下内容:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSRVTEST]
"Type"=dword:00000010
"Start"=dword:00000002
"ErrorControl"=dword:00000001
"ImagePath"=hex(2):63,3A,5C,77,69,6E,6E,74,5C,6E,75,6B,65,2E,65,78,65
"DisplayName"="SRVTEST"
"ObjectName"="LocalSystem"
"Description"="系统服务测试"
把以上信息保存为,我们就可以依靠命令来导入注册表,从而达到添加系统服务的目的。
我们在命令控制台输入regedit /,等机器重新启动,这个服务就被成功添加了。
但是我在真正实验的时候就遇到困难了。ImagePath的数值是乱码
怎么想也不明白。但是这时可以把乱码修改成绝对路径了。如果直接把REG信息写成这样
"ImagePath"=hex(2):C:WINNTNUKEGROUP.EXE
其他的键值都可以添加,这个键值就不可以了?总之我们可以先添加乱码的ImagePath,然后再修改成 这样也不是不可能的。就是在命令行下来添加就很麻烦了。
以上是Windows 2000手工添加系统服务的方法,对于Windows 98 注册表结构是不一样的,但是Windows 98仍然可以通过注册表来实现添加系统服务,而且还要更简单一些。
在项目“HKLM/SOFTWARE/Microsoft/WindowsCurrentVersion/RunServices”下添加一个新字符串数值。
比如,如果程序的名字叫做“BACKDOOR”,就建立一个名为“BACKDOOR”的字符串数值,然后在数据域中输入执行程序的完整路径。
AUTOEXEC
这是一个很久很久以前的故事……
AUTOEXEC是DOS时代的开机启动脚本。在WINDOWS 98/me 下也被广泛使用。
AUTOEXEC现在几乎都被遗忘了。不过在某些特殊场合还是有着特殊的意义的。比如,很多工具显示开机启动项都是靠注册表键值来显示的。这时候假如用的是AUTOEXEC脚本就不会被这类工具显示了。
那么,怎么才能使用这个启动脚本来达到我们启动程序的目的呢?
首先:
由于AUTOEXEC启动脚本在XP下默认是关闭的,所以在启用前需要先写入注册表
HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionWinlogon。 新建一个字符串值“ParseAutoexec”,将值设置为“1”。
然后 :
在你的系统盘的根目录新建一个文本文档,改名为 AUTOEXEC.BAT
里面输入start 程序路径