Вопрос или проблема
Мне нужно обновить файлы по умолчанию на нескольких машинах с Windows 11, используя Dism /Online /Export-DefaultAppAssociations
и Import-DefaultAppAssociations
, и я могу сделать это легко. Но нет, DISM делает все плохо, экспортируя он возвращает очень маленький список, в основном только Edge для всех типов файлов:
<?xml version="1.0" encoding="UTF-8"?>
<DefaultAssociations>
<Association Identifier=".cab" ProgId="CABFolder" ApplicationName="Проводник Windows" />
<Association Identifier=".htm" ProgId="MSEdgeHTM" ApplicationName="Microsoft Edge" />
<Association Identifier=".html" ProgId="MSEdgeHTM" ApplicationName="Microsoft Edge" />
<Association Identifier=".mht" ProgId="MSEdgeMHT" ApplicationName="Microsoft Edge" />
<Association Identifier=".mhtml" ProgId="MSEdgeMHT" ApplicationName="Microsoft Edge" />
<Association Identifier=".MP2" ProgId="WMP11.AssocFile.MP3" ApplicationName="Windows Media Player Legacy" />
<Association Identifier=".pdf" ProgId="MSEdgePDF" ApplicationName="Microsoft Edge" />
<Association Identifier=".svg" ProgId="MSEdgeHTM" ApplicationName="Microsoft Edge" />
<Association Identifier=".tif" ProgId="PhotoViewer.FileAssoc.Tiff" ApplicationName="Просмотрщик фотографий Windows" />
<Association Identifier=".tiff" ProgId="PhotoViewer.FileAssoc.Tiff" ApplicationName="Просмотрщик фотографий Windows" />
<Association Identifier=".url" ProgId="InternetShortcut" ApplicationName="Интернет-браузер" />
<Association Identifier=".xht" ProgId="MSEdgeHTM" ApplicationName="Microsoft Edge" />
<Association Identifier=".xhtml" ProgId="MSEdgeHTM" ApplicationName="Microsoft Edge" />
<Association Identifier=".zip" ProgId="CompressedFolder" ApplicationName="Проводник Windows" />
<Association Identifier="ftp" ProgId="MSEdgeHTM" ApplicationName="Microsoft Edge" />
<Association Identifier="http" ProgId="MSEdgeHTM" ApplicationName="Microsoft Edge" />
<Association Identifier="https" ProgId="MSEdgeHTM" ApplicationName="Microsoft Edge" />
<Association Identifier="microsoft-edge" ProgId="MSEdgeHTM" ApplicationName="Microsoft Edge" />
<Association Identifier="microsoft-edge-holographic" ProgId="MSEdgeHTM" ApplicationName="Microsoft Edge" />
<Association Identifier="ms-xbl-3d8b930f" ProgId="MSEdgeHTM" ApplicationName="Microsoft Edge" />
<Association Identifier="read" ProgId="MSEdgeHTM" ApplicationName="Microsoft Edge" />
</DefaultAssociations>
По какой-то загадочной причине dism /online /Get-DefaultAppAssociations
возвращает совершенно другой список, который гораздо длиннее и на самом деле выглядит как нечто:
<?xml version="1.0" encoding="UTF-8"?>
<DefaultAssociations>
<Association Identifier=".3g2" ProgId="AppXqj98qxeaynz6dv4459ayz6bnqxbyaqcs" ApplicationName="Медиа плеер" OverwriteOnVersionMax="44" OverwriteIfProgIdIs="AppX6eg8h5sxqq90pv53845wmnbewywdqq5h;AppXhjhjmgrfm2d7rd026az898dy2p1pcsyt;WMP11.AssocFile.3G2" />
...
<Association Identifier=".orf" ProgId="AppX9rkaq77s0jzh1tyccadx9ghba15r6t3h" ApplicationName="Фото" OverwriteOnVersionMax="48" OverwriteIfProgIdIs="AppX9vdwcvrwnbettpahnt26jswq0n8hgyah;AppX43hnxtbyyps62jhe9sqpdzxn1790zetc;Paint.Paint;Microsoft.PhotoManager.imagetype" />
<Association Identifier=".oxps" ProgId="Windows.XPSReachViewer" ApplicationName="Просмотрщик XPS" OverwriteOnVersionMax="1" OverwriteIfProgIdIs="AppX86746z2101ayy2ygv3g96e4eqdf8r99j" />
<Association Identifier=".pdf" ProgId="MSEdgePDF" ApplicationName="Microsoft Edge" OverwriteOnVersionMax="1" OverwriteIfProgIdIs="AppXk660crfh0gw7gd9swc1nws708mn7qjr1;AppX86746z2101ayy2ygv3g96e4eqdf8r99j" />
<Association Identifier=".pef" ProgId="AppX9rkaq77s0jzh1tyccadx9ghba15r6t3h" ApplicationName="Фото" OverwriteOnVersionMax="48" OverwriteIfProgIdIs="AppX9vdwcvrwnbettpahnt26jswq0n8hgyah;AppX43hnxtbyyps62jhe9sqpdzxn1790zetc;Paint.Paint;Microsoft.PhotoManager.imagetype" />
...
Даже тогда вывод не имеет ничего общего с тем, что фактически используется Windows в текущей версии, посмотрите, например, на .pdf: Edge в экспорте, Chrome на самом деле.
Как заставить DISM действительно выполнять свою работу или использовать другой инструмент, который будет работать в командной строке для этой задачи?
Ответ или решение
Обновление стандартных ассоциаций файлов в Windows 11 с использованием DISM: решение проблемы
Вопрос, который вы подняли о проблемах с утилитой DISM, действительно важен для системных администраторов и IT-специалистов, особенно когда дело доходит до управления файлами и программами по умолчанию в Windows 11. Рассмотрим подробнее, как правильно использовать инструменты DISM и возможные альтернативные способы решения вашей задачи.
Уточнение проблемы
Вы правильно заметили, что команды Dism /Online /Export-DefaultAppAssociations
и Dism /Online /Import-DefaultAppAssociations
имеют определенные ограничения. Основная проблема заключается в том, что при экспорте ассоциаций вы получаете ограниченный список с несколькими файлами, тогда как команда Dism /Online /Get-DefaultAppAssociations
возвращает гораздо более обширный список, содержащий множество различных расширений.
Природа ассоциаций файлов
Не все программные ассоциации, зарегистрированные в системе, могут быть вручную экспортированы или импортированы с использованием DISM. Некоторые ассоциации, такие как PDF, могут быть настроены пользователем или изменены сторонними приложениями, что приводит к неоднозначности в итоговом экспорте.
Возможные решения
-
Проверка прав доступа:
Убедитесь, что вы запускаете командную строку с правами администратора. Это часто может помочь устранить проблемы с отсутствием определённых ассоциаций файлов. -
Использование PowerShell:
PowerShell предоставляет более продвинутые возможности для работы с ассоциациями файлов. Вы можете использовать следующее:Get-ItemProperty HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\* | Select-Object *
Это позволит вам получить больше информации о текущих ассоциациях файлов.
-
Изменение ассоциаций вручную:
В случае, когда DISM не может выполнить свою задачу, рассмотрите возможность изменения ассоциаций файлов вручную через настройки Windows или с помощью команды в PowerShell:$fileType = ".pdf" $progId = "ChromeHTML" # Program to set $userChoicePath = "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\$fileType\UserChoice" Set-ItemProperty -Path $userChoicePath -Name ProgId -Value $progId
-
Использование сторонних инструментов:
Иногда возможно использование стороннего программного обеспечения или утилит для управления ассоциациями, таких как CCleaner или другие приложения, позволяющие графически изменять ассоциации файлов.
Заключение
Тем не менее, если вам необходимо автоматически применять стандартизированные ассоциации на нескольких машинах с Windows 11, вы можете рассмотреть создание сценариев PowerShell, которые позволят вам массово определять ассоциации файлов. Используйте вышеописанные методы, чтобы выяснить, как обстоит дело на ваших машинах, чтобы обеспечить правильную настройку ассоциаций файлов.
Сложности, которые вы испытываете с DISM, не редкость, и понимание их природы может помочь с решением. Использование комбинации DISM, PowerShell и возможности ручной настройки позволит вам добиться желаемых результатов в управлении ассоциациями файлов на вашей системе.