Цель состоит в том, чтобы файлы .jpg, .png, .tif и .raw всегда открывались в Photoshop CC 2015 и использовались соответствующие значки.
Вы можете обратиться к блок-схеме ниже о том, как Windows 10 выбирает значок для файла. Я придумал это, внеся изменения в реестр и наблюдая за результатами.
Проблемы
- Если расширение связано с типом файла, значок по умолчанию, определенный ключом расширения, игнорируется.
- Тип файла, определенный значением
UserChoice
ключа,ProgId
переопределяет тип файла, определенный ключом расширения. UserChoice
ProgId
значение ключа устанавливаетсяApplication/Photoshop.exe
при установке Photoshop как всегда открытого приложения для .jpg и .png.- Невозможно изменить значение
UserChoice
ключаProgId
из-за новой безопасности хэша - Не удается удалить
UserChoice
ключ для защищенных расширений, таких как .jpg и .png
Вопросы / Возможные решения
- Есть ли способ переопределить значок, определенный типом файла на уровне расширения?
- Есть ли способ переопределить тип файла, определенный
UserChoice
ключом на уровне расширения? - От чего зависит, какое значение
UserChoice
ключаProgId
будет установлено при настройке приложения, всегда открытого с помощью графического интерфейса, и почему .tif приводит к тому, что, вPhotoshop.TIFFFile.90
то время как .png и .jpg приводят кApplication/Photoshop.exe
? - Есть ли способ генерировать хэш, необходимый для
UserChoice
ключа? - Есть ли способ запретить Windows проверять / запрашивать
UserChoice
хэш ключа? - Есть ли способ указать тип файла, например,
Photoshop.JPEGFile.90
как всегда открытое приложение с помощью графического интерфейса? - Есть ли способ остановить Windows от защиты / воссоздания
UserChoice
ключей?
Заметки
Изменения в реестре не вступят в силу, пока explorer.exe не будет перезапущен / обновлен. Вы можете использовать диспетчер задач, чтобы убить и перезапустить explorer.exe, или вы можете использовать DesktopRefresh.exe .
UserChoice
Ключ может существовать в двух местах:
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpg\UserChoice
HKCU\SOFTWARE\Microsoft\Windows\Roaming\OpenWith\FileExts\.jpg\UserChoice
Если один не существует, другой используется. Поэтому обязательно удалите / измените их оба, если вы хотите внести изменения.
Примеры ключей:
- ключ расширения:
HKCR\.jpg
- ключ типа файла:
HKCR\Photoshop.JPEGFile.90
UserChoice
ключ:HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpg\UserChoice
подробности
Когда Photoshop впервые был установлен, он связывал все расширения файлов, и все было замечательно. В какой-то момент я решил, что хочу всегда открывать файлы .png, .jpg, .tif и .raw с помощью приложения Photos. Поэтому я: щелкните правой кнопкой мыши файл .png / .jpg / .tif / .raw -> Открыть с помощью -> Выбрать другое приложение -> Выбрать фотографии -> Отметьте «Всегда открывать файлы .png с этим приложением». Теперь я хочу вернуться к открытию с Photoshop. Я сделал то же, что и раньше, ожидал, выбрал Photoshop в качестве приложения, чтобы всегда использовать. Теперь файлы .jpg, .png, .tif и .raw открываются в Photoshop. Однако в файлах .tif отображается правильный значок, а в файлах .jpg, .png и .raw - значок Photoshop.exe.
Я попытался переустановить Photoshop, но это не помогло. Я пытался использовать Adobe Bridge для сброса ассоциаций файлов, но это тоже не помогло. Такие инструменты, как Диспетчер типов файлов и Редактор программ по умолчанию, не работают (я объясню почему ниже).
Затем я начал изучать, как Windows 10 выбирает значок, отображаемый для данного файла. Я научился:
- Если расширение связано с типом файла, используется значок, определенный этим ключом типа файла. В противном случае используется значок, определенный ключом расширения.
- Расширение может быть связано с типом файла двумя способами: Если для расширения была установлена программа / приложение, всегда открытое с помощью, то программа / приложение используется в качестве типа файла для расширения. В противном случае тип файла может быть определен ключом расширения.
В моем случае для файлов .jpg, .png, .tif, .raw Photoshop был установлен как приложение, которое всегда открыто. Это отражается в реестре через
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpg\UserChoice
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.tif\UserChoice
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.raw\UserChoice
ключи. Вот где разница между .tif и .jpg / .png / .raw показывает. .tif имеет ProgId
значение Photoshop.TIFFFile.90
while .jpg, .png и .raw имеют Applications\Photoshop.exe
. Это означает, что .tif правильно связан с Photoshop.TIFFFile.90
типом файла, но .jpg .png и .raw связаны с типом файла Applications\Photoshop.exe
.
Я не могу просто изменить значок для Applications\Photoshop.exe
типа файла, потому что .jpg, .png и .raw все используют этот тип файла. Таким образом, один и тот же значок используется 3 расширениями. Я не могу указать уникальный значок для каждого расширения. Вот почему инструменты Диспетчер типов файлов и Редактор программ по умолчанию не работают. Они устанавливают DefaultIcon для типа файла в этом случае.
Решение казалось простым: изменить ProgId
значение в UserChoice
ключах , чтобы использовать Photoshop.JPEGFile.90
, Photoshop.PNGFile.90
и Photoshop.RAWFile.90
тип файлов. Это невозможно в Windows 10 больше. Новая мера безопасности добавляет Hash
значение, которое сопровождает ProgId
значение в UserChoice
ключе. Только Windows знает, как генерировать этот хэш. Если хеш-код не соответствует ProgId
значению, Windows сбрасывает / удаляет UserChoice
ключ. Это позволяет установить это значение только через графический интерфейс Windows. Идея состоит в том, чтобы не дать вирусам / злоумышленникам возможность программно изменять всегда открытое приложение для расширений.
Я понятия не имею, почему выбор Photoshop в качестве приложения, которое всегда открыто, привело к правильной ProgId
настройке для .tif, но не для .jpg, .png и .raw, но это не представляется возможным исправить. В этот момент я начал смотреть на другие расширения, которые я не трогал, как .tga. Я никогда не устанавливал всегда открытое приложение для .tga, поэтому у него не было UserChoice
ключа. Вместо этого ключ расширения .tga определил связанный тип следующим образом:
[HKCR\.tga]
@="Photoshop.TGAFile.90"
Другое, казалось бы, простое решение: отмените приложение, всегда открытое с помощью удаления UserChoice
ключей и определите тип файла на ключах расширения. Это работало для .raw, но не для .jpg и .png. Когда я удалил UserChoice
ключи для .jpg и .png, я получил уведомление Windows с этой ошибкой:
Приложение по умолчанию было сброшено
Приложение вызвало проблему с настройкой приложения по умолчанию для файлов .jpg, поэтому оно было сброшено до Фотографии
Я обновил реестр и, конечно же, UserChoice
ключ вернулся. Оказывается, что Windows защищает некоторые расширения (например, .jpg и .png) и не позволяет удалить UserChoice
ключ.
Таким образом, мы не можем удалить UserChoice
ключ, мы не можем обновить его UserChoice.ProgId
до правильного значения, и мы не можем переопределить тип файла, указанный UserChoice.ProgId
... что сейчас?