Расширенный PowerShell-скрипт для удаления следов Dr.Web из реестра с логированием действий

PowerShell-скрипт с логированием для полной очистки Dr.Web из реестра, отображает ход выполнения и сохраняет лог на рабочем столе.

2025.05.22                      


Как использовать:

  • Скопируйте код в файл: Clean-DrWebRegistry.ps1
  • Запустите PowerShell от имени администратора

Выполните скрипт:

.\Clean-DrWebRegistry.ps1

Что делает скрипт:

  • Удаляет основные и скрытые ключи Dr.Web.
  • Сохраняет лог на рабочем столе: DrWeb_Cleanup_Log.txt.
  • Сообщает об успехе или ошибках при каждом действии.
  • После чего можно повторно и наново приступить к установки Dr.Web.


Исходник скрипта:

# ========================
# Dr.Web Registry Cleaner
# С логированием и обратной связью
# ========================

# Путь к лог-файлу
$LogFile = "$env:USERPROFILE\Desktop\DrWeb_Cleanup_Log.txt"

# Запись в лог
function Write-Log {
    param([string]$Message)
    $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    $entry = "$timestamp - $Message"
    Write-Output $entry
    Add-Content -Path $LogFile -Value $entry
}

# Удаление ключа, если найден
function Remove-RegistryKeyIfExists {
    param (
        [string]$Path
    )
    if (Test-Path $Path) {
        try {
            Remove-Item -Path $Path -Recurse -Force -ErrorAction Stop
            Write-Log "Удален ключ: $Path"
        }
        catch {
            Write-Log "Ошибка при удалении $Path: $_"
        }
    } else {
        Write-Log "Ключ не найден: $Path"
    }
}

# Заголовок
Write-Log "=== Начало очистки Dr.Web из реестра ==="

# Основные ключи
$keysToRemove = @(
    "HKLM:\SOFTWARE\Doctor Web",
    "HKCU:\Software\Doctor Web",
    "HKLM:\SYSTEM\CurrentControlSet\Services\dwprot",
    "HKLM:\SYSTEM\CurrentControlSet\Services\dwengine",
    "HKLM:\SYSTEM\CurrentControlSet\Services\dwwatcher",
    "HKLM:\SYSTEM\CurrentControlSet\Services\drwebfw"
)

# Удаление стандартных ключей
foreach ($key in $keysToRemove) {
    Remove-RegistryKeyIfExists -Path $key
}

# Поиск по шаблону в SOFTWARE
Write-Log "Поиск ключей с 'DrWeb' в HKLM:\SOFTWARE..."
try {
    $foundKeys = Get-ChildItem -Path "HKLM:\SOFTWARE" -Recurse -ErrorAction SilentlyContinue |
        Where-Object { $_.Name -match "DrWeb|Doctor Web" }

    foreach ($foundKey in $foundKeys) {
        Remove-RegistryKeyIfExists -Path $foundKey.PSPath
    }
}
catch {
    Write-Log "Ошибка при поиске в SOFTWARE: $_"
}

Write-Log "=== Очистка завершена. Перезагрузите систему. ==="

# Финальное сообщение
Write-Output "`nОчистка завершена. Подробности см. в логе: $LogFile"