In this post I aim to describe the steps that I take to de-bloat & optimize a Windows 10 installation. This is mostly to serve my own memory but I did want to share it with anyone else who might benefit, and as such, it will be more of an outline with screenshots instead of a step-by-step guide.
Updated on: 10/23/2020
Applicable for: Windows 10 Professional, v 1909
Basics - you should know this if you're here :-)
- To open the "run dialog" to run a program, type
WIN
+r
- To run anything with administrative privileges, open the run dialog and hit
CTRL
+SHIFT
+ENTER
- To run something in an elevated command prompt, combine the previous two steps:
WIN
+r
, type "cmd", and pressSHIFT
+ENTER
- To open Powershell, just run "Powershell"
- To open user management, run
lusrmgr.msc
- Get to the classic Network Connections panel: run
ncpa.cpl
- Find out your windows version: run
winver
- Open the task scheduler: run
taskschd.msc
- Open registry editor: run
regedit
Some Tools
Steps
(0) Install all updates
Before getting started get windows up to date with all patches etc. since newer patches might undo some of the changes that we will implement.

(1) Install Basic Utilities
which we will use further on:
(1) Reign in Windows Update
Settings → Updates & Security → Advanced Options

→ Delivery Optimization

Optional: Use Sordum to Disable Further Automatic Updates
You could try to manually disable the windows update service, but a more surefire way is to use Sordum. Search for the most recent version of their Windows Update Blocker.

Of course, re-enable windows update every once in a while!
(2) Run Sophia to Optimize
Download current version from: https://github.com/farag2/Windows-10-Sophia-Script & unzip to a local folder
Edit Sophia.ps1 to your liking, my changes were:
#DisableSigninInfo
#DisableLanguageListAccess
#DisableWindowsWelcomeExperience
#EnableWindowsTips
DisableWindowsTips
#HideTaskViewButton
#ShowSecondsInSystemClock
#ShowTrayIcons
#WindowsColorSchemeDark
#AppModeDark
#DisableNewAppInstalledNotification
#HideFirstSigninAnimation
#UninstallOneDrive
About Storage Sense:
Storage Sense is the Disk Cleanup replacement for the modern world. It frees up space on your computer by deleting things like recycle bin contents, temporary internet files, and app temporary files. This also includes the Downloads folder, but you can change that if you don’t want Storage Sense emptying it.
#EnableStorageSenseRecycleBin
DisableStorageSenseRecycleBin
#DisableHibernate
EnableHibernate
#SetTempPath
#EnableWin32LongPaths
#DisableDeliveryOptimization
DisableUpdatesMicrosoftProducts
#EnableUpdatesMicrosoftProducts
#DesktopPowerManagementScheme
#ChangeUserShellFolderLocation
#AutomaticRecommendedTroubleshooting
#DisableAutoplay
#EnableSmartActiveHours
DisableSmartActiveHours
#SetAppGraphicsPerformance
#DisableAppsSmartScreen
#HideSendToContext
#DisablePreviousVersionsPage
Then, run the script from an elevated powershell:
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force
.\Sophia.ps1
After running the tool, it will show any errors that it encountered:

Restart your PC!
(3) Privacy
Settings → Privacy

& go through each page (Speech, Inking, etc.) & turn off as required
(4) Disable File Content Indexing
Windows Explorer → C: drive → Properties
Use Everything instead of Windows' own indexing feature!

(5) Enable F8 at Startup
There are various ways to do this, the simplest is to run the following in an elevated command prompt:
bcdedit /set {default} bootmenupolicy standard
If this doesn't work, you can also try: bcdedit /set {current} bootmenupolicy standard
or read this article
You can also choose to always display a boot menu, set the timeout, or disable it with the following commands:
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 5
bcdedit /set {bootmgr} displaybootmenu no
(6) Conclusively stop wake timers from waking Windows 10 desktop
You can check what last woke your computer from an elevated command prompt with: powercfg /LASTWAKE
Find a list of scheduled services that may wake your computer: powercfg /WAKETIMERS
Check your BIOS for any possible settings, such was disabling wake-on-lan.
→ then, follow this superuser thread as well as this article; I will also paraphrase in short:
(6.1) Disable Wake Timers for All Power Profiles

(6.2) Revoke "Wake" Privileges from Scheduled Tasks
- Download PSTools
- Open an elevated command prompt, and from your PSTools directory run
psexec.exe -i -s %windir%\system32\mmc.exe /s taskschd.msc
(this opens up task scheduler with system permissions) - Go to Task Scheduler Library → Microsoft → Windows → UpdateOrchestrator
- Go through each task there and ensure that "Wake the computer to run this task" is not checked
- You can also disable each task that was set to wake the computer (for example:
Reboot
,Reboot_AC
, orBackup Scan
,UpdateAssistantWakeupRun
- Find each task in the following folder in file explorer:
C:\Windows\System32\Tasks\Microsoft\Windows\UpdateOrchestrator
, make yourself the owner, and remove "Modify" and "Full Control" permissions from every user that has is, also disable inheritance - Find any more scheduled tasks that are set to wake the computer: in an elevated powershell, run
Get-ScheduledTask | where {$_.settings.waketorun}
- Remove the "Wake Computer" permission from each task that was found
(6.3) Disable Hardware from Waking Up Your PC
In an elevated command prompt, run: powercfg -devicequery wake_armed
For each device found, go to device manager and adjust settings (usually in the Power Managemen tab).
(6.4) Group Policy
In group policy editor, disable: Computer Configuration
→ Administrative Templates
→ Windows Components
→ Windows Update
→ Enabling Windows Update Power Management to automatically wake up the system to install scheduled updates
.
(6.5) Automatic Maintenance
Control Panel
→ Security and Maintenance
→ Maintenance
→ Change Maintenance Settings
, and set to a normal time of day:

(6.6) Set Computer to Shut Down Fully
In regedit:
-
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon
- Find or create:
PowerdownAfterShutdown
(DWORD (32-bit)) - Set to 1 (Decimal)
Credits, sources & further reading (which isn't linked to in the text above):