Notepad++ замість Блокнота: Повна заміна за 1 клік (PowerShell)

  • від

Ви коли-небудь відкривали лог-файл на 500 МБ у стандартному блокноті Windows, щоб спостерігати, як система зависає? Або, можливо, вас дратує відсутність підсвічування синтаксису, коли треба швидко виправити конфіг?

Notepad++ — це стандарт де-факто для інженерів та розробників. Але Windows (особливо Windows 11) наполегливо намагається підсунути вам свій “сучасний” UWP Блокнот.

Сьогодні я поділюся **агресивним PowerShell-скриптом**, який робить Notepad++ системним редактором за замовчуванням раз і назавжди.

Що робить цей скрипт?

Більшість інструкцій в інтернеті пропонують вручну правити реєстр або натискати “Відкрити за допомогою…”. Цей скрипт робить все автоматично і набагато глибше:

1. **Вбиває процеси:** Примусово закриває всі вікна `notepad.exe`.
2. **Встановлює Notepad++:** Якщо редактор не знайдено, скрипт сам завантажить і встановить його через `winget` (офіційний менеджер пакетів Windows).
3. **Перехоплює запуск (IFEO):** Використовує механізм *Image File Execution Options*. Коли Windows намагається запустити `notepad.exe`, реєстр перенаправляє команду на `notepad++.exe`.
4. **Чистить Windows 11:** Видаляє “сучасний” UWP додаток Microsoft Notepad та знімає блокування “Execution Alias”, які часто заважають підміні.
5. **Контекстне меню:** Додає пункт “Edit with Notepad++” для всіх файлів.

Скрипт (Ultimate Notepad Replacer)

Збережіть цей код у файл з назвою `ReplaceNotepad.ps1`.

<# ============================================================================== TITANIUM: NOTEPAD++ REPLACER (v3.0) Повна інтеграція Notepad++ замість системного notepad.exe ============================================================================== #>

# [0] ПЕРЕВІРКА ПРАВ АДМІНІСТРАТОРА
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] “Administrator”)) {
Write-Host “Потрібні права адміністратора! Перезапуск…” -ForegroundColor Yellow
Start-Process powershell.exe “-NoProfile -ExecutionPolicy Bypass -File `”$PSCommandPath`”” -Verb RunAs
Exit
}

Write-Host “— TITANIUM NOTEPAD REPLACER —” -ForegroundColor Magenta

# [1] ОЧИЩЕННЯ ПРОЦЕСІВ
Stop-Process -Name “notepad” -Force -ErrorAction SilentlyContinue

# [2] ПОШУК АБО ВСТАНОВЛЕННЯ NOTEPAD++
Write-Host “[1/4] Перевірка Notepad++…” -ForegroundColor Yellow
$nppPath = “C:\Program Files\Notepad++\notepad++.exe”
if (-not (Test-Path $nppPath)) { $nppPath = “C:\Program Files (x86)\Notepad++\notepad++.exe” }

if (-not (Test-Path $nppPath)) {
Write-Host ” -> Не знайдено. Встановлення через Winget…” -ForegroundColor Cyan
try {
winget install Notepad++.Notepad++ –silent –accept-package-agreements –accept-source-agreements –force
Start-Sleep -Seconds 5
if (Test-Path “C:\Program Files\Notepad++\notepad++.exe”) { $nppPath = “C:\Program Files\Notepad++\notepad++.exe” }
} catch {
Write-Host “ПОМИЛКА: Встановіть Notepad++ вручну.” -ForegroundColor Red; Exit
}
}

# [3] РЕЄСТР IFEO (ПЕРЕХОПЛЕННЯ)
Write-Host “[2/4] Налаштування перехоплення (IFEO)…” -ForegroundColor Yellow
$regKey = “HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe”
if (-not (Test-Path $regKey)) { New-Item -Path $regKey -Force | Out-Null }
# Магічні параметри: -notepadStyleCmdline (сумісність) і -z (ігнорувати відсутність файлу)
Set-ItemProperty -Path $regKey -Name “Debugger” -Value “`”$nppPath`” -notepadStyleCmdline -z” -Force

# [4] WINDOWS 11 FIXES (UWP & ALIAS)
Write-Host “[3/4] Видалення UWP Блокнота (Windows 11)…” -ForegroundColor Yellow
Get-AppxPackage *Microsoft.WindowsNotepad* -AllUsers | Remove-AppxPackage -AllUsers -ErrorAction SilentlyContinue
# Вимкнення Alias
$aliasKey = “HKCU:\Software\Microsoft\Windows\CurrentVersion\App Paths\notepad.exe”
if (-not (Test-Path $aliasKey)) { New-Item -Path $aliasKey -Force | Out-Null }
Set-ItemProperty -Path $aliasKey -Name “(Default)” -Value $nppPath -Force

# [5] КОНТЕКСТНЕ МЕНЮ
New-Item -Path “HKCR:\*\shell\Notepad++\command” -Force | Out-Null
Set-ItemProperty -Path “HKCR:\*\shell\Notepad++” -Name “(Default)” -Value “Edit with Notepad++” -Force
Set-ItemProperty -Path “HKCR:\*\shell\Notepad++” -Name “Icon” -Value $nppPath -Force
Set-ItemProperty -Path “HKCR:\*\shell\Notepad++\command” -Name “(Default)” -Value “`”$nppPath`” `”%1`”” -Force

Write-Host “[4/4] Готово! Спробуйте відкрити будь-який текстовий файл.” -ForegroundColor Green
Start-Sleep -Seconds 3

Як запустити?

1. Скопіюйте код вище.
2. Створіть новий текстовий файл і назвіть його `ReplaceNotepad.ps1`.
3. Натисніть на файл правою кнопкою миші та виберіть **”Run with PowerShell”** (Запустити за допомогою PowerShell).
4. Погодьтеся на надання прав Адміністратора.

Чому це краще, ніж “Відкрити за допомогою”?

Коли ви використовуєте стандартне меню “Відкрити за допомогою”, Windows все одно іноді скидає асоціації після оновлень. Крім того, деякі системні файли або скрипти, які жорстко викликають `notepad.exe`, все одно відкриються у стандартному блокноті.

Метод **IFEO (Image File Execution Options)**, використаний у цьому скрипті, працює на рівні ядра системи. Windows *думає*, що запускає `notepad.exe`, але насправді передає керування `notepad++.exe` через налагоджувальний інтерфейс. Це найнадійніший метод заміни на сьогодні.

Маєте питання або скрипт видав помилку? Пишіть у коментарях!