6

Цель состоит в том, чтобы файлы .jpg, .png, .tif и .raw всегда открывались в Photoshop CC 2015 и использовались соответствующие значки.

пример

Вы можете обратиться к блок-схеме ниже о том, как Windows 10 выбирает значок для файла. Я придумал это, внеся изменения в реестр и наблюдая за результатами.

(нажмите, чтобы увеличить) Flowcart

Проблемы

  • Если расширение связано с типом файла, значок по умолчанию, определенный ключом расширения, игнорируется.
  • Тип файла, определенный значением UserChoice ключа ProgId переопределяет тип файла, определенный ключом расширения.
  • UserChoice ключа ProgId равным Application/Photoshop.exe при установке Photoshop как приложения, которое всегда открыто для файлов .jpg и .png.
  • Невозможно изменить значение UserChoice ключа ProgId из-за новой безопасности хэша
  • Не удается удалить ключ UserChoice для защищенных расширений, таких как .jpg и .png

Вопросы / Возможные решения

  1. Есть ли способ переопределить значок, определенный тип файла на уровне расширения?
  2. Есть ли способ переопределить тип файла, определенный ключом UserChoice на уровне расширения?
  3. Что определяет, какое значение UserChoice ключа ProgId будет установлено при настройке приложения, всегда открытого с помощью графического интерфейса, и почему .tif приводит к появлению Photoshop.TIFFFile.90 то время как .png и .jpg приводят к Application/Photoshop.exe?
  4. Есть ли способ создать хэш, необходимый для ключа UserChoice?
  5. Есть ли способ запретить Windows проверять / запрашивать хэш ключа UserChoice?
  6. Есть ли способ указать тип файла, как Photoshop.JPEGFile.90 как всегда открытое приложение с использованием графического интерфейса?
  7. Есть ли способ остановить 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 выбирает значок, отображаемый для данного файла. Я научился:

  1. Если расширение связано с типом файла, используется значок, определенный этим ключом типа файла. В противном случае используется значок, определенный ключом расширения.
  2. Расширение может быть связано с типом файла двумя способами: если для расширения была установлена программа / приложение, всегда открытое с помощью, то программа / приложение используется в качестве типа файла для расширения. В противном случае тип файла может быть определен ключом расширения.

В моем случае для файлов .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 ... что теперь?

2 ответа2

3

Я нашел хакерский обходной путь, но я все еще хотел бы получить ответы на мои вопросы выше, чтобы мы могли найти правильное / менее хакерское решение.

Шаг за шагом для начинающих.

Создайте фиктивный файл .cmd и установите его как приложение, всегда открытое для расширения, использующего графический интерфейс. Это приводит к тому, что Windows создает новый тип файла для фиктивного "приложения" .cmd и связывает его с расширением, устанавливая значение UserChoice ключа ProdId (например, Application/customJPEG.cmd). Повторите этот процесс для каждого расширения с использованием фиктивного файла .cmd с уникальным именем, и, bam, у нас есть уникальные типы файлов, связанные с каждым расширением (например: Application/customJPEG.cmd , Application/customPNG.cmd и т.д.). Затем мы можем настроить значок и команды открытия / редактирования независимо для каждого нового типа файла.

См. Мою блок-схему в исходном вопросе для получения дополнительной информации о том, как Windows выбирает значок для файла.

Примечание. Этот обходной путь требуется только для защищенных расширений, таких как .jpg и .png. Смотрите мой вопрос выше для решения незащищенных расширений. Однако этот обходной путь должен работать для любого расширения независимо.



Quick Vocab:

  • Расширение файла: Что следует за последней точкой в имени файла. .jpg, .jpeg, .png и т. д. - это разные расширения файлов.
  • Тип файла: классификация файлов / категории. Может быть связано с одним или несколькими расширениями файлов. Например, тип файла JPEG может быть связан как с расширениями файлов .jpg, так и .jpeg.

Примечание. Расширения файлов изображений, такие как .jpg и .png, показывают миниатюры изображения. Чтобы увидеть значок, либо создайте пустой файл (чтобы эскиз не мог быть создан), либо откройте окно проводника и установите для параметра «Вид» значение «Подробности».

Примечание. Ничего не изменится, пока вы не обновите рабочий стол. Обязательно сделайте это после внесения изменений в реестр. Смотрите шаг 6 для деталей.

Примечание. Если в реестре отсутствует ключ, попробуйте обновить его, нажав клавишу F5 или View-> Refresh. regedit не обновляется и требует обновления, чтобы увидеть последние новости.


Повторите шаги ниже для каждого расширения файла. Замените .jpg вашим расширением файла, а Photoshop - любым приложением, которое вы хотите.

1. Создать фиктивный файл .cmd

  1. Открыть Блокнот
  2. Вы можете оставить файл пустым
  3. Файл-> Сохранить как
  4. Используйте что-то вроде customJEPG.cmd качестве имени файла и сохраните

Неважно, где вы сохраняете его или как его называете, ожидайте, что имя должно отличаться для каждого типа файла. Имя фиктивного .cmd будет определять имя типа файла. Я рекомендую включить в имя расширение или тип файла, чтобы его было легче различить позже.

2. Установите фиктивный файл .cmd в качестве всегда открытого приложения

  1. Щелкните правой кнопкой мыши файл .jpg.
  2. Открыть с помощью -> Выбрать другое приложение
  3. Убедитесь, что установлен флажок «Всегда использовать это приложение для открытия файлов .jpg»
  4. Прокрутите вниз и нажмите «Другие приложения ↓»
  5. Снова прокрутите вниз и нажмите "Найти другое приложение на этом ПК".
  6. Найдите и выберите ваш фиктивный файл .cmd
  7. Проигнорируйте и закройте ошибку "Это приложение не запускается на вашем компьютере"
  8. Если «Как вы хотите открыть этот файл?"окно снова появляется, убедитесь, что ваш фиктивный файл .cmd по-прежнему выбран в разделе" Продолжать использовать это приложение "вверху, установите флажок" Всегда использовать это приложение, чтобы открывать файлы .jpg "и нажмите ОК.

Если вы хотите, чтобы несколько расширений файлов использовали один и тот же тип файла, повторите шаги 1-7 для каждого расширения.

3. Получить новый связанный тип файла

  1. Открыть регедит
  2. Перейдите к:
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpg\UserChoice
  3. Скопируйте / запишите значение ProgId . Это тип файла, который теперь связан с расширением .jpg.

Тип файла должен быть Applications\{the name of your dummy .cmd} . Пример: Applications\customJPEG.cmd .

4. Обновите тип файла, чтобы использовать правильный значок

  1. В regedit перейдите к HKEY_CLASSES_ROOT\
  2. Теперь откройте ключ с тем же именем, что и ваш тип файла. Например, если ваш тип файла - Applications\customJEPG.cmd , вы откроете:
    HKEY_CLASSES_ROOT\Applications\customJEPG.cmd
  3. Создайте новый ключ внутри с именем DefaultIcon
  4. Задайте (по умолчанию) значение ключа DefaultIcon путь к значку, который вы хотите использовать. Пример:
    E:\Tools\Adobe\Adobe Photoshop CC 2015\Photoshop.exe,30

5. Обновите тип файла для открытия и редактирования с помощью Photoshop

  1. Откройте командный ключ shell\open\command внутри вашего ключа типа файла. Пример:
    HKEY_CLASSES_ROOT\Applications\customJEPG.cmd\shell\open\command
  2. Измените значение (по умолчанию) так, чтобы оно указывало на ваш Photoshop.exe вместо вашего фиктивного файла .cmd. Пример:
    "E:\Tools\Adobe\Adobe Photoshop CC 2015\Photoshop.exe" "%1"
  3. Создайте ключ edit\command внутри ключа shell если он не существует. Пример:
    HKEY_CLASSES_ROOT\Applications\customJEPG.cmd\shell\edit\command
  4. Измените значение (по умолчанию), чтобы оно совпадало с вашим ключом open\command . Пример:
    "E:\Tools\Adobe\Adobe Photoshop CC 2015\Photoshop.exe" "%1"

6. Обновить рабочий стол

Вы ничего не увидите, пока не обновите рабочий стол. Есть 3 способа сделать это:

  • В Windows 10 запустите ie4uinit.exe -show . В Windows 7 и 8 запустите ie4uinit.exe -ClearIconCache . (Спасибо @Tony за этот совет.)
  • Или вы можете просто загрузить и запустить DesktopRefresh.exe
  • Или вы можете перезапустить explorer.exe:

    1. Откройте диспетчер задач (ctrl+shift+esc)
    2. Перейдите на вкладку сведений и найдите explorer.exe
    3. Щелкните правой кнопкой мыши explorer.exe -> Завершить задачу и выберите Завершить процесс.
    4. Еще в диспетчере задач зайдите в File-> Run new task
    5. Введите explorer.exe и нажмите ОК

7. Проверьте это

  1. Теперь для файлов .jpg должны отображаться правильные значки.
  2. Двойной щелчок по файлу .jpg должен открыть его в Photoshop.
  3. Щелкните правой кнопкой мыши файл .jpg -> Изменить, чтобы открыть его в Photoshop.

Если «Как вы хотите открыть этот файл?"окно снова появляется, убедитесь, что ваш фиктивный файл .cmd по-прежнему выбран в разделе" Продолжать использовать это приложение "вверху, установите флажок" Всегда использовать это приложение, чтобы открывать файлы .jpg "и нажмите ОК.

8. Удалить пустышку .cmd

Вы можете удалить свой фиктивный файл .cmd. Это необязательно.


Примечание о поиске значков

Часто .exe приложения содержит несколько значков. Например, Photoshop.exe содержит все значки для всех поддерживаемых типов файлов. Вот как найти и использовать эти значки:

  1. Создайте ярлык для .exe, щелкнув правой кнопкой мыши и выбрав Создать ярлык
  2. Нажмите правой кнопкой мыши на ярлык и выберите Свойства
  3. Нажмите кнопку «Изменить значок» внизу
  4. Теперь вы увидите окно, подобное этому (но без цифр):
    Окно иконок
  5. Значки нумеруются начиная с 0. Найдите номер значка, который вы хотите использовать. Вместо подсчета вы можете использовать формулу (column - 1) * 4 + row - 1 . Например, если значок находится в столбце 6, строка 3, (6 - 1) * 4 + 3 - 1 = 22
  6. Теперь вы можете ссылаться на этот значок, включив число в путь к .exe, например, так:
    C:\Example\Photoshop.exe,23
1

Ну, ответ Майка очень хороший. И, как дополнение, на шаге 6 (Обновить рабочий стол) вы можете просто запустить эту команду:

ie4uinit.exe -show

для Win10, чтобы перезагрузить новый значок.

Для Win 7 и 8 запустить:

ie4uinit.exe -ClearIconCache

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .