TGViewer
Windows 11, 10, etc - Вадим Стеркин Windows 11, 10, etc - Вадим Стеркин @sterkin_ru · 15.6K subscribers
Post #1912 8.44K
​⚙️ Зачистка меню "Открыть с помощью" от хвостов удалённого приложения и массовая смена файловых ассоциаций

Я удалил приложение nomacs для просмотра картинок и обнаружил в меню "Открыть с помощью" две проблемы:
1. Приложение осталось вверху списка в качестве дефолтного.
2. Для других приложений отсутствовала кнопка Always, чтобы всегда открывать в них.

Можно пойти в Параметры - Приложения и задать для нужных графических форматов желаемую программу. Но у картинок множество типов, и никогда не знаешь, какой понадобится послезавтра. Каждый раз лезть в Параметры не хочется. Да и сам факт мусора неприятен. Вот как я это решал.

🧹 1. Отмена регистрации приложения для типов файлов

Это приложение прописалось в разделе реестра HKCU\Software\Classes, создав для каждого типа графических файлов подраздел вида \nomacs.png.3. Если удалить разделы программы из классов, приложение не будет предлагаться в качестве дефолтного для Open with.

Задача решается перебором в скрипте #PowerShell (в командах удаления добавлен параметр -WhatIf для страховки от стрельбы в ногу :)

$classesPath = "HKCU:\Software\Classes"
$appKeys = Get-ChildItem -Path $classesPath | Where-Object { $_.PSChildName -like "nomacs.*" }

if ($appKeys) {
foreach ($key in $appKeys) {
Write-Host "Deleting class key: $($key.Name)" -ForegroundColor Yellow
Remove-Item -Path $key.PsPath -Recurse -Force -ErrorAction SilentlyContinue -WhatIf
}
}


🪚 2. Удаление пользовательских ассоциаций

Здесь сложнее. У каждого расширения в разделе реестра FileExts есть два подраздела:
• OpenWithProgids - ИД приложений, которые могут открывать тип файла
• UserChoice - выбор пользователя с ИД и хэшем приложения

Get-ChildItem HKCU:Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\

Hive: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png

Name Property
---- --------
OpenWithProgids nomacs.png.3 :
UserChoice ProgId : nomacs.png.3
Hash : fjmDvOs2rGo=

Здесь слева имена подразделов, справа - их параметров. Поэтому надо перебрать скриптом все подразделы, где эти параметры содержат записи о несуществующем приложении, и удалить их. Для экономии места я вынес скрипт в Pastebin.

🔬 Нюансы

Скрипты на перебор простенькие, создание таких я давно делегирую нейронке. Выдав скрипт, Gemini предупредила, что удаление из FileExts может не сработать. И тогда нужно запускать скрипт от имени SYSTEM или TrustedInstaller (TI) с помощью psexec от Sysinternals.

В моем случае параметры nomacs удалились без проблем. Хотя в целом нейронка права: там нельзя просто взять и удалить. Но есть нюанс © Её обходной путь тоже не сработает 😎

Во-первых, если вы запускаете редактор реестра от имени другой учётной записи, даже системной, то видите её раздел реестра HKCU, а не свой. Другими словами, ваших параметров там не будет. И, кстати, psexec не позволяет запускать исполняемые файлы от имени TI, хотя других вариантов полно.

Во-вторых, параметры в разделе FileExts защищены не столько посредством ACL (это можно было менять скриптом), сколько специальным драйвером UCPD, User Choice Protection Driver. Microsoft добавила его в 2024 году для дополнительной защиты файловых ассоциаций от изменений без ведома пользователя (подробнее: раз, два).

На это есть несколько обходных путей.

🪟 Встроенными средствами вы можете:

• войти в другую учётную запись или Windows RE и подключить в HKU ваш NTUSER.DAT (с корректировкой путей в скрипте, примерно так)

• временно изменить способ запуска службы UPCD, чтобы после перезагрузки ОС не активировался драйвер

🧰 Сторонняя утилита SetUserFTA позволяет сразу задать желаемые ассоциации.

Примеры:
• настройка png: setuserfta .png IrfanView.png
• импорт конфигурационного файла: setuserfta c:\file.cfg
И сам файл:
.png, IrfanView.png
.jpg, IrfanView.jpg
.jpeg, IrfanView.jpeg

Здесь создаётся новая связь с конкретным приложением. Причём в обход работающего драйвера UCPD ✌️
  • ❤ 33
  • 👍 17
  • 🔥 16
  • 👏 12
  • 👌 1
More from @sterkin_ru
  1. Oct 1, 2026⌛️ Об архивах OSZone и ценности сообщества ‌ Я в чате делился ссылкой на архивы OSZone, но…
  2. Oct 1, 2026Айдентити Конф 2026: новые правила безопасности доступа 7 октября в Москве пройдет Айденти…
  3. Sep 28, 2026⚙️ Как получить доступ к служебному разделу EFI, не изменяя его свойства ‌ Это продолжение…
  4. Sep 25, 2026☕️ Гадание на кофейной гуще: какая версия ОС у автора письма? Сегодня в рубрике "Вы нам пи…
  5. Sep 25, 2026Не застревайте в прошлом — учитесь новым навыкам и ИИ Чтобы успевать за требованиями рынка…
  6. Sep 21, 2026​🌐 Автоматическое переключение браузеров и их профилей на десктопе Сегодня речь про автоп…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →