所有 Windows 系列都没有提供调整开机自启动优先级的功能,但 Windows 可以间接延迟启动顺序。
1:自启动方式
开机自启动一般有以下三种方式,启动顺序根据设置方式决定。
系统启动时执行的顺序大于用户登录时执行的顺序。
方式 | 解释 |
---|---|
计划任务 | 用户登录时执行 和 系统启动时执行 都可以设置。 |
没有计划 启动文件夹 | 用户登录时执行。 |
注册表 | 有两条路径,分别是 用户登录时执行 和 系统启动时执行 。 |
2:自启动设置
2.1:计划任务
任务可以设置 用户登录时运行
和 不管用户是否登录都要运行
,前者小于后者顺序。
2.2:启动文件夹
用户登录时运行,没别的,优势就是比另外两个方式方便,将程序或快捷方式拖进去就行。
# Ctrl + R 打开运行窗口,输入 "shell:startup"
C:\Users\用户\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
2.3:注册表
注册表类似计划任务,都有 用户登录时运行
和 不管用户是否登录都要运行
,前者小于后者顺序。
# 用户登陆时运行: 计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
# 不管用户是否登录都要运行: 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
两者配置方式相同,只是路径不同,以下是示例:
- 右键创建 "字符串值"
- 数值名称 随意
- 数值数据 指定文件路径
3:延迟启动
有些场景下,程序可能需要开机自启动,但需要延迟几秒钟在启动。
举个例子,我用 KeepassXC + 坚果云(WebDav) + Raidrive 方案。Raidrive 连接 WebDav 需要一段时间,如果 Raidrive 还未连接上 WebDav 情况下 KeepassXC 也开机自启动了,那么无可用数据库导致报错。
将 KeepassXC 设置成 用户登录时运行
;将 Raidrive 设置成 系统启动时运行
,这样理论上可以,实际并不行,因为 Windows 不是同步启动,而是异步的,不会等你启动成功之后再启动下一个,延迟启动才能够解决这种问题。
Windows 并未提供直接的延迟启动,但可以间接影响。
3.1:任务计划程序
步骤:
-
打开任务计划程序:
- 按
Win + S
打开搜索栏,输入“任务计划程序”并点击打开。
- 按
-
创建任务:
- 在任务计划程序的右侧,选择“创建任务”。
-
配置任务:
- 名称:给任务命名,例如
延迟启动程序
。 - 触发器:选择“在登录时”。
- 操作:选择“启动程序”,然后浏览并选择你要启动的程序。
- 延迟时间:在“高级设置”中,选择“延迟任务”,输入延迟时间,例如 30 秒。
- 名称:给任务命名,例如
-
保存任务:
- 点击完成,保存任务。
示例:假设你要延迟启动
notepad.exe
30 秒:
名称:延迟启动记事本
触发器:在登录时
操作:启动程序
程序:C:\Windows\System32\notepad.exe
延迟时间:30 秒
3.2:批处理文件
通过编写批处理文件并将其添加到启动文件夹,可以实现延迟启动。
0x01:创建批处理文件
打开记事本,输入以下内容,将文件另存为 delay_start.bat
。
@echo off
timeout /t 30 /nobreak
start "" "C:\Path\To\YourProgram.exe"
0x02:将批处理文件添加到启动文件夹:
- 按
Win + R
打开运行窗口,输入shell:startup
并按回车。 - 将
delay_start.bat
文件复制到打开的启动文件夹中。
标签:登录,启动,Windows,Win,用户,开机,自启动,延迟 From: https://www.cnblogs.com/hetaotao0919/p/18236321注册表同样如此