2008年9月28日

HowTo: 修改 Vista Theme & System32/shell32.dll

呃 ... 本來昨天就要開始寫 Microsoft TechEd 的心得, 但是發生了一個意外導致我把小黑重灌了, 好不容易弄到剛剛終於大致上搞定,所以先記錄一下處理這個意外的過程..

所謂的意外,就在我下載了這個黑色的 Vista Theme (Project X2) 之後開始, 按照他的說明文件,在覆蓋系統檔案 (System32中的browserui.dll & Shell32.dll)之前, 應該要先取消 UAC 的檢查,但是我想說 UAC 打開也不過是檔案操作要多確認兩次而已, 而且調整 UAC 的設定又要重開機,整個很麻煩,所以我還是讓 UAC 開著不管它...

接下來我先覆蓋了 System32/browserui.dll,嗯,一切正常! 這時候我對於繼續打開 UAC 的決定又更有信心了, 下一步,rename舊的shell32.dll,一次成功 !
 
接下來把新的 Theme 裡面的 shell32.dll 複製過去,跳出 UAC 視窗,確認OK,
接下來,檔案複製完畢!看一下 System32 裡面的狀況:

什麼事都沒有發生 .......冏~


雖然看來複製的動作已經完成,沒有跳出甚麼錯誤,但 refresh 之後, 顯然 System32 裡面只剩下被我改名成 shell32.dllold 的舊 dll, 應該已經被複製過來的 dll 連個鬼影子都沒看到,God, 這怎麼可以,不信邪的我再接再厲的重複上面的步驟...

System32 裡面還是甚麼都沒有 ....... @_____@"

這個 shell32.dll 從名稱來看就絕對是比其他 dll 更重要、更核心的東西, 如果就這樣莫名其妙的被我搞到消失了,想必會有很多問題, 這時候我想,幸好剛剛沒有把舊檔直接砍掉,而是用 rename 的方式改掉副檔名, 那我再把副檔名改回來就好啦!!

事不宜遲,馬上開始動手修改,這時又跳出UAC的確認視窗, 廢話我當然非同意不可呀,同意之後開始執行rename,很順利的執行完畢!! 趕快再檢查一下 System32 裡面的狀況:

shell32.dllold 居然繼續給我完好如初的活著!!
 
rename 完全是無效的!!Good, 這下真的是冏翻了,我把一個雖然不太清楚是幹甚麼用,
但是檔名裡面有「shell」這個超明顯重要關鍵字的 dll 搞壞了, 想必是不會有甚麼好下場,接下來努力嘗試其他各種方法,包括把 Vista 自動為系統檔案建立的 Shadow Copy 複製到其他資料夾, 再試圖覆蓋回去正確的System32資料夾也失敗,實在無計可施之後, 只好硬著頭皮重開,看看我的系統死狀到底如何...

在重開的過程中,原本以為會見到久違的 Blue Screen, 結果也沒有,似乎基本上系統運作還頗為正常, 但是就在進入登入畫面之前,跳出一個錯誤訊息:
 
UILogon.exe 無法取得 shell32.dll,重新安裝應用程式可能可以恢復正常。

God !! 莫非這表示我連可以正常登入系統的一絲希望都已經破滅, 可以直接考慮系統還原了?!幸好在按完確認之後,還是正常的出現登入畫面,讓我鬆了一口氣, 試了一下也可以正常登入,但是最冏的情況就在此刻發生,一個新的錯誤訊息告訴我:

explorer.exe 無法取得 shell32.dll,重新安裝應用程式可能可以恢復正常。

薑薑薑 ~~ 薑!答案揭曉了,explorer.exe 這個負責繪製 Windows 最基礎的 UI (桌面、檔案總館等等) 的重要程序給我直接死在沙灘上了,畫面上剩下一片令人心寒的烏漆媽黑, 只有一個孤獨的鼠標可以自由自在的移動,這樣我的系統不是相當於全毀了嗎 >_< ...

接下來我就繼續嘗試用 Safe Mode + Comman Prompt 開機, 無奈搞了半天我的小黑對 F8 就是毫無反應,這時候我仔細的想了一下, 剛好之前裝了Lenovo的System Update之後,很多內建Driver的介面都莫名的掛了, 不管是 Fn+F5 (設定無線通訊) 或者 Fn+F7 (設定簡報模式) 都變成無效, 加上現在系統裡面的beta軟體太多,乾脆就忍痛還原到出廠狀態, 利用這個機會重整系統吧!

接下來大約七到八個小時就耗在還原,還有還原後要做的 Windows Update, 灌一大堆 Utility 軟體、Office、四個Browser上面,系統弄得差不多之後, 我又開始手賤的想要嘗試把之前設定失敗的Theme給搞定, 在說明文件裡面寫說,shell32.dll 的作用是:

This changes the image that is in the left hand pane of some places like the control panel, and you computer properties window.

感覺就很酷炫的樣子,一定要想辦法把它裝起來的!!
 
但這次的設定我還是不信邪(換句話說就是腦殘)的按照上次的模式進行, 自以為上次只是運氣不好,可能本來系統就怪怪的,才會出現這種狀況, 很明顯的,我錯了!!

系統在我的惡搞下,相當迅速的呈現了跟昨天一模一樣的死亡狀態!!
 
shell32.dll 完全不給我一個替它正名的機會,堅持停留在shell32.dllold的狀態, 這時候我想到另一個解法,就是把小黑的硬碟拆下來裝到USB外接盒裡面, 再拿另一台系統正常的 NB 來直接複寫 System32/shell32.dll, 果然,這個簡單的做法是 Work 的!!


歷經了千辛萬苦又把shell32.dll還原到正常狀態之後, 接下來我就乖乖的把 UAC 關了,然後重開機, 然後把 shell32.dll rename,接下來複製新的 Theme 裡面的 shell32.dll 到 SYstem32,
薑薑薑薑~~!這次果然很順利的成功了!


這次的事情讓我想到 Microsoft TechEd 的講師 Steve Riley 提到愛因斯坦對於「瘋狂」的定義, (坎尼沒想到我這樣也可以扯到 TechEd 吧 XDD)

愛因斯坦說,瘋狂就是你一再的用相同的方式重覆做同樣的事情,
但期望做到最後會得到一個不同的結果。



我想把「瘋狂」換成「愚蠢」也是很貼切低!! 冏rz

Anyway, 以下就是我換好Theme之後的畫面:
MyNewBlackTheme

而所謂的「the image that is in the left hand pane of some places like the control panel, and you computer properties window」,就是下面這樣:
MyNewBlackTheme_ControPanel

Computer Properties Window:
MyNewBlackTheme_SystemProperty

其實也不過就是黑成一團,好像沒有特別值得我為它搞得人仰馬翻嘛 ...=.=
最後得到的教訓,一個是說明文件一定要認真看,照著做
另一個就是不要忘記還有把硬碟拆下來,用另一個正常系統來處理這個大絕招!!

PS. 小黑還真難拆,螺絲緊的跟甚麼一樣,各機構的配置也和大台的NB整個不太一樣,
慎重考慮等颱風過了去買一組電動螺絲起子工具組,不然以後老了就再也打不開了 ..

1 則留言:

坎尼 提到...

你們這些都不先看說明書的人= =

Google Spreadsheet 裡用規則運算式

最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D