Настройка ассоциации файлов через групповую политику, за минуту
- Постановка задачи
- Настройка ассоциации файлов в GPO для Windows 7
- Настройка ассоциации файлов в GPO для Windows 10
- Дополнительные настройки для Windows 10
- Задание ассоциаций через XML файл в Windows 10
- Как изменить программу по умолчанию для нужного типа файлов в Windows 11/12 и Windows Server 2022
- Просмотр приложений по умолчанию по расширению через командную строку
- Как установить приложений по умолчанию для расширения через командную строку
- Как произвести экспорт и импорт ассоциаций приложений по умолчанию в Windows 11/12/2022 в XML-файл
- Настройка ассоциаций файлов по умолчанию с помощью групповой политики Windows
- Как сбросить все ассоциации файлов по умолчанию в Windows 10/11/12 и Windows Server
- Распространение файла ассоциаций по умолчанию с помощью SCCM
- Сопоставить ассоциации файлов через PowerShell
Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами успешно решили проблему, когда система не обнаружила VCRUNTIME140.dll, движемся дальше. Сегодня у меня на работе появилась задача, в массовом порядке для определенной группы людей настроить ассоциацию файлов через групповую политику, так чтобы она задала открытие файлов с расширением doc, docx, xls, xlsx с помощью браузера Google Chrome. Я вам расскажу с какими подводными камнями я столкнулся и, как я их смог обойти.
Постановка задачи
В виду перехода в облачные сервисы и переходу от локальных офисных продуктов Microsoft Office, необходимо настроить ассоциации файлов на рабочих станциях, так чтобы файлы Woed, Ecxel, Power Point и другие стали открываться в браузере Google Chrome, через специальное расширение "Редактирование файлов Office".
Редактирование файлов Office - это бесплатное расширение для Google Chrome в задачи которого входит оффлайн редактирование файлов из офисного набора Microsoft Office. Я уже заранее его распространил, через групповую политику. Так как у меня в организации свыше 1000 рабочих станций в домене Active Directory, то сами можете представить масштабы работы, которая ложится на плечи технической поддержки, и чтобы выполнить задачу максимально быстро и централизовано, было принято решение сделать политику GPO, что правильно в рамках домена. Хочу отметить, что в Windows 7, Windows 8,.1 и Windows 10 есть свои нюансы и своя конфигурация выполнения данной задачи.
Настройка ассоциации файлов в GPO для Windows 7
По статистике самой популярной операционной системой в мире является Windows 7, у меня в организации она занимает процентов 20-25 от общей массы. Я помнил как выглядела политика, поэтому решил начать именно с нее. Про ручную настройку ассоциаций файлов Windows я рассказывал и понимал какая, это монотонная работа, приятно что она решается буквально за минуту.
И так откройте оснастку "Управление групповой политикой" и создаете новую политику на нужном вам организационном подразделении. В моем случае, это OU "Client Computers". Щелкаем по ней правым кликом и выбираем "Создать объект групповой политики в этом домене и связать его с текущим подразделением"
Задаем название для GPO объекта в соответствии с правилами именования присущими вашему домену. Я задам имя "Настройка ассоциаций для офисных файлов".
Через правый клик по политике приступаем к ее редактированию.
Тут все настройки ассоциаций применимы, как к компьютерам так и на пользователей, все зависит от вашей структуры Active Directory. Лично я хочу, чтобы у меня настройки GPO были реализованы для пользователя, но применялись, только на определенных компьютерах, где пользователи работаю и данные настройки не применялись, когда человек заходит на терминальный сервер или другой сервер. В таких ситуациях применяется замыкание групповой политики, об этом я писал, в двух словах данная функциональность либо объединяет настройки компьютера и пользователя, или же компьютерными настройками пере затирает настройки пользователя в виду большей приоритетности.
Для Windows 7 ваша политика будет выглядеть вот так, вы раскрываете раздел для пользователя и переходите по пути:
Далее кликаете по пункту "Параметры папок" и из контекстного меню пройдите в меню "Создать - Открыть с помощью"
У вас откроется окно выбора программы. Произведите настройки:
- Пункт действие - Выставите "Обновить"
- Расширение - задайте нужное вам расширение, для которого вы хотите изменить программу по умолчанию в ассоциациях Windows
- Связанная программ - тут прописываем короткое имя программы или полный точный путь, у меня например, это chrome.exe или могло быть "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe", без кавычек. Короткое имя и полный путь вы можете посмотреть в свойствах вашей программы, которую вы хотите использовать для определенного расширения файлов.
- Установите галку "Использовать по умолчанию"
Сохраняем настройку и повторяем для других расширений, напоминаю в моем случае, это офисные форматы MS Word (doc, docx) и MS Excel (xls, xlsx).
В итоге у меня получилась такая картина. Если вы планируете применять политику с распространениями ассоциаций файлов через GPO на пользовательские учетные записи, то политика готова, если она предназначается на OU с компьютерами, то вам нужно еще включить политику замыкания.
Для этого раскройте уже раздел:
Находим тут параметр "Настройка режима обработки замыкания пользовательской групповой политики (Configure user Group Policy Loopback Processing mode)"
Переходим в политику. Вам нужно выбрать режим слияния в политике замыкания.Напоминаю:
- Режим слияния (Merge) - объединяет компьютерные настройки с пользовательскими. Политики компьютера добавляются в самом конце в список пользовательских, и если они не конфликтую, то они совмещаются. Если конфликтуют, то компьютерные настройки полностью перезаписывают конфликтные пункту в пользовательской части.
- Режим замены (Replace) - тут все проще, в данном режиме настройки пользователя полностью игнорируются и заменяются компьютерными.
Все выбрав режим слияния мы закончили создание групповой политики, которая перезапишет ассоциации файлов формата doc, docx, xls, xlsx и будет их открывать Google Chrome. У меня есть виртуальная машина ESXI с операционной системой Windows 7, где я недавно вылечил ошибку бесконечного обновления. На рабочем столе вы видите у меня 2 файла doc, 2 файла docx и два файла xls.
Чтобы на пользователя применилась политика ему нужно сделать выход из системы (Log Off) или перезагрузится. Для тестирования я принудительно через командную строку обновлю групповую политику.
Заново входим на компьютер с Windows 7 и видим, что все значки поменяли свой значок. Иногда у docx могут отсутствовать значки, но открываться они будут через Google Chrome.
Пробуем открыть любой из файлов и видим, что у нас открылся браузер Google Chrome с нужным расширением "Редактирование файлов Office"
Если политика не применилась, то выполните три пункта для диагностики:
- Через утилиту gpresult /r /scope:computer и потом gpresult /r /scope:user. Проверьте, что применилась политика
- Если политика не применилась, проверьте, что у вас в фильтрах GPO указана нудная группа со списком пользователей, к которым должна применяться политика, или это может быть группа "Прошедшие проверку", так же убедитесь, что у вас на вкладке "Делегирование" у группы "Компьютеры домена" или прошедшие проверку пользователи, имеют права на чтение политики.
- Если политика применилась, но ассоциации файлов не поменялись через политику, то попробуйте в нее еще добавить удаление двух веток реестра, которые потом пересоздадутся автоматически. Переходим по пути:
Щелкаем правым кликом и из контекстного меню выберите пункт создать элемент реестра.
В окне свойств реестра, выберите в действии "Удалить" и в пути введите по одной строке и списка ниже.
Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.doc
Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.docx
Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.xls
Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.xlsx
В итоге вам так нужно создать удаление для четырех веток. После этого политика изменения ассоциации файлов и программы по умолчанию для определенных расширений файлов будут применены в вашей Windows 7.
Настройка ассоциации файлов в GPO для Windows 10
В Windows 10 данный метод работать не будет, тут необходимо слегка поправить политику. Вы полностью создаете политику, как и в Windows 7:
- Создаете ключи реестра которые удалят нужные ветки реестра для определенных расширений
- Создаете в параметрах папок для определенных расширений файлов, сопоставление программы по умолчанию на ту, что вам нужна
- Создаете нужную настройку фильтрации и назначаете политику на нужную OU
Дополнительные настройки для Windows 10
В вашей политике перейдите в раздел, где мы создавали ключи реестра для удаления веток.
Нам нужно после этих четырех заданий на удаление, создать задание на создание нужных веток и ключей. Я приведу примеры для расширений doc, docx, xls, xlsx, вам главное понять принцип. Через правый клик создаете новый элемент реестра
Первый ключ будет для расширения doc:
- Действие - Обновить
- Куст - HKEY_CURRENT_USER
- Путь раздела - Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.doc\OpenWithList
- Имя параметра - a
- Тип параметра REG_SZ
- Значение - chrome
Создаем второй элемент реестра.
- Действие - Обновить
- Куст - HKEY_CURRENT_USER
- Путь раздела - Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.doc\OpenWithList
- Имя параметра - MRUList
- Тип параметра - REG_SZ
- Значение - a
Создаем третий элемент реестра:
- Действие - Обновить
- Куст - HKEY_CURRENT_USER
- Путь раздела - Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.doc\OpenWithProgids
- Имя параметра - Word.Document.8
- Тип параметра - REG_BINARY
В итоге вы создали для расширения doc три ключа реестра, повторяем все эти шаги, лишь с той разницей, что меняем в первом примере doc на другие форматы и Word.Document.8 на другое значение из таблицы ниже:
- doc Имя параметра - Word.Document.8
- docx Имя параметра - Word.Document.12
- xls Имя параметра - Excel.Sheet.8
- xlsx Имя параметра - Excel.Sheet.12
- PowerPoint 2003 Имя параметра - PowerPoint.Show.8
- PowerPoint.2007 и выше Имя параметра - PowerPoint.Show.12
В итоге у меня получилось вот так.
Все теперь политика готова, ее можно применять. Данная GPO пропишет по данным веткам реестра нужные ключи, это персональные настройки программ по умолчанию для пользователя. Они более приоритетнее ветки компьютера.Проверьте добавление ключей по пути:
В итоге параметры для операционных систем Windows 10, для заданных ассоциаций файлов будут переопределены.
Задание ассоциаций через XML файл в Windows 10
Данный метод применим к операционным системам Windows 8.1 и выше, я вам его уже рассказывал, когда делал Google Chrome браузером по умолчанию. Суть метода такова:
- Вы берете любой компьютер, например с Windows 10. В ручном режиме настраиваете у него ассоциации файлов с нужной программой
- Далее выгружаете специальный XML файл с настройками и редактируете его, удаляя лишние расширения из него. Делается выгрузка через утилиту командной строки DISM. Для этого выполните команду:Dism /Online /Export-DefaultAppAssociations:C:\Temp\DefAppAssoc.xmlДополнительно почитайте про ключи выгрузки и импорта XML по ссылке - https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/dism-default-application-association-servicing-command-line-options
- Полученный файл вы выкладываете на сетевой ресурс, откуда его могут все загрузить. Я обычно его кладу в папку SYSVOL, где лежат групповые политики, напоминаю, это путь \\имя вашего домена\SYSVOL\root.pyatilistnik.org\scripts
- Создаете групповую политику и применяете данный файл на нужные компьютеры, в итоге все они получают нужную ассоциацию файлов с утилитами, которые будут их открывать. Сам параметр находится по пути:
Находите там параметр "Задать файл конфигурации сопоставлений по умолчанию" и активируете его. Далее вам нужно добавить путь в таком формате:
Таким образом можно централизованно назначать программы по умолчанию. При использовании групповых политик ассоциации файлов будут изменены но только для новых пользователей. Кроме того, пользователи не смогут свободно управлять файловыми ассоциациями, т.к. каждый раз при входе в компьютер настройки, произведенные пользователем, будут переназначены настройками из файла конфигурации.
Еще хочу добавить, что данный файл прописывается в ветку реестра:
Как изменить программу по умолчанию для нужного типа файлов в Windows 11/12 и Windows Server 2022
Не так давно я обновил свою RDS ферму до Windows Server 2022. Ранее для ассоциации png я возвращал средство просмотра фотографий, и имел готовый файл с кучей ключей реестра, но он не сработал на Windows 12 и серверной ос, но задачу централизованного управления нам решить то нужно. Поэтому давайте будим выкручиваться.
- 1️⃣Мы для групповой политики, так же сделаем нужный XML-файл. Зайдите на ваш сервер или компьютер, где вам необходимо настроить ассоциации файлов. Я буду использовать для этого Windows Server 2022, но все описанные шаги подойдут и для Windows 11 и Windows 12. Мне нужно чтобы все фыотографии открывали с помощью средства просмотра фотографий.
- 2️⃣Для этого откройте параметры Windows. Далее раздел "Приложения - Приложения по умолчанию". Выставите в "Просмотр фотографий" нужный пункт.
- 3️⃣Если тут изначально нет вашего приложения, то ничего страшного идем в этом же окне в пункт "Задать значения по умолчанию по приложению".
Находим в списке ваше приложение. Кликаем по нему, после чего появится дополнительная кнопка "Управление". Нажмите на нее.
В результате у вас появится возможность сопоставить тип файла и протокол. В моем примере мне нужно управлять раширениями отвечающими за фото, такими как PNG, JPEG, JPG, TIFF и многое другое. Убедитесь, что на против каждого выставлено нужное вам средство открытия. Например, у меня было, что открывать формат GIF использовалось XnView MP, я поменяю на "Просмотр фотографий Windows".
Когда вы сопоставите для каждого формата файлов нужные приложения вы можете двигаться дальше. Все теже действия можно сделать и через командную строку.
Просмотр приложений по умолчанию по расширению через командную строку
Вы можете увидеть список приложений по умолчанию, установленных для каждого расширения, с помощью следующей команды cmd:
Видим, что основные графические форматы открываются в Paint, хотя мы до этого поменяли, но эта информация не всегда соответствует действительности, это некий шаблон для всех, но если вы явным образом для себя указали другое приложение, то оно будет приоритетнее. Этот файл XML мы ниже экспортируем.
Как установить приложений по умолчанию для расширения через командную строку
В командной строке Windows есть такая утилита assoc, в ее задачи входит много чего. Утилита командной строки assoc (association) в Windows используется для просмотра и изменения связей расширений файлов с программами, которые открывают эти файлы. Команда assoc без аргументов выводит список текущих связей между расширениями файлов и программами, которые их открывают. Для изменения связи необходимо использовать команду assoc с двумя аргументами: расширением файла и именем программы, которая должна открывать этот файл.
Давайте посмотрим с чем у меня связан формат PNG, который я ранее просил операционную систему Windows Server 2022 открывать через средство просмотра фотографий.
Видим, что это pngfile, не понятное какое-то приложение😅. Давайте тперь поймем с кем связана запись pngfile.
В результате видно, что за это отвечает приложение:
Для того, чтобы поменять приложение, которое открывает определенное расширение файла, вы можете воспользоваться вот такой конструкцией.
Еще пример давайте будим запускать файлы CSV с помощью стандартного блокнота. Для этого проверим, с кем ассоциируется изначально txt формат. Запишем приложение его использующее и применим его к CSV.
ftype txtfile
ftype txtfile
assoc .csv
Если мы хотим поменять переменную txtfile, на другую команду, то это легко сделать. Например я хочу сделать ее Notepad++
Все это можно заскриптовать.
Как произвести экспорт и импорт ассоциаций приложений по умолчанию в Windows 11/12/2022 в XML-файл
Так как локально мне не очень интернесно менять настройки, у меня более массовая задача, то я как и показывал в случае с десяткой должен экспортировать специальную XML с содержимым, что мы получали в командной строке, НО не забывайте, что сначала вы должны произвести все настройки по вашим программам по умолчанию. За основу файла будет браться ассоциация файлом текущего пользователя, из под которого вы делали манипуляции. Выполняем команду:
На выходе вы получаете файл DefaultAssoc.xml. В нем в идеале нужно оставить только те строки, что вам необходимы, отсальное убрать.
В моем примере я оставил вот так, чисто только графические файлы.
<DefaultAssociations>
<Association Identifier=".bmp" ProgId="Paint.Picture" ApplicationName="Просмотр фотографий Windows" />
<Association Identifier=".dib" ProgId="Paint.Picture" ApplicationName="Просмотр фотографий Windows" />
<Association Identifier=".gif" ProgId="XnViewMP.gif" ApplicationName="Просмотр фотографий Windows" />
<Association Identifier=".img" ProgId="Applications\photoviewer.dll" />
<Association Identifier=".jfif" ProgId="pjpegfile" />
<Association Identifier=".jif" ProgId="XnViewMP.jif" ApplicationName="Просмотр фотографий Windows" />
<Association Identifier=".jp2" ProgId="XnViewMP.jp2" ApplicationName="Просмотр фотографий Windows" />
<Association Identifier=".jpc" ProgId="XnViewMP.jpc" ApplicationName="Просмотр фотографий Windows" />
<Association Identifier=".jpe" ProgId="jpegfile" ApplicationName="Просмотр фотографий Windows" />
<Association Identifier=".jpeg" ProgId="jpegfile" ApplicationName="Просмотр фотографий Windows" />
<Association Identifier=".jpg" ProgId="jpegfile" ApplicationName="Просмотр фотографий Windows" />
<Association Identifier=".png" ProgId="pngfile" ApplicationName="Просмотр фотографий Windows" />
<Association Identifier=".txt" ProgId="txtfile" ApplicationName="Notepad++" />
</DefaultAssociations>
При желании вы может импортировать его если нужно, вот пример команды, но нам это пока не нужно.
Настройка ассоциаций файлов по умолчанию с помощью групповой политики Windows
Так как у нас есть Active Directory, то мы можем применить с помощью групповой политики нужные настройки сразу на большое количество серверов или комьютеров, главное, чтобы они были объеденены определенным организационным подразделением. В оснастке "Group Policy Management Editor" создайте новую политику и перейдите к ее редактированию. Нам нужен будет раздел:
В английском варианте:
Тут вам нужно указать месторасположение вашего XML файла, я всегда советую его копировать в рпрку NETLOGON не контроллере домена, это позволит всем его читать от туда.
Обновляем групповую политику, может даже прилететь и после перезагрузки. Для того, чтобы понять, что файл применился, зайдите в раздел реестра Windows.
Тут нужно поискать ключик DefaultAssociationsConfiguration, в котором должен быть прописан ваш путь до файла.
Как сбросить все ассоциации файлов по умолчанию в Windows 10/11/12 и Windows Server
Если вы хотите откатить все настройки на начальные по приложениям по умолчанию, то вы можете выполнить вот такую команду:
После запуска этой команды все новые пользователи будут входить в систему с настройками ассоциации файлов по умолчанию (сброс не влияет на существующие профили пользователей). Microsoft не обошел и графический интерфейс по сбросу приложений по умолчанию. Откройте "Параметры Windows - Приложения по умолчанию" и нажмите кнопку "Сбросить".
Распространение файла ассоциаций по умолчанию с помощью SCCM
Другой альтернативой распространению файла приложения по умолчанию является Microsoft Endpoint Configuration Manager (MEMCM, ранее называвшийся SCCM). Для этого мы можем распространить пакет или запустить шаг "Run Command Lin" из "Task Sequence" . В обоих случаях вы должны включить в пакет файл DefaultApps.xml и запустить следующую команду:
Вы можете распространить пакет на компьютеры или добавить шаг в последовательность задач нового компьютера следующим образом (после установки Windows 11 или Windows 12 и перезагрузке)
Сопоставить ассоциации файлов через PowerShell
Приветду тут скрипт взятый из моей статьи про Windows Photo Viewer.
#Скрипт с сайта https://pyatilistnik.org/ разработал Иван Сёмин, разрешается его копировать на другие сайты только с указанием активной ссылки на источник
$Servers = Get-Content "C:\Temp\RDS\servers.txt"
#Для png
ForEach ($Server in $Servers) {
Invoke-Command -ComputerName $Server -ScriptBlock {
cmd /c ftype pngfile=%SystemRoot%\System32\rundll32.exe "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll", ImageView_Fullscreen %1
}
}
#Для jpeg
ForEach ($Server in $Servers) {
Invoke-Command -ComputerName $Server -ScriptBlock {
cmd /c ftype jpegfile=%SystemRoot%\System32\rundll32.exe "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll", ImageView_Fullscreen %1
}
}
#Для gif
ForEach ($Server in $Servers) {
Invoke-Command -ComputerName $Server -ScriptBlock {
cmd /c ftype giffile=%SystemRoot%\System32\rundll32.exe "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll", ImageView_Fullscreen %1
}
}
Надеюсь, что данная статья оказалась для вас полезной и вы поняли принцип настройки сопоставления нужных ассоциаций файлов с нужной программой. С вами был Иван Семин, автор и создатель IT блога Pyatilistnik.org.
В Windows Server 2019 (Версия 1809 сборка ОС 17763.2183) вариант назначать программы по умолчанию через DISM не работает. Пробовал настраивать для пользователей терминального сервера. Настройки с импортируемого xml-файла игнорируются 🙁
Создал ассоциации файлов для .doc, .xls, .ppt, политика применилась, а ассоциации не изменились, добавил в политику удаление файлов реестра, политика применилась, а ассоциации не изменились, удалил из политики удаление файлов реестра, политика применилась. Значит сначала нужно удалить ветви реестра, а уже после применять ассоциации файлов, как это реализовать?