User回報,使用Windows XP + IE6檢視專案網站時,發生PNG圖檔無法顯示,變成白框紅叉圖(俗稱叉燒包)的情形,但其餘如版面、CSS、GIF、JPG則一切正常。

IE6無法顯示PNG透明底圖是連東村王大嬸都知道的事兒,但PNG完全無法顯示,就另有蹊蹺囉! 做了測試: 若將圖案另存,使用XP預設圖形檢視工具可正常檢視,所以問題只出在IE6。爬文並測試了重新註冊system32\pngfilt.dll的招術,無功而返。

再回頭爬文,看到一篇類似案例文章,查出PNG無法顯示的原因竟是某個MIME Registry未開存取權限所致。該文用來破案的工具是RegMon,不就是茶包一哥--Process Monitor他爹嗎? 二話不說,決定用ProcMon一探究竟。為了在問題機器上跑ProcMon,我特別切換成Administrator身分重做測試,卻發現有趣的結果--使用管理者身分執行IE時,PNG顯示是正常的,這條新線索證實了"權限問題"涉有重嫌。不過,用管理者才能跑ProcMon、不用管理者PNG才會出錯,是要怎麼抓咧?? 苦思無解之際,被同事一棒點醒: 另外指定ProcMon用管理者身分執行不就好了? 嘿... 老糊塗了,一直把Run As想成Vista後才有的功能,其實XP就已支援。

開啟ProcMon並鎖定IExplorer.exe及Access Denied關鍵字,犯人現身了:

IE試圖讀取HKCR\MIME\Database\Content Type application/futuresplah機碼時發生拒絕存取錯誤,檢查其權限清單頗為怪異,出現了少見的Restricted User設定,而一般使用者則沒有讀取權限,手動加上Everyone讀取權很,PNG無法顯示問題正式排除。

用application/futuresplash爬了文,找到對岸茶包射手的經驗分享,大致歸納心得如後:

  1. 此問題非IE6專屬,也有發生於IE7的案例。
  2. IE在顯示PNG圖檔時(GIF、JPG則不需要),需取得Registry中MIME Content Type清單,一旦過程發生機碼讀取失敗(即使是與PNG無關的型別),便會中斷處理程序導致圖檔無法顯示。(不良的設計方式,小朋友不要學哦~)
  3. application/futuresplash是Adobe Flash前身, FutureSplash Animator, 的MIME宣告,該Registry權限壞掉的原因不詳,我猜可能是安裝或解除安裝程序失敗造成。

Comments

# by 路人甲

感謝大大的PO文 解決了在下數個月未解的麻煩 .png檔在IE7不見了數個月 終於可以跟叉燒包揮手了 不過在下找到的元凶不是futuresplash 而是"x-shockwave-flash" 手動加上權限已OK了 看來Adobe和IE真是槓上了

# by 被困擾的人

我正受這個問題所困擾 請問要如何 在受限制的使用者帳戶 手動替 x-shockwave-flash 加上權限? 盼請能回覆詳盡的步驟 感激不盡.......... e-mail : cv8747@ms39.hinet.net

# by Jeffrey

to 被困擾的人, 使用regedit加權限的方法,可參考MS KB的說明: http://support.microsoft.com/kb/310426

# by 被困擾的人

感謝提供說明 照做之後 出現的是 無法將權限變更儲存到application/x-shockwave-flash.存取被拒 想要對這著機碼 改名 刪除 做任何變更都是被拒 不然就是發生錯誤 請問可有別種方法可以改正他 盼請回覆 感謝.........

# by Jeffrey

to 被困擾的人,有狀況的機器是Vista或Windows 7嗎? 若是,請在確認先以有管理者權限身分的帳號登入Windows,【執行】輸入regedit後,按Ctrl-Shift-Enter (http://goo.gl/LTSjC) 強迫以管理者權限執行regedit,此時應會出現【使用者帳戶控制】的確認視窗,同意後再試一次修改權限,看如此是否可避開存取被拒的問題。

# by 被困擾的人

你好 我用的是 XP SP2 我以系統管理員帳戶(FRED )登入 執行regedit 到登錄編輯程式 按 編輯 按 使用權限 出現四個帳戶 Administrators ; system ; Fred ; RESTRICTED 前三個的 完全控制和讀取 勾選格是不可選的 在RESTRICTED帳戶 的 完全控制 和讀取 都打勾後 按確定 離開後 再到受限制帳戶 任然是 無法將權限變更儲存到application/x-shockwave-flash.存取被拒

# by Jeffrey

to 被困擾的人, 感覺上似乎連管理者都無權更動,在使用權限畫面的下方有個【進階】,其中有個頁籤【擁有者】,看一下項目目前的擁有者是誰,建議直接將擁有者改為Fred(你的登入帳號),以確保你可以修改該筆項目授權對象。

# by LiTin

感謝你的分享,太受用了。 首頁被綁架困擾了很久。

Post a comment