138 lines
4.8 KiB
PowerShell
138 lines
4.8 KiB
PowerShell
# Remove all manufacturer bloatware in one script - Silent mode with error suppression
|
|
# Run as Administrator
|
|
|
|
#Requires -RunAsAdministrator
|
|
|
|
$ErrorActionPreference = 'SilentlyContinue'
|
|
$ProgressPreference = 'SilentlyContinue'
|
|
|
|
# All bloatware patterns for HP, Lenovo, ASUS, Dell
|
|
$BloatwarePatterns = @(
|
|
# HP
|
|
'HP.*Support.*Assistant', 'HP.*Alerts', 'HPControlledShutdown', 'HP.*Cloud.*Recover',
|
|
'HP.*Client.*Services', 'HP.*Quickdrop', 'HP.*Photo.*Creations', 'HP.*Security.*Update',
|
|
'HPIASystemAgent', 'HP.*Wireless.*Assistant', 'HP.*Print.*Library',
|
|
|
|
# Lenovo
|
|
'Lenovo.*Settings', 'Lenovo.*Vantage', 'Lenovo.*Companion', 'Lenovo.*PowerManagement',
|
|
'Lenovo.*SystemUpdate', 'Lenovo.*UltraCharger', 'Lenovo.*Battery', 'Lenovo.*Nerve',
|
|
'Lenovo.*FusionEngine', 'LenovoLauncher', 'LenovoEasyCamera',
|
|
|
|
# ASUS
|
|
'ASUS.*Live.*Update', 'ASUS.*WebStorage', 'ASUS.*Gamer.*OSD', 'ASUS.*Ambient',
|
|
'ASUS.*FX', 'ASUS.*Splendid', 'ASUS.*Smart.*Gesture', 'ASUS.*Safe.*Face',
|
|
'ASUS.*Keyboard', 'ASUS.*Touchpad', 'ASUS.*Turbo', 'ASUS.*GameVisual',
|
|
|
|
# Dell
|
|
'Dell.*Update', 'DellSystemDetect', 'DellClientManagementService', 'Dell.*Backup',
|
|
'Dell.*Dock', 'Dell.*Display.*Manager', 'Dell.*Easy.*Access', 'Dell.*Foundation.*Services',
|
|
'Dell.*SupportAssist', 'Dell.*Optimizer'
|
|
)
|
|
|
|
# Manufacturer-specific services to disable
|
|
$BloatServices = @(
|
|
# HP
|
|
'hpsysdrv', 'HPDrvMaintSvc',
|
|
|
|
# Lenovo
|
|
'LenovoCOMSvc', 'LenovoUpdate', 'LenovoWifiDisplayService', 'lolmsvc', 'LenovoEasyPlus',
|
|
|
|
# ASUS
|
|
'ASUSLinkNear', 'ASUSLinkRemote', 'ASUSWebStorage', 'ASUSGiftBox', 'ArmouryCrate', 'asComSvc',
|
|
|
|
# Dell
|
|
'DellClientManagementService', 'DellSystemDetect', 'DSAService', 'DellDataTransport', 'DellSSDMonitor'
|
|
)
|
|
|
|
# Uninstall via WMI
|
|
Write-Host "[*] Removing via WMI..." -ForegroundColor Cyan
|
|
foreach ($pattern in $BloatwarePatterns) {
|
|
try {
|
|
$apps = Get-WmiObject -Class Win32_Product -Filter "Name LIKE '$pattern'" -ErrorAction SilentlyContinue
|
|
foreach ($app in $apps) {
|
|
$app.Uninstall() | Out-Null
|
|
}
|
|
} catch { }
|
|
}
|
|
|
|
# Remove AppxPackages
|
|
Write-Host "[*] Removing AppxPackages..." -ForegroundColor Cyan
|
|
$Manufacturers = @('*HP*', '*Lenovo*', '*ASUS*', '*Dell*')
|
|
foreach ($mfg in $Manufacturers) {
|
|
try {
|
|
Get-AppxPackage -Name $mfg -AllUsers -ErrorAction SilentlyContinue | Remove-AppxPackage -AllUsers
|
|
} catch { }
|
|
}
|
|
|
|
# Disable and stop services
|
|
Write-Host "[*] Disabling services..." -ForegroundColor Cyan
|
|
foreach ($service in $BloatServices) {
|
|
try {
|
|
$svc = Get-Service -Name $service -ErrorAction SilentlyContinue
|
|
if ($svc) {
|
|
Stop-Service -Name $service -Force
|
|
Set-Service -Name $service -StartupType Disabled
|
|
}
|
|
} catch { }
|
|
}
|
|
|
|
# Remove scheduled tasks
|
|
Write-Host "[*] Removing scheduled tasks..." -ForegroundColor Cyan
|
|
foreach ($mfg in @('HP', 'Lenovo', 'ASUS', 'Dell')) {
|
|
try {
|
|
Get-ScheduledTask -TaskPath "*$mfg*" -ErrorAction SilentlyContinue | Unregister-ScheduledTask -Confirm:$false
|
|
} catch { }
|
|
}
|
|
|
|
# Clean registry
|
|
Write-Host "[*] Cleaning registry..." -ForegroundColor Cyan
|
|
$RegPaths = @(
|
|
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*HP*',
|
|
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*Lenovo*',
|
|
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*ASUS*',
|
|
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*Dell*',
|
|
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\*HP*',
|
|
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\*Lenovo*',
|
|
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\*ASUS*',
|
|
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\*Dell*',
|
|
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\*HP*',
|
|
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\*Lenovo*',
|
|
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\*ASUS*',
|
|
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\*Dell*'
|
|
)
|
|
|
|
foreach ($path in $RegPaths) {
|
|
try {
|
|
Remove-Item -Path $path -Force -Recurse
|
|
} catch { }
|
|
}
|
|
|
|
# Remove installation directories
|
|
Write-Host "[*] Removing installation directories..." -ForegroundColor Cyan
|
|
$Directories = @(
|
|
'C:\Program Files\HP',
|
|
'C:\Program Files (x86)\HP',
|
|
'C:\Program Files\Hewlett-Packard',
|
|
'C:\Program Files (x86)\Hewlett-Packard',
|
|
'C:\Program Files\Lenovo',
|
|
'C:\Program Files (x86)\Lenovo',
|
|
'C:\ProgramData\Lenovo',
|
|
'C:\Program Files\ASUS',
|
|
'C:\Program Files (x86)\ASUS',
|
|
'C:\ProgramData\ASUS',
|
|
'C:\Program Files\Dell',
|
|
'C:\Program Files (x86)\Dell',
|
|
'C:\ProgramData\Dell',
|
|
'C:\ProgramData\SupportAssist'
|
|
)
|
|
|
|
foreach ($dir in $Directories) {
|
|
try {
|
|
if (Test-Path $dir) {
|
|
Remove-Item -Path $dir -Recurse -Force
|
|
}
|
|
} catch { }
|
|
}
|
|
|
|
Write-Host "[+] All bloatware removal complete." -ForegroundColor Green
|