AI自动执行Wi-Fi自动切换+向日葵静默启动+进程守护
本文提出了一种自动化解决方案,通过三个模块协同工作实现向日葵远程控制软件的全自动保活:1)网络自切换模块实时检测并自动连接到特定Wi-Fi网络;2)权限绕过模块利用Windows计划任务存储管理员凭据,实现无感启动;3)进程守护模块定时检查并自动重启异常进程。该方案有效解决了企业网络环境下向日葵的网络依赖、手动切换繁琐和UAC弹窗等问题,只需一次性配置计划任务并修改脚本参数即可实现后台自动恢复,特
AI自动执行Wi-Fi自动切换+向日葵静默启动+进程守护
🔍 痛点
- 网络依赖:企业网络中只特定网络开放向日葵权限,只在特定Wi-Fi才能工作,一切换网络就罢工。
- 忘记还原:手动切网 + 重新登录,操作繁琐且容易忘记。
- UAC弹窗:手动运行脚本总是弹出权限确认框,无法做到后台自动恢复。
💡 解决方案全景
这个方案通过三个模块协同工作,实现全自动保活:
● 网络自切换模块:实时检测当前Wi-Fi,若不是目标网络则自动连接过去。
● 权限绕过模块:利用Windows计划任务存储管理员凭据,通过schtasks /run无感启动向日葵。
● 进程守护模块:定时检查向日葵进程,发现异常立即重启。
📝 准备工作
在开始之前,你需要确认以下信息:
● 向日葵安装路径:例如 D:\向日葵\AweSun\AweSun.exe
● 目标Wi-Fi名称及密码:比如 Guest-VIP / VIP123456
如果之前已经连接过该Wi-Fi,密码可以不填(脚本会自动使用已保存的配置)。
● 当前Windows用户名:打开命令提示符输入 echo %USERNAME% 即可看到。
🛠️ 核心步骤:创建计划任务(只需一次)
计划任务的作用是让向日葵能以最高权限无弹窗启动。请以管理员身份运行命令提示符,然后执行以下命令:
cmd
schtasks /create /tn "启动向日葵" /tr "D:\向日葵\AweSun\AweSun.exe" /sc once /st 00:00 /ru "%USERNAME%" /rl HIGHEST /f /it
参数解释(新手必看):
● /tn:任务名称,后面脚本里会用到,必须一致。
● /tr:要运行的程序路径。
● /sc once /st 00:00:任务只运行一次,时间设为午夜(实际我们用/run手动触发)。
● /ru:使用当前用户身份运行。
● /rl HIGHEST:以最高权限运行,这是绕过UAC的关键!
● /it:仅在用户登录时运行,确保向日葵界面正常显示。
创建完成后,建议打开任务计划程序(taskschd.msc),找到“启动向日葵”任务,在“条件”选项卡中取消勾选“仅在以下网络连接可用时才启动”和“只有在计算机使用交流电源时才启动”,避免网络条件误判。
🤖 脚本:自动切网 + 启动向日葵
将下面的代码保存为一个.bat文件(例如向日葵保活.bat),然后修改开头的配置项即可。代码已详细注释,新手也能看懂。
@echo off
chcp 936 >nul
setlocal enabledelayedexpansion
:: ========== 配置区 ==========
set "TARGET_NETWORK=Guest-VIP" :: 目标Wi-Fi名称
set "TARGET_PASSWORD=VIP123456" :: 目标Wi-Fi密码(如果从未连接过,必填;已连接过可留空)
set "SUNFLOWER_EXE=AweSun.exe" :: 向日葵进程名
set "TASK_NAME=启动向日葵" :: 计划任务名称(必须和创建时一致)
:: ============================
:: ----- 1. 检测当前连接的网络 -----
set "ssid="
for /f "tokens=2 delims=:" %%a in ('netsh wlan show interfaces ^| findstr "SSID" ^| findstr /v "BSSID"') do (
set "ssid=%%a"
set "ssid=!ssid:~1!" :: 去掉前导空格
)
if not defined ssid (
echo 当前未连接任何Wi-Fi网络
set "ssid=无网络"
) else (
echo 当前连接的网络:%ssid%
)
:: ----- 2. 判断是否为目标网络,如果不是则自动切换 -----
echo %ssid% | findstr /i "%TARGET_NETWORK%" >nul
if !errorlevel! neq 0 (
echo 当前网络不是 %TARGET_NETWORK%,正在尝试自动切换...
:: 检查目标网络是否已保存过配置文件
netsh wlan show profiles | findstr /i "%TARGET_NETWORK%" >nul
if !errorlevel! equ 0 (
:: 已保存过,直接连接
echo 找到已保存的配置文件,正在连接...
netsh wlan connect name="%TARGET_NETWORK%"
) else (
:: 未保存过,需要添加配置文件(需要密码)
echo 目标网络未保存过,正在创建配置文件...
call :AddWiFiProfile "%TARGET_NETWORK%" "%TARGET_PASSWORD%"
netsh wlan connect name="%TARGET_NETWORK%"
)
:: 等待5秒让网络连接稳定
echo 等待网络连接稳定...
timeout /t 5 /nobreak >nul
:: 重新检测连接是否成功
for /f "tokens=2 delims=:" %%a in ('netsh wlan show interfaces ^| findstr "SSID" ^| findstr /v "BSSID"') do (
set "new_ssid=%%a"
set "new_ssid=!new_ssid:~1!"
)
echo 当前连接的网络:!new_ssid!
echo !new_ssid! | findstr /i "%TARGET_NETWORK%" >nul
if !errorlevel! neq 0 (
echo 切换到目标网络失败,请检查Wi-Fi密码或网络是否可用
pause
exit /b
) else (
echo 成功切换到 %TARGET_NETWORK%
)
) else (
echo 当前已是目标网络 %TARGET_NETWORK%
)
:: ----- 3. 检查向日葵是否已在运行 -----
tasklist | findstr /i "%SUNFLOWER_EXE%" >nul
if !errorlevel! equ 0 (
echo 向日葵已在运行,无需重复启动。
pause
exit /b
)
:: ----- 4. 检查计划任务是否存在 -----
schtasks /query /tn "%TASK_NAME%" >nul 2>&1
if !errorlevel! neq 0 (
echo 计划任务 "%TASK_NAME%" 不存在!
echo 请以管理员身份运行以下命令创建任务:
echo schtasks /create /tn "%TASK_NAME%" /tr "D:\向日葵\AweSun\AweSun.exe" /sc once /st 00:00 /ru "%%USERNAME%%" /rl HIGHEST /f /it
pause
exit /b
)
:: ----- 5. 触发计划任务启动向日葵 -----
echo 正在启动向日葵...
schtasks /run /tn "%TASK_NAME%" >nul 2>&1
if !errorlevel! neq 0 (
echo 计划任务启动失败,错误码:!errorlevel!
echo 请手动检查任务属性中的“使用最高权限运行”是否勾选
) else (
echo 启动命令已发送
)
:: ----- 6. 等待并验证进程 -----
echo 等待5秒确认进程...
timeout /t 5 /nobreak >nul
tasklist | findstr /i "%SUNFLOWER_EXE%" >nul
if !errorlevel! equ 0 (
echo 向日葵已成功启动!
) else (
echo 警告:未检测到向日葵进程,请手动检查任务管理器。
)
pause
exit /b
:: ===== 子程序:添加Wi-Fi配置文件 =====
:AddWiFiProfile
set "SSID=%~1"
set "PASSWORD=%~2"
:: 创建Wi-Fi配置文件XML
set "PROFILE_XML=%temp%\%SSID%.xml"
(
echo ^<?xml version="1.0"?^>
echo ^<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1"^>
echo ^<name^>%SSID%^</name^>
echo ^<SSIDConfig^>
echo ^<SSID^>
echo ^<name^>%SSID%^</name^>
echo ^</SSID^>
echo ^</SSIDConfig^>
echo ^<connectionType^>ESS^</connectionType^>
echo ^<connectionMode^>auto^</connectionMode^>
echo ^<MSM^>
echo ^<security^>
echo ^<authEncryption^>
echo ^<authentication^>WPA2PSK^</authentication^>
echo ^<encryption^>AES^</encryption^>
echo ^<useOneX^>false^</useOneX^>
echo ^</authEncryption^>
echo ^<sharedKey^>
echo ^<keyType^>passPhrase^</keyType^>
echo ^<protected^>false^</protected^>
echo ^<keyMaterial^>%PASSWORD%^</keyMaterial^>
echo ^</sharedKey^>
echo ^</security^>
echo ^</MSM^>
echo ^</WLANProfile^>
) > "%PROFILE_XML%"
:: 添加配置文件
netsh wlan add profile filename="%PROFILE_XML%"
del "%PROFILE_XML%"
goto :eof
⚠️ 注意:如果目标Wi-Fi已经连接过(系统里有保存的配置文件),TARGET_PASSWORD可以留空;如果从未连接过,必须填写正确的密码,否则脚本无法自动添加网络配置。
⏰ 实现定时保活
脚本写好了,怎么让它自动运行呢?推荐下面两种方法:
方法1:加入开机启动
- 按下 Win + R,输入 shell:startup,回车打开启动文件夹。
- 将向日葵保活.bat的快捷方式复制进去。
- 这样每次开机后脚本会自动执行一次,检查网络和向日葵状态。
方法2:使用任务计划定时执行
如果你希望更频繁地守护(例如每隔一小时检查一次),可以创建一个计划任务: - 打开任务计划程序,创建任务。
- 触发器设为“每天”,并重复间隔1小时。
- 操作指向你的向日葵保活.bat。
- 关键:在“常规”选项卡中勾选“使用最高权限运行”,确保脚本有权限修改网络设置。
❓ 常见问题速查

🚀 扩展玩法
这个方案不仅适用于向日葵,稍微修改就能适配其他远程软件,比如TeamViewer、ToDesk。甚至可以改造成VPN自动连接脚本,或者集成到你的运维自动化流程中。如果你有多个常用网络,可以在脚本里扩展网络优先级列表,实现智能切换。
🎉 总结
通过“网络自切换 + 计划任务绕UAC + 进程守护”三板斧,我们彻底解决了向日葵因网络切换而退出的烦恼。整个过程只需要一次配置,后续全自动运行,再也不用为手动切网、UAC弹窗而分心了。
如果你也受够了这些重复劳动,赶紧试试这个脚本吧!有任何问题欢迎留言讨论,我们一起改进。
本人正在学习阶段,欢迎大家指点,后续会根据反馈更新脚本,让它更稳定、更强大!
更多推荐
所有评论(0)