2010年3月8日 星期一

安全處理dllcache

最近在各種論壇上看到蠻多的朋友提到dllcache,大多是因為裝了winxp後,系統碟空間不夠,想精簡。於是很多人提到刪dllcache,但總還加上一句,要小心;這讓很多朋友無所適從,不敢輕易下手。吾淘盡平生所學,給各位一個明明白白的說明。   要說dllcache,還要講一下「windows文件保護」,「系統檔案檢測」程序 windows文件保護:   開啟我的電腦,進入windows\system32\看看,裡面有很多諸如動態連接庫(.dll )和可執行文件(.exe )等系統檔案(也有許多是屬於你裝的軟體的),這些文件關乎系統的穩定運作,卻在暴露在光天化日之下,如果被刪除和被替換,就可能會造成系統執行不穩定。事實上,裝軟體的時候,特別是一些版本老的軟體的時候,覆蓋一些共享系統檔案的事是常有的。   針對這一點,windows就有一個「文件保護」的後台服務。預設情況下,該服務一直處於啟用狀態,監視著所有受保護的系統檔案,如果發現替換或移動受保護的系統檔案企圖,它能直接阻止。當然windows並不阻止所有這樣的企圖,它允許有Windows 數字簽名文件替換現有文件,這樣你的系統才可以更新和昇級。 「系統檔案檢測」程序   「系統檔案檢測」程序是一個在命令提示字元下使用的實用程序,指令是「sfc」,只有是管理員才能使用該程序,那些「大蝦」們教的刪除dllcache的指令「sfc/purgecache」就是用了這個程序,這個程序的作用就是檢測系統檔案,如果檢測到受保護的文件已經被不正確的文件覆蓋,它就從系統檔案制作備份(就是dllcache)中提取正確的系統檔案,替換不正確的文件。   這個程序也檢測dllcache本身,如果發現dllcache已經損壞或者不能使用,可以用修復它,所謂修復,就是要你插入安裝碟,它自動從中提取所需的文件。指令是「sfc /scannow」,具體各位可以檢視說明 。   dllcache:   dllcache的位置在「\windows\system32\dllcache」,有350M以上,是個系統隱藏文件,這麼大的體積是想減肥的xp用戶盯上它的原因。   大家搜尋一下windows資料夾下的某類系統檔案(先取消系統檔案的隱藏屬性內容喔!),會發現有很多文件是重複的,許多文件會在system32(除dllcache)和dllcache裡各有一個。所以dllcache可以看作是個制作備份。它的體積不是固定的,當你裝一些微軟系的軟體,或做昇級,打修正檔時,安裝程序會在dllcache中放一些重要文件的副本——這樣他的體積就增加了。   dllcache作為制作備份是在使用「系統檔案檢測」時發揮作用的,介紹「系統檔案檢測」時已經做了說明。   其實dllcache裡面「制作備份」的系統檔案要比你使用的多,也就是說它準備的東西有些你還沒用到,在你用到的時候,它結合「windows文件保護」就能發揮作用。比如你裝了一些軟體(主要是微軟系),這個軟體會在windows裡的有關資料夾裡放入已經被設定為被「windows文件保護」監視的重要文件,但要比dllcache裡的舊,這時「windows文件保護」就會從dllcache裡讀取最新的版本替換舊的文件。   所以dllcache不只是一個簡單的「制作備份」,它實際上「準備」了你可能會用到的所有重要系統檔案,是一個備用的系統檔案庫。   從「刪不刪?」到「萬全之策」   很多人問我這個問題的時候,我都說「不」,dllcache是不應該刪的。   dllcache是系統隱藏文件,微軟這麼小心奕奕地把它藏起來總是有它的道理的。引起「刪不刪」的疑問是因為它體積大而用的少,不像shell,無處不用。 但刪除它是危險的:   1,容易讓舊版本的文件貯存系統檔案夾,造成系統不穩定。   2,使「系統檔案檢測」程序失效,一旦使用就會提示你從安裝碟把dllcache「取」回來,如果取回來,那你不就白刪了?   3,昇級,打修正檔的時候,原來設定要放到dllcache裡的制作備份沒處放,可能會造成昇級中止,或重建一個名為dllcache的資料夾來放制作備份。(我沒刪,所以我不敢確定是什麼後果)。   4,當你裝一些軟體,或加一些硬體時,他們可能設定要從dllcache重提取一些文件出來使用,沒有dllcache會造成硬體無法使用或軟體無法安裝。   可見,刪dllcache短期內也許沒關係,但長期看,你會碰到問題卻不知道問題出在哪裡——而這很可能是因為沒有dllcache造成的。所以我強烈建議不要刪。   那麼那些系統碟實在太小的朋友該怎麼辦呢?經過研究,我找到了方法,就是把dllcache「轉移」到別的盤,就像轉移虛擬記憶體。下面容我講來這個「完全之策」地步驟:   1,開始->執行,鍵入「gpedit」->啟動「group policy」。   2,在「group policy」找到:本機電腦原則->電腦管理->管理模組->system ->windows File protection   3,按擊「windows File protection」,你在右面看到一個叫「Specify Windows File Protection cache locatin」的項。這個項是設定dllcache的位置的,下面 你就知道怎麼做了,我就不多說了,自己動手搞定它吧。

沒有留言:

張貼留言