如果你希望 **WSL2 指定子系统在 Windows 启动时自动运行,并且即使启动窗口弹出也不影响后台进程**,可以使用 **任务计划** 配合 `wsl -d 子系统名 &` 来实现。这样 WSL 会在后台运行,且不会因为关闭终端窗口而终止进程。 --- ## **方法 1:任务计划(后台运行)** 此方法可以让 WSL2 **在 Windows 启动后自动运行指定的子系统**,即使关闭窗口也不会终止 WSL 进程。 ### **步骤 1:创建 WSL2 后台运行脚本** 1. **打开 PowerShell(管理员模式)** - 在 Windows 搜索栏输入 `PowerShell`,右键选择 **"以管理员身份运行"**。 2. **运行以下命令创建计划任务** ```powershell $Action = New-ScheduledTaskAction -Execute "wsl.exe" -Argument "-d Ubuntu nohup sleep infinity &" $Trigger = New-ScheduledTaskTrigger -AtLogOn $Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries Register-ScheduledTask -TaskName "WSL2-AutoStart" -Action $Action -Trigger $Trigger -Settings $Settings -User "$env:UserName" -RunLevel Highest ``` **说明:** - `-d Ubuntu`:指定 WSL2 的子系统(请替换为你的子系统名称)。 - `nohup sleep infinity &`:防止 WSL 终止,使其在后台一直运行。 - `-AtLogOn`:在 Windows **用户登录时** 自动运行 WSL2。 - `-RunLevel Highest`:以 **最高权限** 运行任务,确保不会因为权限问题导致 WSL2 失败。 3. **完成后,重启 Windows,WSL2 子系统会在后台自动运行**。 --- ## **方法 2:使用 Windows 启动文件夹(窗口可见但不影响后台运行)** 如果你不介意 **WSL2 启动时弹出一个终端窗口**,但仍希望它在后台运行,可以使用 **启动文件夹** 方法。 ### **步骤 1:创建 WSL2 启动脚本** 1. **打开记事本**,输入以下内容: ```batch @echo off wsl -d Ubuntu nohup sleep infinity & ``` 2. **保存文件**,命名为 `wsl-start.bat`(确保文件后缀是 `.bat`)。 ### **步骤 2:将脚本添加到 Windows 启动文件夹** 1. **按 `Win + R`,输入以下命令,然后回车:** ``` shell:startup ``` 2. **将 `wsl-start.bat` 复制到该文件夹**。 ### **测试效果** - **当 Windows 启动时,WSL2 会自动运行**,即使你关闭终端窗口,WSL2 仍然会保持后台运行。 --- ## **总结** | 方法 | 是否弹出窗口 | 是否后台运行 | 适用场景 | |------|------------|------------|---------| | **方法 1:任务计划** | ❌(不会弹窗) | ✅(后台运行) | **最佳方案,适用于完全后台运行 WSL2** | | **方法 2:启动文件夹** | ✅(启动时会弹窗) | ✅(关闭窗口后仍保持运行) | **适用于不介意看到终端窗口** | ### **推荐方案** 如果你希望 WSL2 在 **Windows 开机后自动后台运行**,并且 **启动时不会弹出窗口**,请使用 **方法 1(任务计划)**!