Files
Windows-Admin-Scripts/RemoveHKLMPrinters.ps1
2026-01-14 10:27:34 -06:00

50 lines
1.2 KiB
PowerShell

$profileListKey = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList'
$sids = Get-ChildItem $profileListKey
$printerPaths = @(
'\Printers\Connections',
'\Printers\ConvertUserDevModesCount',
'\Software\Xerox\PrinterDriver',
'\Software\Microsoft\Windows NT\CurrentVersion\Devices'
)
$HKLMPrinterPaths = @(
'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Providers',
'HKEY_LOCAL_MACHINE\SOFTWARE\Xerox\PrinterDriver'
)
net stop spooler
foreach ($printerPath in $HKLMPrinterPaths) {
try {
Remove-Item -Path "Registry::$printerPath" -Recurse -Force -ErrorAction Stop
} catch {
Write-Host "Error: $($_.Exception.Message)"
}
}
foreach ($sidKey in $sids) {
$sid = $sidKey.PSChildName
$profilePath = (Get-ItemProperty -Path $sidKey.PSPath -Name ProfileImagePath).ProfileImagePath
foreach ($printerPath in $printerPaths) {
try {
Remove-Item -Path "Registry::HKEY_USERS\$sid$printerPath" -Recurse -Force -ErrorAction Stop
} catch {
Write-Host "Error: $($_.Exception.Message)"
}
}
if (-not $mounted) {
$unloadResult = & reg.exe unload "HKU\$sid" 2>&1
}
}
net start spooler
gpupdate /force