Param ( [string]$ProductName="QSfera" ) <# .SYNOPSIS Cleans up leftover Windows VFS sync roots and CLSID entries. .DESCRIPTION Removes registry entries for specified product and test artifacts. WARNING: This script will restart Windows Explorer. .PARAMETER ProductName The product name to clean up. Defaults to "QSfera". .NOTES Requires Administrator privileges. #> # OC-TEST is used by our unit tests # https://github.com/MicrosoftDocs/winrt-api/issues/1130 $SyncRootManager = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager" $GetRootItem = Get-Item $SyncRootManager Get-ChildItem -Path $SyncRootManager | ForEach-Object { $name = $_.Name.Substring($GetRootItem.Name.Length + 1) if ($name.StartsWith("OC-TEST", [System.StringComparison]::CurrentCultureIgnoreCase) -or $name.StartsWith("$ProductName", [System.StringComparison]::CurrentCultureIgnoreCase)) { Write-Host "Removing sync root: ${name} `"${_}`"" Remove-Item -Recurse $_.PsPath } } Get-ChildItem -Path "HKCU:\Software\Classes\CLSID\" | ForEach-Object { $key = (get-itemproperty $_.PsPath)."(default)" if ($key) { if ($key.StartsWith("OC-TEST", [System.StringComparison]::CurrentCultureIgnoreCase) -or $key.StartsWith("$ProductName", [System.StringComparison]::CurrentCultureIgnoreCase)) { Write-Host "Removing: ${key} `"${_}`"" Remove-Item -Recurse $_.PsPath } } } Get-Process explorer | Stop-Process Pause