Skip to content

Bits of .NET

Daily micro-tips for C#, SQL, performance, and scalable backend engineering.

  • Asp.Net Core
  • C#
  • SQL
  • JavaScript
  • CSS
  • About
  • ErcanOPAK.com
  • No Access
Windows

Fix Windows 11 Slow Boot by Cleaning Up Startup Items (PowerShell Method)

- 01.02.26 | 01.02.26 - ErcanOPAK

Windows taking 2-3 minutes to reach the desktop? Your startup folder is probably cluttered with apps you don’t need launching immediately.

See What’s Slowing Your Boot:

# PowerShell command to list all startup programs with delay impact
Get-CimInstance -ClassName Win32_StartupCommand | 
    Select-Object Name, Command, Location, User | 
    Format-Table -AutoSize

This shows every program that auto-starts, including hidden ones not visible in Task Manager.

Disable the Worst Offenders:

# Disable specific startup items
$itemsToDisable = @(
    "OneDrive",
    "Teams",
    "Skype",
    "Adobe Creative Cloud",
    "Spotify",
    "Discord"
)

foreach ($item in $itemsToDisable) {
    Get-ScheduledTask -TaskName $item -ErrorAction SilentlyContinue | 
        Disable-ScheduledTask
}

Why This Works Better Than Task Manager:
Task Manager’s Startup tab only shows apps registered in certain registry keys. Many programs use:
• Scheduled Tasks (triggered at logon)
• Services (start before you even log in)
• Shell extensions (load with Explorer)

PowerShell catches ALL of these. Here’s proof:

# Find hidden startup tasks
Get-ScheduledTask | Where-Object {
    $_.Triggers.CimClass.CimClassName -eq "MSFT_TaskLogonTrigger"
} | Select TaskName, State | Format-Table

You’ll see dozens of tasks set to run at login that Task Manager never showed you.

Nuclear Option – Disable Everything Non-Essential:

# Keep only critical Windows components
Get-ScheduledTask | Where-Object {
    $_.TaskName -notlike "*Windows*" -and
    $_.TaskName -notlike "*Microsoft*" -and
    $_.State -eq "Ready"
} | Disable-ScheduledTask

Write-Host "Non-Windows startup tasks disabled. Re-enable what you need manually." -ForegroundColor Yellow

Measure the Impact:
Before disabling anything:

# Check last boot time
(Get-CimInstance -ClassName Win32_OperatingSystem).LastBootUpTime

# System uptime
(Get-Date) - (Get-CimInstance Win32_OperatingSystem).LastBootUpTime

Restart your PC, then run the same command. Typical results:
• Before: 90-120 seconds to desktop
• After: 25-35 seconds to desktop

Re-Enable What You Actually Need:

# Example: Re-enable OneDrive if you use it
Get-ScheduledTask -TaskName "OneDrive*" | Enable-ScheduledTask

Pro Tip – Delayed Start for Nice-to-Haves:
Some apps you want eventually, just not immediately at boot:

# Create a scheduled task that starts apps 2 minutes after login
$action = New-ScheduledTaskAction -Execute "C:\\Program Files\\Spotify\\Spotify.exe"
$trigger = New-ScheduledTaskTrigger -AtLogon
$trigger.Delay = "PT2M"  # 2 minute delay
Register-ScheduledTask -TaskName "Spotify-Delayed" -Action $action -Trigger $trigger

Windows boots fast, then Spotify launches when you’re already working.

Related posts:

Windows 11: Never Lose Clipboard History Again with Built-in Manager

Windows 11 — Delivery Optimization Eats Bandwidth

Windows 11 Killing Background Tasks Aggressively

Post Views: 4

Post navigation

Disable Windows 11 Bloatware and Telemetry with PowerShell (Takes 2 Minutes)
Create Smooth Page Transitions with CSS View Transitions API (No JavaScript)

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

February 2026
M T W T F S S
 1
2345678
9101112131415
16171819202122
232425262728  
« Jan    

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (934)
  • How to add default value for Entity Framework migrations for DateTime and Bool (830)
  • Get the First and Last Word from a String or Sentence in SQL (822)
  • How to select distinct rows in a datatable in C# (799)
  • How to make theater mode the default for Youtube (708)
  • Add Constraint to SQL Table to ensure email contains @ (571)
  • How to enable, disable and check if Service Broker is enabled on a database in SQL Server (552)
  • Average of all values in a column that are not zero in SQL (517)
  • How to use Map Mode for Vertical Scroll Mode in Visual Studio (473)
  • Find numbers with more than two decimal places in SQL (436)

Recent Posts

  • C#: Use init Accessor to Create Immutable Objects Without Constructor Boilerplate
  • C#: Use Index and Range Operators for Cleaner Array Slicing
  • C#: Use Null-Coalescing Assignment to Simplify Lazy Initialization
  • SQL: Use CHAR Instead of VARCHAR for Fixed-Length Columns to Save Space
  • SQL: Use CROSS APPLY Instead of Subqueries for Better Performance
  • .NET Core: Use Required Modifier to Force Property Initialization
  • .NET Core: Use Global Using Directives to Avoid Repeating Imports
  • Git: Use git restore to Unstage Files Without Losing Changes
  • Git: Use git bisect to Find Which Commit Introduced a Bug
  • AJAX: Use Fetch with Signal to Cancel Requests When User Navigates Away

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (934)
  • How to add default value for Entity Framework migrations for DateTime and Bool (830)
  • Get the First and Last Word from a String or Sentence in SQL (822)
  • How to select distinct rows in a datatable in C# (799)
  • How to make theater mode the default for Youtube (708)

Recent Posts

  • C#: Use init Accessor to Create Immutable Objects Without Constructor Boilerplate
  • C#: Use Index and Range Operators for Cleaner Array Slicing
  • C#: Use Null-Coalescing Assignment to Simplify Lazy Initialization
  • SQL: Use CHAR Instead of VARCHAR for Fixed-Length Columns to Save Space
  • SQL: Use CROSS APPLY Instead of Subqueries for Better Performance

Social

  • ErcanOPAK.com
  • GoodReads
  • LetterBoxD
  • Linkedin
  • The Blog
  • Twitter
© 2026 Bits of .NET | Built with Xblog Plus free WordPress theme by wpthemespace.com