首页
社区
课程
招聘
[原创]双系统环境下,WIN7设置的文件夹图标在XP里不能显示的解决方案
发表于: 2013-8-25 19:08 6296

[原创]双系统环境下,WIN7设置的文件夹图标在XP里不能显示的解决方案

2013-8-25 19:08
6296

因工作缘故,把1块WIN7下的硬盘接入XP系统后,发现原WIN7下设置的文件夹图标皆不能显示。
   这是因为WIN7的文件夹配置文件“desktop.ini”格式不向下兼容。
   为解决此问题,做了这个小工具。一一枚举磁盘中的desktop.ini文件并重设,使XP也能显示WIN7下设置的文件夹图标。

   主要对于WIN7-XP双系统环境也很有用。
========================================
desktop.ini 格式
[.ShellClassInfo]
//WIN7的格式
IconResource=G:\icos\usa\f132d81f564198fb4aa9ef7b0733d94515.ico,0

//XP的格式
IconFile=G:\icos\usa\f132d81f564198fb4aa9ef7b0733d94515.ico
IconIndex=0

========================================
Win7可兼容XP格式,但XP无法兼容WIN7的格式。
该软件枚举磁盘中的所有desktop.ini文件,将格式设为XP格式。
使文件夹图标在XP与WIN7下都可正常显示。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 5
支持
分享
最新回复 (4)
雪    币: 90
活跃值: (82)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
void translateINI(char* filepath)
{
        char szWIN7ico[MAX_PATH];
        GetPrivateProfileString(".ShellClassInfo","IconResource","fail",szWIN7ico,MAX_PATH,filepath);
       
        if (strcmp(szWIN7ico,"fail")==0)
                return ;
        if (strcmp(szWIN7ico,",") == 0)
                return ;
        char temp[5];
        SplitStrSJ(szWIN7ico,strstr(szWIN7ico,",")-szWIN7ico+1 ,strlen(szWIN7ico),temp);
        char *p = strrchr(szWIN7ico,',');   
        *p = 0;
         
    char szXPico[MAX_PATH];
        GetPrivateProfileString(".ShellClassInfo","IconFile","fail",szXPico,MAX_PATH,filepath);
        if (strcmp(szXPico,"fail")!=0)
                return ;

    WritePrivateProfileString(".ShellClassInfo","IconFile",szWIN7ico,filepath);
        WritePrivateProfileString(".ShellClassInfo","IconIndex",temp,filepath);
        SendMessage(hListBox,LB_ADDSTRING,0,(LPARAM)filepath);
                //DebugOut(filepath);  
        //MessageBox(NULL,szWIN7ico,temp,MB_OK);
}
2013-8-25 19:21
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
[.ShellClassInfo]
IconResource=G:\icos\usa\f132d81f564198fb4aa9ef7b0733d94515.ico,0
IconFile=G:\icos\usa\f132d81f564198fb4aa9ef7b0733d94515.ico
IconIndex=0

结构是这样不就可以了么?
话说 INI里面名字不同是可以共存的.你为啥非要改?
2013-8-26 16:28
0
雪    币: 90
活跃值: (82)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
[QUOTE=遗失灵魂;1214734][.ShellClassInfo]
IconResource=G:\icos\usa\f132d81f564198fb4aa9ef7b0733d94515.ico,0
IconFile=G:\icos\usa\f132d81f564198fb4aa9ef7b0733d94515.ico
IconIn...[/QUOTE]

这就是我修改后的结构..
2013-8-27 13:16
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
还是PsSetLoadImageNotifyRoutine 然后在NotifyRoutine中检测ini是否存在+是否支持双系统 更好吧?
2013-8-27 13:56
0
游客
登录 | 注册 方可回帖
返回
//