常见的windows开机自启动方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
经常有些新手问有哪些方法可以设置开机自启动。特此做个常用自启动的方法的汇总。
开始菜单启动项
最简单的方法莫过于把程序丢到【开始菜单-所有程序-启动】里了。地球人都知道……不过这个文件夹的本地路径在哪儿捏?
其实这个文件夹就位于“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 服务名称 bin
path= 程序路径 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=显示名称 binPath=cmd.exe /c start 要启动的程序的路径
以上这行命令的作用是使用CMD.exe这个命令行编辑器来代为启动你要启动的程序,这样即便是普通的程序也可以用服务启动(用户名也是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键值是C:winntnukegroup.exe那就应该转换成:
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"="系统服务测试"
把以上信息保存为addsrv.reg,我们就可以依靠命令来导入注册表,从而达到添加系统服务的目的。
我们在命令控制台输入regedit /s addsrv.reg,等机器重新启动,这个服务就被成功添加了。
但是我在真正实验的时候就遇到困难了。ImagePath的数值是乱码
怎么想也不明白。但是这时可以把乱码修改成绝对路径了。如果直接把REG信息写成这样
"ImagePath"=hex(2):C:WINNTNUKEGROUP.EXE
其他的键值都可以添加,这个键值就不可以了?总之我们可以先添加乱码的ImagePath,然后再修改成C:winntnukegroup.exe 这样也不是不可能的。就是在命令行下来添加就很麻烦了。
以上是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 程序路径