The goal is to get .jpg, .png, .tif, and .raw files to always open with Photoshop CC 2015 and use their appropriate icons.
You can refer to the flowchart below about how Windows 10 chooses an icon for a file. I came up with this by making changes in the registry and observing the results.
- If an extension is associated with a file type, the default icon defined by the extension key is ignored.
- The file type defined by the
ProgIdvalue overrides the file type defined by the extension key.
ProgIdvalue is set to
Application/Photoshop.exewhen setting Photoshop as the always-open-with app for .jpg and .png.
- Can't change
ProgIdvalue because of new hash security
- Can't remove
UserChoicekey for protected extensions like .jpg and .png
- Is there a way to override the icon defined by a file type on the extension level?
- Is there a way to override the file type defined by a
UserChoicekey on the extension level?
- What determines what the
ProgIdvalue will be set to when setting the always-open-with app in the GUI and why does .tif result in
Photoshop.TIFFFile.90while .png and .jpg result in
- Is there a way to generate the hash required on the
- Is there a way to stop Windows from checking/requiring the
- Is there a way to specify a file type like
Photoshop.JPEGFile.90as the always-open-with app using the GUI?
- Is there a way to stop Windows from protecting/recreating the
Registry changes wont take effect until explorer.exe is restarted/refreshed. You can use Task Manager to kill and restart explorer.exe, or you can use DesktopRefresh.exe.
UserChoice key can exist in two places:
If one does not exist, the other is used. So make sure to delete/modify them both if you want to make a change.
- extension key:
- file type key:
When Photoshop first installed, it associated all the file extensions and everything was great. At some point I decided I wanted to always open .png, .jpg, .tif, and .raw files with the Photos app. So I: right-click a .png/.jpg/.tif/.raw file -> Open with -> Choose another app -> Select Photos -> Check "Always open .png files with this app". Now I want to go back to opening with Photoshop. I did the same as before expect chose Photoshop as the app to always use. Now .jpg, .png, .tif, and .raw files open with Photoshop. However, .tif files show the correct icon but .jpg, .png, and .raw show the Photoshop.exe icon.
I tried reinstalling Photoshop but that did not help. I tried using Adobe Bridge to reset the File Associations but that did not help either. Tools like File Types Manager and Default Program Editor do not work (I'll explain why below).
Then I started looking into how Windows 10 chooses which icon to show for a given file. I learned:
- If the extension is associated with a file type, the icon defined by that file type key is used. Otherwise, the icon defined by the extension key is used.
- An extension can be associated with a file type two ways: If an always-open-with program/app has been set for an extension, then the program/app is used as the file type for the extension. Otherwise, a file type can be defined by the extension key.
In my case, .jpg, .png, .tif, .raw have Photoshop set as the always-open-with app. This is reflected in the registry via the
keys. This is where the difference between .tif and .jpg/.png/.raw shows. .tif has a
ProgId value of
Photoshop.TIFFFile.90 while .jpg, .png, and .raw have
Applications\Photoshop.exe. This means that .tif is correctly associated with the
Photoshop.TIFFFile.90 file type but .jpg .png, and .raw are associated with the file type
I can't simply change the icon for the
Applications\Photoshop.exe file type because .jpg, .png, and .raw all use that file type. Therefore, the same icon is used by the 3 extensions. I can't specify a unique icon for each extension. This is why the File Types Manager and Default Program Editor tools don't work. They set the DefaultIcon for the file type in this case.
The solution seemed simple: change the
ProgId value in the
UserChoice keys to use the
Photoshop.RAWFile.90 file types. This is not possible in Windows 10 anymore. A new security measure adds the
Hash value which accompanies the
ProgId value in the
UserChoice key. Only Windows knows how to generate this hash. If the hash is not correct for the
ProgId value, Windows resets/removes the
UserChoice key. This makes it so this value can only be set via the Windows GUI. The idea is to prevent viruses/attackers from being able to programmatically change the always-open-with app for extensions.
I have no idea why selecting Photoshop as the always-open-with app resulted in the correct
ProgId being set for .tif but not for .jpg, .png, and .raw, but it does not seem possible to fix. At this point, I started looking at other extensions that I had not touched like .tga. I never set a always-open-with app for .tga, so it did not have a
UserChoice key. Instead, .tga's extension key defined the associated type like so:
Another seemingly simple solution: Unset the always-open-with app by removing the
UserChoice keys and define the file type on the extension keys. This worked for .raw, but not .jpg and .png. When I removed the
UserChoice keys for .jpg and .png I got a Windows notification with this error:
An app default was reset
An app caused a problem with the default app setting for .jpg files, so it was reset to Photos
I refreshed the registry and, sure enough, the
UserChoice key was back. It turns out that Windows protects some extensions (like .jpg and .png) and it does not let you remove the
So we can't remove the
UserChoice key, we can't update
UserChoice.ProgId to the correct value, and we can't override the file type specified by
UserChoice.ProgId... what now?