Windows Task Scheduler Startup Task Not Executing: Troubleshooting BAT File Execution Issues


1 views

When configuring scheduled tasks to run at system startup, several technical factors can prevent successful execution despite the task showing as "successful" in history. Let's examine the key considerations:

Your screenshots indicate the task is set to run whether user is logged on or not. This requires special handling:

# Sample BAT file content that handles user context
@echo off
SET LOGFILE=%SystemRoot%\Temp\StartupLog.txt
echo Task executed at %TIME% >> %LOGFILE%
start "" "C:\Path\To\Your\Program.exe"

For startup tasks, these trigger settings are critical:

  • Delay task for up to 1 minute (allows system stabilization)
  • Set "Run with highest privileges" if UAC is enabled
  • Configure for Windows 10/11 if applicable

Add these debugging steps to your BAT file:

@echo off
:: Debugging version
whoami > C:\temp\task_user.txt
set > C:\temp\task_env.txt
time /T >> C:\temp\execution_log.txt
ping 127.0.0.1 -n 5 > nul
"C:\Path\To\Program.exe" 2>> C:\temp\error_log.txt

Modify your task with these PowerShell commands:

# View task details
Get-ScheduledTask -TaskName "YourTaskName" | Get-ScheduledTaskInfo

# Modify startup conditions
$task = Get-ScheduledTask -TaskName "YourTaskName"
$task.Settings.DisallowStartIfOnBatteries = $false
$task.Settings.StopIfGoingOnBatteries = $false
$task.Settings.ExecutionTimeLimit = "PT0S" # Unlimited
$task | Set-ScheduledTask

If scheduler proves unreliable, consider these registry approaches:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"MyStartupTask"="C:\\Path\\To\\Script.bat"

Verify these services are running at startup:

  • Task Scheduler (Schedule)
  • Remote Procedure Call (RPC)
  • DCOM Server Process Launcher

Many Windows administrators encounter this frustrating scenario: a perfectly working task that executes flawlessly when run manually, but mysteriously fails during system startup. Let's examine this through the lens of process execution contexts.

Based on the screenshots provided, these are the key settings that need verification:

  1. Trigger configuration (At startup vs specific time)
  2. User account privileges (SYSTEM vs admin vs standard user)
  3. Working directory specification
  4. Hidden task execution setting

Startup tasks face unique challenges that manual execution doesn't:

// Example of a problematic batch file
@echo off
REM This might fail during startup if paths aren't absolute
program.exe

Versus the robust version:

@echo off
REM Startup-proof batch file
"C:\Program Files\MyApp\program.exe" /silent
timeout /t 30

Try these diagnostic techniques:

schtasks /query /tn "YourTaskName" /v > task_info.txt

Check the Windows Event Viewer under:
Applications and Services Logs -> Microsoft -> Windows -> TaskScheduler

Based on hundreds of successful deployments, these approaches consistently work:

# PowerShell alternative that handles startup better
$action = New-ScheduledTaskAction -Execute "powershell.exe" 
-Argument "-NoProfile -ExecutionPolicy Bypass -File C:\scripts\startup.ps1"
$trigger = New-ScheduledTaskTrigger -AtStartup
Register-ScheduledTask -TaskName "StartupScript" 
-Action $action -Trigger $trigger -User "NT AUTHORITY\SYSTEM" -RunLevel Highest

For batch files, ensure these settings:

  • Check "Run whether user is logged on or not"
  • Set "Run with highest privileges"
  • Configure the task to delay 30-60 seconds after startup

Remember that startup tasks execute before many system services are fully initialized. Your script might need to:

:WAITLOOP
ping 127.0.0.1 -n 10 > nul
net start | find "MySQL" > nul || goto WAITLOOP