Changing default icon for a file type in Windows 7
Windows XP was the last Windows system to have File Types
tab in the Folder Options
applet and to allow user easily changing default icon for particular file extension. This tab was replaced in Windows Vista and following systems by Default Programs
applet from Control Panel. It lacks many features, including changing icons for file types. Therefore, in Windows systems following Windows XP you have to either use 3rd party software for achieving this simple task or dig in Windows Registry. This isn’t that hard task as it seems, so read on, if you want to give this method a try.
Preparation
First of all, you have to write down full path to icon you want to use as some file type’s default icon and optionally icon’s index. If you’re using a separate icon, stored in .ico
file, then you only need to path to that file. Try to put it into some “safe” location, like C:Windows
folder, from which it will not be deleted accidentally. If you want to use one of icons embed into .exe
or .dll
file, you need both path and icon index.
If you want to use one of system icons, then you have to use shell32.dll
file. It is located in C:WindowsSystem32
folder, if your Windows has been installed in C:Windows
folder. However, for using icons from this file, file name is all you need, as files stored in system folder are recognized without full path across entire system. You only need an full path to icon file, when you’re using file stored in some custom location.
To easily write down path and icon index, you can use icon picker dialog. To launch it, right-click on a any folder in your system, click Properties
, switch to Customize
tab and click Change Icon...
button. If using system icons, then shell32.dll
file will already be open. If you want to use icon from another .exe
or .dll
file, make use of Browse...
button and locate desired file. Copy file’s path and paste it into Notepad or somehwere else.
Now, you only need to write down index of your favourite icon. They’re indexed in icon picker dialog from top to bottom, then to the next column, again from top to bottom and so on. So, if you want second icon in second column, then its index will be 6
, as you have four icons from top to bottom in first column, then first icon in second column have index 5
and under index 6
is your icon. You need to subtract 1
from column number and then multiply it times 4. And you need to subtract 1 from icon position in that column and sum both numbers. I wanted to use icon which appears in my shell32.dll
file in 18th column at 3rd position. Therefore, formula for calculating my icon’s index was: ((18 - 1) * 4) + (3 - 1)
. This way, it turned out, that my favourite icon has index 70
.
Registry tweak-ups
Having both file path and icon index you can start digging in Windows Registry:
1. Start Windows Registry, by clicking Start
button, typing regedit.exe
and pressing Enter.
2. Expand first tree node (HKEY_CLASSES_ROOT
) and locate your file type’s extension under it. I wanted to change default icon for all my PHP files, so I located HKEY_CLASSES_ROOT.php
tree node. Note, that HKEY_CLASSES_ROOT
tree node is enormously huge, containing thousadns of sub nodes, so it may take you some time until you find something in it. Alternatively, you can press Ctrl+F or select Edit > Find...
and make use of Windows Registry’s search tool.
3. Write down extension’s Prog ID, which is displayed as (default)
key value, in the right pane, once you select file’s extension in the left pane. You can double click (default)
key and copy Prog ID from opened window.
4. In the left pane locate and expand HKEY_CLASSES_ROOTProgIDDefaultIcon
tree node, replacing ProgID
with Prog ID written down in previous step. If you copied Prog ID in previous step, you may again use search tool. It was HKEY_CLASSES_ROOTphp_auto_fileDefaultIcon
in my case. If DefaultIcon
node does not exist under HKEY_CLASSES_ROOTProgID
node, then you have to manually create it. Select Prog ID in left pane, select Edit > New > Key
from menu, enter DefaultIcon
name and confirm hitting Enter.
5. Double click (default)
key in DefaultIcon
node and enter as value file name with optional path to it and optional icon index, after comma, without space. In my case, entire value to be entered was shell32.dll,72
as I wanted to assign 72th icon from system shell32.dll
file as default icon for all .php
(php_auto_file
) files in my system.
Note, that some guides may mislead you into creating DefaultIcon
key directly under your extension’s key in Windows Registry (.php
in this example). This will work only in certain situations (for so called file-type assignments). But, for most of them (so called application assignment) this will not work. You’ll find some details in this MSDN document. However, it contains a lot of developer’s mumbo-jumbo.
Refreshing icons
You’re done. Exit Windows Registry and either restart your system (if you’re lazy) or force icon cache rebuild (if you like the hard way or you have to many programs opened and can’t afford for system restart at that point).
The fastest way to refresh icons in Windows Explorer is to restart. To do this:
1. Ctrl+Alt+Del and click Run Task Manager
or click Start
button, type taskmgr.exe
and press Enter.
2. Switch to Process
tab, right-click on the explorer.exe
item and select End Process
or select it and hit Del. Confirm operation.
3. Select New Task (Run...)
from the File
menu in Task Manager, type explorer.exe
and press Enter.
Check, if you see new icon for your newly changed file extension.
Rebuilding icons cache
If above solution does not bring desired results, then you need to rebuild icons cache. To do this, you need to follow above steps, but after your end explorer.exe
and before you start it, you need to do following:
1. Select New Task (Run...)
from the File
menu in Task Manager, type cmd.exe
and press Enter.
2. In console execute these three commands, hitting Enter after each to confirm:
cd /d %userprofile%AppDataLocal
del IconCache.db /a
exit
3. Now, restart Windows Explorer, using Task Manager, as in above instruction (New Task (Run...)
> explorer.exe
> Enter).
That should finally give you your desired icon next to every file of changed extension.
Conclusion
Some programs (like Total Commander) have their own icon’s cache and therefore you need to restart them as well to see changes in them.