“Registry cleaner broke my install” horror stories usually come from the file side, not the registry: a cleaner deleted something a running process needed. Done right, profile cleanup is uneventful. Here's the discipline.
Only three kinds of targets
A defensible cleanup scope is a closed list. For a per-account tool it's exactly these:
%LOCALAPPDATA%\Microsoft\Windows\Explorer\thumbcache_*.db — pure cache, rebuilt on demandReportArchive, ReportQueue)Each of those has a defining property: Windows regenerates them freely when needed. Nothing in that list anchors a document, photo or installed program. That's why this is cleaning, not surgery.
The 24-hour rule
“It's in Temp” is not “it's garbage.” An installer mid-flight keeps its payload in %TEMP%; a just-crashed app may replay from it. The age filter — delete only files whose last-write is older than 24 hours — is the difference between tidying and amputating. Fresh files are workload, not waste.
Locked files: skip, don't force
Every cleaning tool eventually hits ERROR_SHARING_VIOLATION: a file is open. The wrong response is to take the handle, kill the locker, or schedule a boot-time delete. The right response is a one-line log: skipped, in use. The next sign-in usually frees it for the next pass. Force-deleting a live file wins a few kilobytes and risks corrupting whatever was mid-write.
Rule of thumb: if deleting a file required “Take Ownership” or handle-killing, you were not cleaning. You were deleting.
Reparse points and OneDrive
Modern profiles are full of reparse points: OneDrive “files on demand” placeholders, AppX junctions in Packages. A naive recursive delete that follows junctions can wander into the represented content and pull cloud placeholders down to disk — or worse, unlink them. Two cheap rules prevent all of it:
- Enumerate with
ReparsePointexcluded from recursion; count them, don't enter them. - Cap the walk (file-count and depth limits) so a pathological tree terminates the scan, not the machine.
How to verify a cleaner before running it
- Preview before delete. Any tool that deletes without first enumerating what will go is asking for blind trust. Run the scan; read the numbers per target folder.
- Deterministic scope. Run twice with no activity in between; the second scan should find nothing. Fluctuating results mean live-system files are in scope.
- Skipped ≠ failed. A healthy run reports some in-use files skipped. A log claiming zero in-use items on an active machine is fabricated.
The preview's cleaner implements exactly this catalog: four profile targets, a 24-hour age filter, attribute normalization before delete, per-file skips on contention, empty-folder pruning afterwards, and a scan-first / preview-first workflow with a running tally of what each target holds.