寫著寫著來到12天,不知不覺間過了三分之一了,一樣我們根據上篇預告,筆者今天會用先前略提的WiseRegCleaner當作一個開頭,我們來研究看看什麼登錄檔屬於無用登錄檔可以刪除,我們前面介紹了新增修改查詢,這裡要來介紹刪除的部分。
清理登錄檔的工具有很多,但有潔癖的工程師總會想要清理得越多越好,學習怎麼手動清理甚至是修復它總是一件愉快的事,每次遇到這些操作系統的程式的時候,我總會想著,那些寫著僅供”專業開發人員”使用的進階功能,做為一個資訊背景人士我應該要符合資格吧,但點進去又是一頭霧水發現自己沒有學過,就是如此讓我願意繼續研究寫下這段讓自己接近”專業開發人員”的過程。
那麼首先我們來說說,為什麼我們會想清理登錄檔以及它的意義,如果不知道為什麼就跟著清理可能最後會白忙一場。
由於登錄檔的二進位編碼,它有一些限制,原則上一個索引鍵的所有值總大小的限制為64K,並且每條配置會以4KB為單位,意思是不足4KB的部分還是會占用4KB的空間,我們安裝各種軟體都會在這登錄檔寫來寫去的也不一定知道他寫了什麼,很多軟體解除安裝不會去抹除安裝時寫入的登錄值,我們還是可以在HKCU\Software
之類的地方找到這些軟體的子鍵,於是這張表會越來越臃腫,讀寫效率會降低,甚至我們把軟體裝了又砍砍了又裝可能也會出錯。
講實際一點,登錄檔在開機後會加載到記憶體裡,所以也算是會占用記憶體空間,這是清理登錄檔的正方意見,覺得會因此降低電腦速度。
但是反方認為這些登錄檔更精確來說是會讀到記憶體的分頁池,長時間用不到的內容會被替換到硬碟,我們本來打算清掃的垃圾登錄檔頂多也只是放到虛擬記憶體,就算釋放到真的RAM裡,因為登錄檔是B-tree的結構,少數的無用子鍵延遲的查詢速度應該也不多。再來提到佔比問題,其實登錄檔占用的記憶體並不多,就算清理少數的垃圾也影響不大,加快的開機時間也不大。
以上這些資訊的意義其實是指,如果你的電腦運作正常其實沒有一定要清理登錄檔的必要,我們之所以清理的理由是為了增加系統穩定性,排除多餘可能會報告錯誤的登錄值,完整卸載軟體減少系統錯誤資訊,刪除惡意程式寫入的登錄檔,日積月累的情況下清掃可能可以提升一點速度。
最後是一種潔癖,當你了解後發現其實有很多無用的東西,就會下意識想把它刪掉,展現一個工程師的專業~~(我這樣很正常吧?
希望上面的內容沒有勸退你閱讀我的文章,如果你還有興趣的話,首先給WiseRegCleaner的載點讓各位參考,筆者習慣載portable版就載一個.zip包,下面會用它當範例來解說那些登錄檔是可以清理的
https://www.wisecleaner.com/wise-registry-cleaner.html
開啟後你會看到這個首頁,免費版的限制就是只能清理當前使用者的登錄檔不過這已經足夠了,右上角的選項有些備份還原設定可以使用,我們的目的是希望之後可以看懂中間深層掃描的登錄檔功能,這裡先用安全模式掃描一遍。
當我寫到這裡我發現要看懂這些好像還是有點困難,如果有任何說錯的地方還請各位大大糾正謝謝。
我們先看到這裡第一項把它展開,它是找出我們電腦中的ActiveX和COM元件的登錄檔中的一些無用路徑,每個問題雙擊會打開regedit.exe跳到那條登錄值的位置,旁邊的大於符號點擊會出現它分析的問題原因,像這個是我NVIDIA的的一個資料夾路徑不存在。
軟體路徑這個問題會去找HKEY_LOCAL_MACHINE\Software
和HKEY_CURRENT_USER\Software
下的無效軟體路徑,有時候是解除安裝所留下來的,或是像這裡的最後一點,它是空的鍵所以沒有功用。
應用程式路徑這裡我們看到的這些其實是二進位數值,WiseRegCleaner列出問題時會把登錄值資料擺前面,後面才是登錄值路徑和名稱。
轉到面我們發現幾乎都是.exe檔案,原來這是筆者之前在備份時移走的一些安裝檔,有些甚至沒有開過,第三點的eclipse也是之前刪除的,你會發現原來載下一個.exe的安裝包電腦就會用登錄檔記下他的路徑,即使你移除可能也會留下註冊紀錄。
檔案類型這邊是我們之前提到的,每個副檔名都有紀錄它的登錄值,電腦才知道要怎麼應對這種檔案,有時候我們載了一些少見類型的檔案,之後不用刪掉以後,電腦就會留下紀錄在HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\
,例如下面反白的.woff2是筆者之前載的網頁字型安裝檔格式,安裝完後刪掉就沒有任何應用程式跟這筆登錄值有關,點進去會看到預設值為空也算無用登錄檔。
防火牆設定這裡是找無效的設定,像筆者之前用Arduino應該有允許一些防火牆設定,後來也是移除了,防火牆這裡還是記得這條規則。
使用者最近使用的清單會是所謂的MRU list(Most Recently Used kist),它會清除一些過久的最近使用清單,如果電腦會給別人使用,這是一項需要注重的隱私設定,從這些清單甚至可以快速訪問你以前開過的檔案,這些登錄檔存在幾個固有的路徑上,如果需要也可以找相關設置把這個紀錄功能關掉。
MUI快取,這個筆者稍稍研究了一番,因為今天還有時間就稍微提一下,所謂的MUI是Multilingual User Interface,當我們打開一個應用程式,Windows會去嘗試尋找或建立自己預設語言的這個應用程式的MUI文件,裡面包括需要更改的所有這個語言的UI資源,但它有個缺點是有點慢,尤其是在檔案總管這類的程式可能需要找到大量的MUI文件,於是就出現「MUI快取」這個東西,它會在登錄檔寫下一些應用程式需要用到的特定字串,這樣需要再次用到就不用加載整個MUI文件,直接從登錄檔提取這些字串就好,就有加快速度的功能。
而下面是WiseRegCleaner幫我們找出,已經沒有MUI文件的MUI快取,筆者認為這裡是因為沒有MUI文件,就不需要MUI快取來幫我們加速怕加載MUI文件出現的延遲,所以這些登錄檔就被認為無用了。
通常登錄檔的清理還會包括動態連結程式庫的登錄檔設定,筆者電腦剛好沒有,它類似是一些dll檔的連結註冊,當連結的檔案數為0,或者被連結的dll檔遺失,我們也常常會是為無用登錄檔,至於什麼是動態連結程式庫,筆者建議大家可以參考這裡,他是我在找這次鐵人主題看到的好文章推薦給想學的人:https://ithelp.ithome.com.tw/users/20125938/ironman/3047
回頭看發現今天又說了不少,下篇來看看WiseRegCleaner進階掃描會出現什麼進階的東西,時間夠的話可能還會再提一點登錄檔重組的議題,大家在清理登錄檔前也要記得備份喔!
參考資料:
https://kknews.cc/zh-tw/tech/oml2a9o.html
https://www.hack520.com/973.html
https://iter01.com/515763.html
https://www.thewindowsclub.com/clear-most-recently-used-mru-list
https://www.quora.com/What-is-MUI-Cache-in-Windows-10
https://openmuifile.com/muicache.html