Коротко: ниже — «шаги за 2 минуты», а затем подробные способы: стандартное удаление, winget/PowerShell, полная чистка «хвостов», логирование MSI и удаление драйверов через pnputil.
Шаги за 2 минуты (чек-лист)
- Удалите программу: Параметры → Приложения → Удалить.
- Перезагрузите ПК.
- Проверьте автозапуск: Win+Shift+Esc → Автозагрузка → отключить хвосты.
- Очистите папки:
Program Files
,Program Files (x86)
,ProgramData
,%LOCALAPPDATA%
,%APPDATA%
. - Очистите
%temp%
. - При необходимости — скрипты PowerShell ниже (службы/задачи/реестр).
Что значит «полностью удалить»
Это убрать саму программу и её «хвосты»: папки в Program Files/AppData/ProgramData, записи в реестре, задачи Планировщика, службы, драйверы и элементы автозапуска.
Плюсы
- [+] Больше свободной памяти и диска, быстрее запуск системы.
- [+] Меньше конфликтов при переустановке новой версии.
- [+] Чище контекстные меню и автозапуск.
Минусы
- [–] Нужны права администратора и внимательность.
- [–] Ручная чистка занимает время.
- [–] Ошибочное удаление ключей реестра может вызвать проблемы (делайте точку восстановления!).
Системные требования
- ОС: Windows 10/11.
- Права: локальный администратор.
- Диск: 200–500 МБ свободно.
- Зависимости (опционально): интернет; Windows Package Manager (winget).
Шаг-за-шагом: базовое удаление + чистка «хвостов»
- Стандартное удаление.
Windows 11: Параметры → Приложения → Установленные приложения → найти программу → Удалить.
Windows 10: Параметры → Приложения → Приложения и возможности → Удалить. - Перезагрузка. Драйверы/службы выгружаются после рестарта.
- Проверьте автозапуск. Win+Shift+Esc → Диспетчер задач → Автозагрузка.
- Удалите папки программы.
C:\Program Files\
,C:\Program Files (x86)\
,C:\ProgramData\
,%LOCALAPPDATA%
,%APPDATA%
. - Почистите временные файлы. Win+R →
%temp%
. - Задачи и службы. Планировщик → удалить задачи;
services.msc
→ остановить/отключить службу. - Реестр (аккуратно!). Создайте точку восстановления.
Проверьте:HKCU\Software\{Издатель/Программа}
,HKLM\SOFTWARE\{Издатель/Программа}
,HKLM\...\Uninstall\{…}
. - Перезагрузка №2.
Через командную строку: winget и PowerShell
winget list "Имя программы"
winget uninstall --id Publisher.App --silent
# либо по названию
winget uninstall "Имя программы"
# PowerShell (примеры)
Get-Package *имя* | Uninstall-Package -Force
Get-AppxPackage *имя* | Remove-AppxPackage
На картинке ниже я вывел название программ с помощью команды: winget list.
Далее набрал winget uninstall AIMP.
MSI‑логирование деинсталляции
Если программа ставилась через MSI, можно включить подробный лог и понять, где ломается удаление.
msiexec /x {PRODUCT-CODE-GUID} /L*v C:\Temp\uninstall.log
Как найти {PRODUCT-CODE-GUID}: в реестре HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
и HKLM\SOFTWARE\WOW6432Node\...\Uninstall
по DisplayName
; либо через Get-WmiObject Win32_Product
(помните, что Win32_Product может инициировать проверку установок — используйте осторожно).
Удаление драйверов из хранилища (осторожно!)
pnputil /enum-drivers
pnputil /delete-driver oemXX.inf /uninstall /force
Удаляйте только драйверы, относящиеся к вашей программе. Перед действием — точка восстановления.
Готовые скрипты PowerShell (продвинутая очистка)
Важно: запускайте PowerShell от имени администратора. Перед чисткой создайте точку восстановления.
1) Создать точку восстановления
# Может требовать включённой "Защиты системы" для диска C:
Enable-ComputerRestore -Drive "C:\"
Checkpoint-Computer -Description "Before-App-Cleanup" -RestorePointType "MODIFY_SETTINGS"
2) Функция удаления по имени (MSI/EXE через UninstallString)
param([Parameter(Mandatory=$true)][string]$Name)
$paths = @(
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*'
)
$apps = foreach($p in $paths){
Get-ItemProperty $p -ErrorAction SilentlyContinue | Where-Object { $_.DisplayName -like "*$Name*" }
}
foreach($app in $apps){
$cmd = if($app.QuietUninstallString){ $app.QuietUninstallString } else { $app.UninstallString }
if(-not $cmd){ continue }
Write-Host "Удаление: $($app.DisplayName)"
if($cmd.StartsWith('"')){
$parts = $cmd -split '"', 3
$exe = $parts[1]; $args = $parts[2]
} else {
$parts = $cmd -split '\s+', 2
$exe = $parts[0]; $args = if($parts.Count -gt 1){$parts[1]} else {""}
}
Start-Process -FilePath $exe -ArgumentList $args -Verb RunAs -Wait
}
3) Массовое удаление через winget (по ID)
$packages = @(
'OBSProject.OBSStudio',
'VideoLAN.VLC'
)
foreach($id in $packages){
winget uninstall --id $id --silent --accept-source-agreements --accept-package-agreements
}
4) Удаление UWP/Store-приложений (включая предустановку)
# Удалить установленный пакет для текущего пользователя
Get-AppxPackage *имя* | Remove-AppxPackage
# Удалить "provisioned" пакет из образа (для новых пользователей)
Get-AppxProvisionedPackage -Online | Where-Object {$_.DisplayName -like "*имя*"} | Remove-AppxProvisionedPackage -Online
5) Очистка «хвостов» по вендору/имени (папки)
$vendor = "VendorOrApp"
$paths = @(
"$env:ProgramFiles\$vendor",
"${env:ProgramFiles(x86)}\$vendor",
"$env:ProgramData\$vendor",
"$env:LOCALAPPDATA\$vendor",
"$env:APPDATA\$vendor"
)
foreach($p in $paths){
if(Test-Path $p){
Write-Host "Удаляю $p"
Remove-Item $p -Recurse -Force -ErrorAction SilentlyContinue
}
}
6) Остановка/отключение служб программы
$pattern = "Vendor|AppName"
Get-Service | Where-Object { $_.DisplayName -match $pattern -or $_.Name -match $pattern } | ForEach-Object {
try { Stop-Service $_ -Force -ErrorAction Stop } catch {}
Set-Service $_ -StartupType Disabled
}
7) Удаление задач Планировщика
$pattern = "Vendor|AppName"
Get-ScheduledTask | Where-Object {
$_.TaskName -match $pattern -or $_.Author -match $pattern
} | ForEach-Object {
Unregister-ScheduledTask -TaskName $_.TaskName -Confirm:$false
}
8) Чистка автозапуска (Run/RunOnce)
$runKeys = @(
'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run',
'HKLM:\Software\Microsoft\Windows\CurrentVersion\Run',
'HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Run'
)
$pattern = 'Vendor|AppName'
foreach($rk in $runKeys){
$props = (Get-ItemProperty $rk)
$props.PSObject.Properties | Where-Object {
$_.MemberType -eq 'NoteProperty' -and ($_.Value -match $pattern)
} | ForEach-Object {
Write-Host "Удаляю автозапуск '$($_.Name)' из $rk"
Remove-ItemProperty -Path $rk -Name $_.Name -Force
}
}
Сравнение подходов
- Встроенные средства Windows — безопасно, минимум риска; иногда остаются «хвосты».
- Revo/Geek/HiBit/BCUninstaller — находят остатки, поддерживают «тихую» массовую деинсталляцию; будьте внимательны при удалении ключей.
- winget/PowerShell — автоматизация и скрипты; нужна базовая командная грамотность.
Честный опыт
Обычно достаточно стандартного удаления + чистки AppData/ProgramData. Winget хорош для серии программ. Сторонние деинсталляторы оставляю на «упёртые» кейсы. Всегда беру софт только с официальных сайтов.
FAQ
Программа не удаляется: «Файл занят». Закройте процесс, перезагрузите, при необходимости — Безопасный режим.
Запись осталась в «Установленных приложениях». Перезапустите «Параметры» или удалите ключ Uninstall (с осторожностью).
Можно ли откатиться? Да, если сделали точку восстановления.
Нужны «чистильщики реестра»? Необязательно; достаточно точечной ручной чистки.
Как удалить драйверы вместе с программой? В «Диспетчере устройств» удалите устройство с галочкой «Удалить программы драйверов для этого устройства».
Внутренние ссылки
Полезные ссылки (официальная документация)
Версия и актуальность
Версия: не применимо. Актуально на 2025 год. Обновлено: 02.10.2025.
Вывод
Начинайте со стандартного удаления, «хвосты» дочищайте вручную; для сложных случаев используйте winget или проверенный деинсталлятор. Для MSI и драйверов помогут логирование и pnputil.