在
Windows XP Pro SP3系统 + IE7浏览器的运行平台下,IE7突然无法显示png格式图片,导致浏览网页的时候大量图片、验证码等无法显示,但是用管理员的账号登陆以后IE浏览器图片显示则一切正常。之前也没有对系统进行改动或安装新软件,也没有安装过什么更新。然后对IE7进行了重装,甚至退回到了
IE6浏览器都无效。
接着在尝试新建一个管理员用户,在登录系统也是正常的,而受限的用户都有问题。
通过一翻搜索以后,发现大部分人说是pngfilt.dll文件被损坏所致,只需要在别的系统中复制一份pngfilt.dll文件过来,在放到C:\windows\system32里面,在“运行”中输入 regsvr32 pngfilt.dll 即可。但是根据上面步骤操作完以后,还是没能成功修改
IE浏览器的问题。
通过分析IE进程载入的模块,管理员访问含PNG图片的页面时都能正常载入pngfilt.dll ImgUtil.dll,而受限用户都能没有载入,运行regsvr32试图注册无效,NTFS权限都是可读取和运行,改为完全控制无效。
原因是MIME类型中有无效信息,导致出错(PNG似乎不同于其他图片格式,其他图片IE自己能处理不需要读取MIME,而PNG以来PngFilt.Dll是必要的,话说回来其他的ActiveX如Flash又很正常),我早检查过MIME中没有乱码,image/png和image/x-png的权限也都正常,但我不知道他们会相互影响
然后决定对每一项值进行检验(受限用户Restricted默认情况下只能对HKCU进行完全控制,我不可能从别的机导入,因为管理员帐户又正常),先在受限帐户下进行(从整体看,管理员与受限用户的MIME类型没有多了少了的问题,因为读取的是同一段注册表),果然发现了问题:
application/futuresplash和application/x-shockwave-flash在受限帐户下竟然说无法访问,看来在枚举MIME类型过程中出错导致PNG无法正常解码,到管理员进注册表,与其它类型的权限一比较,发现少了USER组的权限,这样这两项就对USER组全部不允许了,给这两项加上相应读取权限,回到受限用户(没有重启),打开
浏览器,图片已经全部正常。
具体解决办法如下:
以管理员的账号登录到系统,在检查注册表中以下2项,确保受限用户(users组)有“读取”的权限。
HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/futuresplash 和 application/x-shockwave-flash
看来IE的编程思路还是有待改进,不能被这样一点点的出错卡住啊!
回想不久前刚刚
升级了
Flash Player,不知注册表是不是那个时候发生的变化,不过问题总算解决了!
via:青鱼
标签:IE修复IE浏览器PNG图片