Debloating an Already "Debloated" Windows: My Windows 10 LTSC Setup

Windows Internals • System Surgery • Personal Reflections

Windows 10 Enterprise LTSC (Long-Term Servicing Channel) is widely considered the cleanest official edition of Windows. It ships without consumer store bloatware, without pre-installed mobile games, and without aggressive bi-annual feature overhauls that constantly redesign the desktop. For most people looking for a lightweight Windows experience, installing LTSC is the finish line.

For me, it was only the baseline. Even on LTSC, Windows remains an operating system with layers of background telemetry, scheduled maintenance tasks, and self-healing mechanisms designed to keep Microsoft in the driver's seat. Rather than treating the OS as an untouchable black box, I wanted to see how far I could take system control—investigating, trimming, and manually modifying an already stripped-down OS to fit my exact requirements.

1. The Hardware & Starting Point

The machine running this setup is an Acer Nitro 5 (AN515-47):

  • CPU: AMD Ryzen 5 7535HS (Zen 3+, 6C / 12T)
  • iGPU: AMD Radeon 660M
  • Dedicated GPU: NVIDIA GeForce RTX 3050 Laptop (4GB VRAM)
  • RAM: 16GB DDR5 4800 MT/s
  • Storage: 512GB SK Hynix NVMe SSD (OS) + 1TB Crucial NVMe SSD (Storage)
  • Operating System: Windows 10 Enterprise LTSC (Build 19044)

Because this laptop launched in the Windows 11 era, Acer provided no official Windows 10 driver package. Setting it up meant obtaining clean platform drivers directly from AMD and NVIDIA, testing GPU power switching, and ensuring the modern Rembrandt-R platform worked stably under an older operating system release. Once stable, the real experiment began.

2. Why Manual Modifications Over One-Click Scripts

The internet is full of "Windows debloater" scripts and custom pre-modified ISOs. I actively avoided them.

Running a massive, opaque PowerShell script that disables 150 services and deletes hundreds of registry keys in one pass is reckless. When an audio driver stops responding, a network adapter drops connections, or an installer crashes two months later, tracing which toggle caused the failure is nearly impossible.

My goal wasn't just to make numbers in Task Manager smaller; it was to understand why each component exists, what it talks to, and what happens when it goes missing. I chose to examine services individually via services.msc, inspect registry keys under HKLM, and use the .bak renaming technique on executables so changes could be traced and reversed.

3. The War with Windows Update & Self-Healing

Disabling Windows Update turned out to be the most persistent technical battle.

The standard assumption is that setting wuauserv to Disabled in the Services console stops updates. On modern Windows, that is an illusion. Windows has an entire redundancy framework designed to revive its update pipeline:

  • wuauserv: The core Windows Update service.
  • UsoSvc: The Update Orchestrator Service that coordinates downloads and schedules reboots.
  • WaaSMedicSvc: The Windows Update Medic Service, specifically built to detect if wuauserv has been tampered with or disabled, and silently repair its configuration.

After disabling these services, I observed that Windows would periodically re-enable them after reboots or idle intervals. That led to investigating the persistence triggers deeper inside the system:

THE REMEDIATION ESCALATION

1. Renaming Orchestrator Executables: In C:\Windows\System32, renamed UsoClient.exe and usocoreworker.exe to append .bak, preventing them from being invoked by background triggers.

2. Neutering Remediation Binaries: Renamed upfc.exe (Update OS Component) to upfc.exe.bak after investigating its role in background self-healing routines.

3. Purging TaskCache Metadata: When Task Scheduler refused to let me disable Update Orchestrator tasks—and the tasks didn't even have visible XML definitions under System32\Tasks—I traced them to the internal registry tree:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\UpdateOrchestrator
Deleting that registry entry removed the internal metadata Task Scheduler used to trigger the orchestration tasks.

4. Shell Surgery & Dependency-Aware Trimming

Another area I wanted to streamline was the modern Windows shell. I don't use the Windows 10 UWP Start menu or Cortana-integrated web search; I prefer a clean, instant, keyboard-driven launcher.

I installed Open-Shell, configured it to my preferences, and then neutralized the default shell host containers by appending .bak to their system app package folders:

  • Microsoft.Windows.StartMenuExperienceHost
  • Microsoft.Windows.Search
  • Microsoft.Windows.PeopleExperienceHost
  • Microsoft.XboxGameCallableUI

Crucially, this wasn't blind removal. Consider Microsoft Edge: I wanted the Edge browser gone from my desktop, but I knew desktop apps like Stremio rely on the embedded WebView2 runtime for interface rendering. Completely ripping out all Edge-related components breaks any application that relies on an embedded browser control. So I removed the standalone Edge browser application while carefully preserving the WebView runtime. Understanding dependencies prevents a trimmed system from turning into a broken system.

5. When Things Broke: The Software Protection Incident

A real tinkering journey includes mistakes, and this was one of the most instructive ones.

While auditing running services, I noticed sppsvc (Software Protection). Wondering if it was generating background telemetry or unneeded checks, I disabled it.

The next morning, the consequences hit: desktop personalization settings were disabled, and the dreaded "Activate Windows" watermark appeared in the corner of the screen. When I opened Services to turn it back on, Windows threw Error 1058: "The service cannot be started, either because it is disabled or because it has no enabled devices associated with it."

I didn't panic or reinstall. I started investigating. Running sc qc sppsvc showed the service binary was intact (sppsvc.exe), running under NT AUTHORITY\NetworkService with a delayed auto-start configuration. Exploring System32 led to slmgr.vbs, slui.exe, and the licensing definitions inside slmgr.ini.

Dissecting slmgr.ini revealed how Windows handles license tokens, grace periods, notification states, and validation calls. The Software Protection service wasn't a telemetry daemon; it was the foundational licensing authority of the operating system. I re-enabled its startup entry directly via the registry, restarted the laptop, and the service initialized cleanly, clearing the watermark and restoring personalization. Breaking it taught me more about Windows licensing mechanics than reading ten official documentation pages ever could.

6. Empirical Observations vs. Placebos

One of the core rules of system optimization is testing your assumptions against real data. Two experiments in particular stood out:

The SysMain Test (A Valuable Negative Result)

Online guides frequently demand that users disable SysMain (formerly SuperFetch). I disabled it, tested everyday workflows, and found zero noticeable difference. On a machine with a fast SK Hynix NVMe SSD and 16GB of DDR5 memory, preloading algorithms have a negligible impact on desktop responsiveness. Disabling a service just because you can doesn't mean it makes the machine faster.

The Mem Reduct Illusion: Working Sets vs. Committed Memory

I tested a memory-cleaning tool (Mem Reduct) and watched the "In Use" RAM counter in Task Manager plummet from ~2.5GB down to 1.0GB. It looked impressive on the surface, but looking at Process Explorer revealed the truth: Committed Memory remained unchanged at 4.0GB.

The tool simply forced working set pages out of physical RAM and into the pagefile on disk. The virtual allocations were still committed. Forcing RAM clearing on modern hardware just forces the OS to read pages back from storage when an application needs them again. Understanding private bytes and commit charge prevents falling for UI cosmetic illusions.

By pruning optional background services (including non-essential NVIDIA telemetry/helper services while preserving the core display driver), the system settled into an idle footprint of approximately 57 processes, 896 threads, and ~1.5GB of RAM (with Fast Startup permanently disabled).

7. The Takeaway

Taking control of Windows at this level is not about chasing an extra 2 FPS in a video game. It's about demystifying an operating system that most people treat as an unchangeable monolith.

Windows is an intricate web of interconnected subsystems. If you choose to take it apart manually, you have to accept the trade-offs: components won't update automatically, servicing becomes manual, and when something breaks, you have to be willing to open regedit, read event logs, and trace the cause yourself.

For me, that process of breaking, diagnosing, and understanding the machinery beneath the interface is what makes personal computing genuinely fun.