怎么在更改完文件关联之后刷新桌面图标缓存

如何在更改完文件关联之后刷新桌面图标缓存?
RT,在注册表中更改完相应的键值之后,双击桌面上的某类文件(如.htm)时已经能用特定的程序打开(如Chrome),但是桌面上.htm文件的图标依然是ie的图标而非Chrome的。

  我试过使用SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL);和SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS,NULL);但是都不管用,可如果我重启explorer的话,图标能够刷新过来。

  请问有什么方法能及时把桌面上的图标缓存给刷新过来么,谢啦。

------解决方案--------------------
C/C++ code

////////////////////// 
//Rebuild Icon Cache// 
////////////////////// 
int   Iconw=GetSystemMetrics(SM_CXICON); 
HKEY   hKey; 
RegOpenKeyEx(HKEY_CURRENT_USER, "Control   Panel\\Desktop\\WindowMetrics ",0,KEY_ALL_ACCESS,&hKey); 
char   buff[20]; 
itoa(Iconw-1,buff,10); 
RegSetValueEx(hKey, "Shell   Icon   Size ",0,REG_SZ,(unsigned   char   *)buff,sizeof(buff)); 
SendMessage(HWND_BROADCAST,WM_WININICHANGE,0,0); 
itoa(Iconw,buff,10); 
RegSetValueEx(hKey, "Shell   Icon   Size ",0,REG_SZ,(unsigned   char   *)buff,sizeof(buff)); 
SendMessage(HWND_BROADCAST,WM_WININICHANGE,0,0);