WIN NAS 配置自启动程序

Hexa 教程 最后更新于 1 天前 12 次阅读


折腾了winserver2022的nas,需要给组网程序手动配置一下自启动,winserver默认要登录用户才能自启动启动文件夹下的程序,远程开机后会导致不能及时自启,遂使用多种方式添加自启动,以免远程开机,重启后失联,文末附上自用的管理脚本,后面出一套linux的

方法1:使用任务计划程序(推荐)

1.1 基本配置

# 打开任务计划程序
taskschd.msc

配置步骤:

  1. 右侧点击"创建任务"
  2. 名称:程序名(随意)
  3. 触发器:选择"计算机启动时"
  4. 选择无论是否登录都要启动
  5. 操作:选择"启动程序"
  6. 程序路径:填写你的程序完整路径
  7. 输入账户密码,完成创建

1.2 高级配置脚本

也可以使用shell批量添加

@echo off
echo 配置NAS自启动任务...

schtasks /create /tn "服务名" /tr "C:\YourApp\YourProgram.exe" /sc onstart /delay 0000:30 /ru SYSTEM /f

echo 任务创建完成!
pause

方法2:注册表自启动

2.1 注册表脚本

保存为.bat文件

@echo off
echo 添加注册表自启动项...

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "任务名" /t REG_SZ /d "C:\YourApp\YourProgram.exe" /f

echo 注册表项添加完成!
pause

2.2 PowerShell 注册表脚本

保存为.ps1文件

# 以管理员身份运行
$regPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
$appPath = "C:\YourApp\YourProgram.exe"

if (Test-Path $appPath) {
    Set-ItemProperty -Path $regPath -Name "任务名" -Value $appPath
    Write-Host "自启动项已添加" -ForegroundColor Green
} else {
    Write-Host "程序路径不存在" -ForegroundColor Red
}

方法3:启动文件夹方法

该方法适合一般程序,组网,远程控制程序使用该方案会因为你没法登录导致你不能连接

3.1 批处理脚本

@echo off
set "sourceApp=C:\YourApp\YourProgram.exe"
set "startupFolder=%ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp"

echo 创建启动快捷方式...
powershell -Command "$s=(New-Object -COM WScript.Shell).CreateShortcut('%startupFolder%\NAS_Service.lnk');$s.TargetPath='%sourceApp%';$s.WorkingDirectory='C:\YourApp';$s.Save()"

echo 启动快捷方式创建完成!
pause

集合版:NAS自启动管理脚本

@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

set "APP_NAME=NAS Service" #改成你自己的目标程序
set "APP_PATH=C:\YourApp\YourProgram.exe" #改成你自己的程序路径
set "APP_ARGS=" #启动参数(可选)
set "TASK_NAME=NAS_Auto_Start" #改成你自己的任务名
set "DELAY=30"

:menu
cls
echo ================================
echo    NAS 自启动配置工具
echo ================================
echo 1. 创建计划任务自启动
echo 2. 创建注册表自启动
echo 3. 创建启动文件夹快捷方式
echo 4. 删除所有自启动配置
echo 5. 查看当前自启动项
echo 6. 退出
echo ================================
set /p choice=请选择操作 [1-6]:

if "%choice%"=="1" goto task_scheduler
if "%choice%"=="2" goto registry
if "%choice%"=="3" goto startup_folder
if "%choice%"=="4" goto cleanup
if "%choice%"=="5" goto show_current
if "%choice%"=="6" goto exit

echo 无效选择,按任意键继续...
pause >nul
goto menu

:task_scheduler
echo 正在创建计划任务...
schtasks /create /tn "%TASK_NAME%" /tr "\"%APP_PATH%\" %APP_ARGS%" /sc onstart /delay 0000:%DELAY% /ru SYSTEM /f
if !errorlevel! equ 0 (
    echo ✓ 计划任务创建成功
) else (
    echo ✗ 计划任务创建失败
)
pause
goto menu

:registry
echo 正在添加注册表自启动...
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "%TASK_NAME%" /t REG_SZ /d "\"%APP_PATH%\" %APP_ARGS%" /f
if !errorlevel! equ 0 (
    echo ✓ 注册表项添加成功
) else (
    echo ✗ 注册表项添加失败
)
pause
goto menu

:startup_folder
echo 正在创建启动快捷方式...
set "startup_path=%ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp"
powershell -Command "$s=(New-Object -COM WScript.Shell).CreateShortcut('%startup_path%\%TASK_NAME%.lnk');$s.TargetPath='%APP_PATH%';$s.WorkingDirectory='%~dp1';$s.Arguments='%APP_ARGS%';$s.Save()"
if !errorlevel! equ 0 (
    echo ✓ 启动快捷方式创建成功
) else (
    echo ✗ 启动快捷方式创建失败
)
pause
goto menu

:cleanup
echo 正在清理所有自启动配置...
schtasks /delete /tn "%TASK_NAME%" /f 2>nul
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "%TASK_NAME%" /f 2>nul
del "%ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp\%TASK_NAME%.lnk" 2>nul
echo ✓ 自启动配置已清理
pause
goto menu

:show_current
echo 当前自启动配置:
echo.
echo [计划任务]
schtasks /query /tn "%TASK_NAME%" 2>nul && echo ✓ %TASK_NAME% 存在 || echo ✗ %TASK_NAME% 不存在
echo.
echo [注册表项]
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "%TASK_NAME%" 2>nul && echo ✓ 注册表项存在 || echo ✗ 注册表项不存在
echo.
echo [启动文件夹]
if exist "%ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp\%TASK_NAME%.lnk" (
    echo ✓ 启动快捷方式存在
) else (
    echo ✗ 启动快捷方式不存在
)
pause
goto menu

:exit
echo 退出配置工具
exit

后台应用:服务方式自启动

@echo off
echo 安装NAS服务...

sc create "NASService" binPath= "C:\YourApp\YourProgram.exe" start= auto DisplayName= "服务名"

if %errorlevel% equ 0 (
    echo ✓ 服务安装成功
    sc start NASService
    echo ✓ 服务已启动
) else (
    echo ✗ 服务安装失败
)

pause

最后:

winserver依旧推荐使用计划任务

  • ✅ 可以设置启动延迟,避免系统资源竞争
  • ✅ 可以配置触发条件
  • ✅ 支持日志记录和错误处理
  • ✅ 权限控制更灵活

选择适合你的方法进行配置即可!