Windows开机启动BAT/EXE文件

前言

启动优先级:服务>注册表>启动文件夹>计划

添加服务

该方式不支持bat

1
sc create PullBatch binpath= "D:\Project\pull_batch.exe" displayname= "TestService" depend= Tcpip start= auto

注意:

1)binPath=后面一定要有个空格,否则会出现错误。

2)如果建错了或者需要修改,这时需要先删除服务,再重新创建,删除服务的命令:

1
sc delete PullBatch

在提示建立成功后,可以直接输入

1
net start PullBatch

注册表方式

Win + R 打开运行,输入:regedit.exe进入注册表。

打开HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run位置后,右键空白处新建字符串值,数值数据位置填入所需开机自启动的应用程序位置。

image-20230330093531076

这是系统启动 会导致用户的命令无法正常执行。

启动文件夹

用户启动目录

Win + R 打开运行,输入:shell:startup把要开机自启的程序文件或快捷方式复制到打开的窗口中即可。

系统启动目录

CMD+R运行以下命令打开开机启动文件夹

1
shell:Common Startup

拷贝需要开机启动的程序的快捷方式到此文件夹即可

打开任务管理器-启动查看启动项(Win10上可以/Win Server2012无法查看)

注意

不要使用shell:startup,这个是用户的启动目录,只有用户登录后才会启动。

添加任务计划

1.启动创建任务计划

按键盘上的Windows + R键以打开运行,然后键入taskschd.msc,最后,单击或点击确定

2.创建任务

(1) 点击右侧的【创建任务】

image-20211012101800267

(2) 点击【常规】,填写名称。

注意:一定要选中,不管用户是否登录都要运行,不存储密码,使用最高权限。

image-20211012100524361

(3) 点击【触发器】,点击【新建】,选择【启动时】,点击确定。

image-20211012100637756

(4) 点击【操作】,点击【新建】,选择要启动的程序或脚本的路径。起始于此处一定要填写,程序或脚本的上一级路径。

image-20211012101041854

(5) 点击确定后,任务就建成了。重新启动,验证即可。

3.查看任务

image-20211012101155390

注意项

在创建计划任务时,有一步是需要输入用户名密码的:

这时,有两种方案供我们选择:一是设置成Administrator,二是设置成SYSTEM。我们应该如何取舍呢?

首先,设置成Administrator时,需要输入密码;而设置成SYSTEM,则不需要(密码置空即可)。因此,如果服务器需要定期变更Administrator密码的话,建议设置成SYSTEM。

其次,设置成Administrator时,计划任务将在前台运行;而设置成SYSTEM,将在后台运行。因此,如果在计划任务的执行过程中,需要与用户交互,建议设置成Administrator。

再次,设置成Administrator时,可以通过任务计划执行一切可以直接运行成功的代码;而设置成SYSTEM,则无法通过任务计划执行部分代码(原因未知),如包含“net use”的批处理文件。因此,最好在测试成功之后,再做决定。

以管理员身份运行程序

1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
echo Option Explicit >auto_password.vbs
echo Dim sh >>auto_password.vbs
echo set sh=WScript.CreateObject("WScript.Shell") >>auto_password.vbs
echo Wscript.sleep 1000 >>auto_password.vbs
echo sh.run "runas /user:administrator C:\WINDOWS\system32\Notepad.exe" >>auto_password.vbs
echo Wscript.sleep 1000 >>auto_password.vbs
echo sh.SendKeys "zhangjian{ENTER}" >>auto_password.vbs
start "" auto_password.vbs
@ping 127.0.0.1 -n 5 >nul
@del /f /q /s auto_password.vbs >nul
pause
exit