Changing Default Shell32 Windows Icons

c0ncept

Member
Aug 13, 2005
25
0
0
I've been working on customizing my desktop a lot lately and I have not been able to find a way to change the default shell32 icons. I'm mainly interested in changing the default icon for a folder to match my new theme. I've found an interesting article with a screenshot for a very handy looking program:

http://www.codeproject.com/win32/nsetfoldericons.asp

That screenshot shows the program written by the author to do exactly what I want to do, but I have very little experience with C++ or any programming language for that matter. Is there a way to compile this program at all or another way to change the default system icons?

Thanks.

Running Windows XP SP2
 

xtknight

Elite Member
Oct 15, 2004
12,974
0
71
Use reshacker on shell32.dll (and Replacer to bypass Windows File Protection). I even renamed "Recycle Bin" to "Trash" with this method (some things may be cached in the registry under MUICache, probably not icons though). ;)
 

xtknight

Elite Member
Oct 15, 2004
12,974
0
71
Yup those are them. You open shell32.dll with reshacker, find an icon, and use the replace function on it. You can do this for a few icons if you wish. Then you 'save as' the DLL to your desktop. Use replacer to replace your current shell32.dll with the one on your desktop. Rinse and repeat.
 

c0ncept

Member
Aug 13, 2005
25
0
0
Well I've done what you said so far, and a strange thing is going on. I successfully replaced the two folder icons with my custom icons (Icon groups 4 and 5 in shell32.dll) and when I right click on a folder, go to properties/customize, sure enough my custom icon appears in the Folder pictures and Folder icons areas, but the actual icon itself remains the same old yellow XP folder. Even after changing it to something else and changing it back to my custom black folder icon, it stays yellow.

Not sure if this helps, but here are the files I'm using:
Deviantart Icon pack

From the article I linked in my first post, the author mentioned this:

This article explains a simple way to get and set icons for folders (open and closed), hard drives, floppies and CD drives. The default icons are stored in Shell32.dll as icon resources. To change the icons, we need to modify the registry by adding some values and to set them back to default icons, we simply remove the values we added. Of course simply changing the registry values won't change the icons because Windows will take the icons from the icon cache. Tweak UI has a feature to flush the icon cache and I ran Spy++ on it as well as monitored registry changes. I found that what they do is to change the icon size value in the WindowMetrics registry key, broadcast a WM_SETTINGCHANGE with SPI_SETNONCLIENTMETRICS, change the icon size back to it's original value and again broadcast the WM_SETTINGCHANGE message. I did the same and found that it works fine.

I suppose there is something else that needs to be done so Windows recognizes my new icons in the shell32.dll file and redraws the existing icons. Its pretty absurd that you can't easily edit your own icons on your own computer after paying for your own copy of Microsoft's OS. I really love Microsoft's suggestion:

Although you cannot customize the default folder icon in Windows Explorer, you can make a shortcut to a folder and change the look of the shortcut icon.

Oh well, somehow this must work!
 

c0ncept

Member
Aug 13, 2005
25
0
0
Well after reading and digging around all day I managed to solve my problem. TweakUI did the trick by rebuilding the icon cache, which replaced all of the current folder icons with the new shell32 icons that I replaced. Thanks again for the help xtknight ^_^

TweakUI can be found on this page if anyone else is interested:
TweakUI
 

Doh!

Platinum Member
Jan 21, 2000
2,325
0
76
I've been modifying system/program files for several yrs. now. Because so many people have been doing it for a long time, the chances are, there are already pre-packaged icon packs available for you favorite icons. neowin.net is a good place to start.