Как запретить встроенным приложениям Windows 10 сбрасывать ассоциации к значениям по умолчанию

Как запретить встроенным приложениям Windows 10 сбрасывать ассоциации к значениям по умолчанию

Уже давно подмечено, что после установки накопительных обновлений Windows 10 операционная система перенастраивает некоторые штатные приложения таким образом, что они начинают использоваться по умолчанию даже если до этого они были замены сторонними программами. В частности, это происходит с Edge, Фотографиями и Почтой. Причина такого поведения Windows, однако, заключается не столько в обновлениях, столько в самом механизме настройки файловых ассоциаций.

Когда вы делаете программу используемой по умолчанию, система записывает в реестр специальное значение, указывающее, что данная ассоциация выставлена именно пользователем, а никаким либо другим приложением. Таким образом Windows защищается от вредоносного программного обеспечения, изменяющего ассоциации файлов без ведома пользователя. В Windows 10 этот механизм, по всей видимости, еще не доработан, и когда система обнаруживает несоответствие записанного в реестр значения с исходным, то тут же сбрасывает ассоциации на используемые по умолчанию, а пользователь при этом получает соответствующее оповещение.

Впрочем, приложив немного усилий, самопроизвольный сброс ассоциаций можно предотвратить. Для начала желательно узнать версию проблемного, то есть восстанавливаемого по умолчанию приложения, так будет легче искать нужное значение в реестре. Проще всего это сделать, выполнив в запущенной от имени администратора консоли PowerShell команду Get-AppxPackage > C:/appsna.txt.

Как запретить встроенным приложениям Windows 10 сбрасывать ассоциации к значениям по умолчанию

В результате вы получите текстовый файл со списком универсальных приложений. Допустим, нужно запретить сброс ассоциаций для Microsoft Edge. Находим в списке браузер Edge и смотрим его полное имя (PackageFullName).

Как запретить встроенным приложениям Windows 10 сбрасывать ассоциации к значениям по умолчанию

В нашем примере это Microsoft.MicrosoftEdge_25.10586.0.0_neutral__8wekyb3d8bbwe. Далее командой regedit открываем редактор реестра и разворачиваем следующую ветку:

HKEY_CURRENT_USER/SOFTWARE/Classes/Local Settings/Software/Microsoft/Windows/CurrentVersion/AppModel/Repository/Packages/XXXXX/ MicrosoftEdge/Capabilities/FileAssociations

На место XXXXX подставляем полное имя приложения. Также обратите внимание, что для других приложений элемент ключа «MicrosoftEdge» выглядит как App, кроме того, полные имена большинства универсальных приложений вместо приставки neutral имеют суффикс x64 или x86 в зависимости от разрядности вашей системы. Например, ключ приложения Фотографии будет выглядеть так:

HKEY_CURRENT_USER/Software/Classes/Local Settings/Software/Microsoft/Windows/CurrentVersionAppModel/RepositoryPackages/Microsoft.Windows.Photos_16.201.11370.0_x86__8wekyb3d8bbwe/App/Capabilities/FileAssociations

Как запретить встроенным приложениям Windows 10 сбрасывать ассоциации к значениям по умолчанию

В любом случае в подразделе FileAssociations в правой части окна редактора вам нужно найти тип файла, ассоциации которого сбрасываются. На примере с Edge это HTML, HTM, PDF, SVG и XML. Посмотрите его значение, а затем разверните ветку HKEY_CURRENT_USER/SOFTWARE/Classes/User_Key, где User_Key — подсмотренное вами значение. У нас это AppX4hxtad77fbk3jkkeerkrm0ze94wjf3s9. То есть ключ будет выглядеть так:

HKEY_CURRENT_USER/SOFTWARE/ClassesAppX4hxtad77fbk3jkkeerkrm0ze94wjf3s9

Как запретить встроенным приложениям Windows 10 сбрасывать ассоциации к значениям по умолчанию

Создайте в подразделе с этим длинным именем новый строковый параметр с именем NoOpenWith и пустым значением.

Как запретить встроенным приложениям Windows 10 сбрасывать ассоциации к значениям по умолчанию

Ту же самую операцию повторите для других файловых расширений и универсальных приложений, которые становятся используемыми по умолчанию. Ключи Windows приложений вы найдете в ветке HKEY_CURRENT_USER/SOFTWARE/Classes/Local Settings/Software/Microsoft/Windows/CurrentVersion/AppModel/Repository/Packages, полное же имя конкретной программы можно получить из PowerShell. После внесения изменений останется лишь еще раз установить сторонние программы используемыми по умолчанию. Больше настройки сбиваться не будут.