Цель состоит в том, чтобы файлы .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
тогда как .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
... что теперь?