AI自动执行Wi-Fi自动切换+向日葵静默启动+进程守护

🔍 痛点

  1. 网络依赖:企业网络中只特定网络开放向日葵权限,只在特定Wi-Fi才能工作,一切换网络就罢工。
  2. 忘记还原:手动切网 + 重新登录,操作繁琐且容易忘记。
  3. 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:加入开机启动

  1. 按下 Win + R,输入 shell:startup,回车打开启动文件夹。
  2. 将向日葵保活.bat的快捷方式复制进去。
  3. 这样每次开机后脚本会自动执行一次,检查网络和向日葵状态。
    方法2:使用任务计划定时执行
    如果你希望更频繁地守护(例如每隔一小时检查一次),可以创建一个计划任务:
  4. 打开任务计划程序,创建任务。
  5. 触发器设为“每天”,并重复间隔1小时。
  6. 操作指向你的向日葵保活.bat。
  7. 关键:在“常规”选项卡中勾选“使用最高权限运行”,确保脚本有权限修改网络设置。

❓ 常见问题速查

在这里插入图片描述

🚀 扩展玩法
这个方案不仅适用于向日葵,稍微修改就能适配其他远程软件,比如TeamViewer、ToDesk。甚至可以改造成VPN自动连接脚本,或者集成到你的运维自动化流程中。如果你有多个常用网络,可以在脚本里扩展网络优先级列表,实现智能切换。

🎉 总结
通过“网络自切换 + 计划任务绕UAC + 进程守护”三板斧,我们彻底解决了向日葵因网络切换而退出的烦恼。整个过程只需要一次配置,后续全自动运行,再也不用为手动切网、UAC弹窗而分心了。
如果你也受够了这些重复劳动,赶紧试试这个脚本吧!有任何问题欢迎留言讨论,我们一起改进。
本人正在学习阶段,欢迎大家指点,后续会根据反馈更新脚本,让它更稳定、更强大!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐