none
Настройка ассоциаци файлов RRS feed

  • Вопрос

  • Всем доброго времени суток!

    Есть задача: настройка ассоциаций для файлов изображений на встроенное средство просмотра фотографий Windows в случае отсутствия назначения других приложений. Основная проблема - проверить ассоциирован файл с каким-то приложением или нет.

    1) Хотел решить задачу через DISM, но недостаточно прав для запуска из-под пользователя.

    2) Начал смотреть реестр. Насколько я понял ассоциация может быть прописана в следующих ключах(на примере png):

     - значение по умолчанию для HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.png;

    - если .png=pngfile, то команда для open в HKEY_LOCAL_MACHINE\SOFTWARE\Classes\pngfile\shell;

    - значение по умолчанию для HKEY_CURRENT_USER\SOFTWARE\Classes\.png;

    - если .png=pngfile в ветке HKCU, то команда для open в HKEY_CURRENT_USER\SOFTWARE\Classes\pngfile\shell;

    - значение ProgId для HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice.

    Подскажите, это все ключи, которые требуется проверять или есть еще? Может есть команда Powershell, которая сама проверяет все необходимые ключи?

    Как оснастка "Настройка сопоставлений" проверяет ассоциации? Я менял любой ключ из выше перечисленных и в оснастке "Настройка сопоставлений" и программа по умолчанию менялась тоже.

    3) Или не забивать голову настройками для пользователей, а проверить ассоциации только для машины и задавать ассоциацию для файла если она отсутствует в HKLM? А ассоциация для пользователя (если она существует) перебьет ассоциацию для ПК.


    • Изменено Nevzrachen 29 октября 2018 г. 6:56
    • Перемещено Anton Sashev Ivanov 30 октября 2018 г. 11:41 более подходящий раздел
    29 октября 2018 г. 6:26

Ответы

  • Здравствуйте,

    Вот, пожалуйста, посмотрите инструкцию в нашем блоге как настроить ассоциацию файлов и несколько вариантов это сделать:

    Windows 10 – How to configure file associations for IT Pros?


    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    • Помечено в качестве ответа Nevzrachen 13 декабря 2018 г. 10:51
    29 октября 2018 г. 10:09

Все ответы

  • Здравствуйте,

    Вот, пожалуйста, посмотрите инструкцию в нашем блоге как настроить ассоциацию файлов и несколько вариантов это сделать:

    Windows 10 – How to configure file associations for IT Pros?


    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    • Помечено в качестве ответа Nevzrachen 13 декабря 2018 г. 10:51
    29 октября 2018 г. 10:09
  • Здравствуйте,

    Вот, пожалуйста, посмотрите инструкцию в нашем блоге как настроить ассоциацию файлов и несколько вариантов это сделать:

    Windows 10 – How to configure file associations for IT Pros?

    По ссылке нет проверки ассоциировано ли разрешение файла с каким-то приложением для текущего пользователя или нет.

    Мне надо проверять настроена ли ассоциация для определенного расширения файла с приложением для текущего пользователя и если не настроена, то создавать такую ассоциацию.Написал скрипт, но он не работает(импорт ассоциаций через dism - проверка существования ассоциации для определенного расширения файла - если ассоциация отсутствует, то добавляем в xml-файл строчку для ассоциации этого расширения - импорт созданного xml-файла):

    #функция заполнения xml Function AddToXML($FileAs) {$xmlelt=$xmlDoc.CreateElement("Association") $xmlAtt = $xmlDoc.CreateAttribute("Identifier") $xmlAtt.Value = $FileAs $xmlElt.Attributes.Append($xmlAtt) $xmlAtt = $xmlDoc.CreateAttribute("ProgID") $xmlAtt.Value = "Applications\photoViewer.dll" $xmlElt.Attributes.Append($xmlAtt) $xmlAtt = $xmlDoc.CreateAttribute("ApplicationName") $xmlAtt.Value = "Windows Photo Viewer" $xmlElt.Attributes.Append($xmlAtt) $xmlDoc.LastChild.AppendChild($xmlElt); $xmlDoc.LastChild.AppendChild($xmlElt);}

    #шапка xml [xml]$xmlDoc=New-Object System.Xml.XmlDocument $xmlDoc.loadXML("<?xml version=`"1.0`" encoding=`"utf-8`"?><DefaultAssociations></DefaultAssociations>")

    #проверка существования ассоциаций для файлов Dism.exe /Online /Export-DefaultAppAssociations:C:\temp\AsFile.xml IF (-not(Select-String -Path C:\temp\AsFile.xml -Pattern ".png")) {AddToXML(".png")} IF (-not(Select-String -Path C:\temp\AsFile.xml -Pattern ".jpg")) {AddToXML(".jpg")} IF (-not(Select-String -Path C:\temp\AsFile.xml -Pattern ".jpeg")) {AddToXML(".jpeg")} #Сохранение xml $xmlDoc.Save("c:\temp\FileAs.xml"); #добавлени xml Dism.exe /online /Import-DefaultAppAssociations:C:\temp\FileAs.xml #Remove-Item -Path C:\temp\AsFile.xml Remove-Item -Path C:\temp\FileAs.txt

    Я правильно понял, что через DISM мы можем:

    1) добавить ассоциации только для новых пользователей;

    2) создать шаблон ассоциаций через GPO?

    Скрипт будет распространен через GPO.

    Подскажите, может кто-нибудь сталкивался с подобной задачей?

    30 октября 2018 г. 11:19
  • Здравствуйте,
    Я перенес ваш вопрос в более подходящий раздел форума.

    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    30 октября 2018 г. 11:42
  • Подскажите, откуда оснастка "Настройка сопоставлений" берёт ассоциации?
    31 октября 2018 г. 6:46
  • когда устанавливается система изначально задаются, затем после каждого рестарта системы загружаются из реестра, но желательно реестр не трогать :), в вашем случае можно подкрутить, освободить папку edge, для того чтоб асоциации edge загрузились заново.

    Вот вам, пожалуйста, примерная инструкция как это можно сделать, но все что будете делать в реестре на ваш страх и риск... :)


    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.


    31 октября 2018 г. 7:55