受限帐户在IE浏览器中无法显示png图片的解决办法

添加评论 2010年7月31日

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:青鱼

  1. 2010年8月4日 at 02:41 | #1
    忽然明白

    谢谢!解决了我的问题!
    不单IE,所有的IE核心的浏览器都一样。
    我也是刚升级过flahPlayer,该不是巧合吧,楼主再安装下测试看哈。 :smile:

  2. 2010年9月5日 at 07:46 | #2
    xcc

    :smile: 高人,问题解决了,佩服

  3. 2011年5月19日 at 17:06 | #3
    MTT

    为什么我网站里面的图片在IE浏览器中都无法显示,图片全部变成红色的叉叉,在IE9和Chrome、Firefox浏览器里面完全可以显示,所以这个不会是图片路劲不对的问题,在网上找了半天,都没有解决的办法,请问应该如何解决呢?

  4. 2011年5月19日 at 22:08 | #4
    iefans

    原来我保存的图片全部是CMYK格式的,只要将图片保存为RGB格式就搞定了。因为IE6,IE7,IE8都不支持CMYK颜色模式图像,所以才不显示,而IE9和外其他浏览器均能支持!

  5. 2011年12月1日 at 10:51 | #5
    知秋

    真给解决了。可找了我哦。。。。。以为是adodb imageready搞的鬼,郁闷了差不多一年时间。。。谢谢谢谢。

  1. 还没有 trackbacks
订阅评论