Windows操作系統(tǒng)作為優(yōu)秀的操作系統(tǒng),由開發(fā)操作系統(tǒng)的微軟公司控制接口和設(shè)計,公開標(biāo)準(zhǔn),因此,有大量商業(yè)公司在該操作系統(tǒng)上開發(fā)商業(yè)軟件。 WinSxS是什么文件夾WinSxS(Side-by-Side)文件夾其實(shí)是微軟為了解決 Windows 系統(tǒng)中的「DLL Hell」問題而創(chuàng)建的,「DLL Hell」簡單一點(diǎn)來解釋就是:如果某應(yīng)用程序更改了一個動態(tài)鏈接庫(DLL)文件,則會影響到使用同一 DLL 的應(yīng)用程序關(guān)鍵功能的情況。 例如,應(yīng)用程序 A 和 B 都調(diào)用同一個 DLL,而 A 需要的版本為 1.0.2,B 程序要用不同的版本,將其替換成了 1.0.3 版本。這樣就勢必會對應(yīng)用 A 造成影響,要么出現(xiàn)兼容性問題,嚴(yán)重點(diǎn)甚至導(dǎo)致應(yīng)用崩潰或藍(lán)屏問題。 微軟祭出WinSxS解決方案 從 Windows XP 系統(tǒng)開始,「組件存儲」功能被正式啟用,每個組件(包括 DLL、OCX 和 EXE)都會存儲于這個被命名為 WinSxS 的目錄中,這里會存放應(yīng)用程序需要調(diào)用的不同版本 DLL,并根據(jù)需求加載正確的版本。 那問題又來了,一個應(yīng)用程序如何知道它需要加載什么版本的 DLL 呢?這就需要「manifest」文件來發(fā)揮作用了,該文件包含了一些設(shè)置,用于告知操作系統(tǒng)在應(yīng)用啟動時如何處理,以及正確的 DLL 版本。 每個組件都帶有唯一標(biāo)識的名稱,該名稱可以包括:處理器架構(gòu)、語言、版本和 ID,然后這些組件的特定版本被收集在一起,成為軟件包,被 Windows Update 和 DISM 用來保持系統(tǒng)的最新狀態(tài)。 WinSxS文件夾和硬鏈接硬鏈接在整個 Windows 操作系統(tǒng)中都有廣泛使用,就 WinSxS 而言,這是「組件」駐留在系統(tǒng)中的唯一位置,而「組件存儲」之外的所有其他文件實(shí)例都是硬鏈接到 WinSxS 文件夾中的。
當(dāng)我們更新 Windows 系統(tǒng)時,如有新版本的「組件」發(fā)布,就會通過硬鏈接的方式將其映射到操作系統(tǒng)層面,而舊版本的「組件」依舊會保存在「組件存儲」中,以確保可靠性(會取消硬鏈接),這樣就可以在出問題時進(jìn)行回滾。 為了證實(shí)這一點(diǎn),我們可以來做一個小實(shí)驗(yàn): 1在「開始」菜單中搜索?cmd?——找到「命令提示符」——選擇「以管理員身份運(yùn)行」 2例如,如果我要查看名為?audiosrv.dll?的系統(tǒng)文件的硬鏈接,就可以執(zhí)行: fsutil hardlink list "C:\Windows\System32\audiosrv.dll" 由此就以看出其在 WinSxS 組件存儲中的映射路徑。 WinSxS的重要性WinSxS 組件存儲的重要性不言而喻,它在支持自定義和更新 Windows 功能方面起著至關(guān)重要的作用,它可以幫助實(shí)現(xiàn):
WinSxS文件夾大小Windows 系統(tǒng)的一大優(yōu)勢就在于它可以兼容一些較舊的硬件和應(yīng)用程序,但這種兼容性是以占用磁盤空間和報錯為代價的。而 WinSxS 組件存儲中就包含了所有必要的文件,以維持住 PC 對硬件和軟件的兼容性。 目測我系統(tǒng)中的 WinSxS 文件夾占用了 7GB 左右的磁盤空間,但由于「文件資源管理器」不考慮硬鏈接,這其實(shí)是一個虛值。
如何查看WinSxS文件夾的真實(shí)大小1在「開始」菜單中搜索?cmd?——找到「命令提示符」——選擇「以管理員身份運(yùn)行」 2執(zhí)行以下命令進(jìn)行查看: Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore 分析完成后,我們就可以看到「組件存儲」的實(shí)際大小。
減小WinSxS文件夾大小的方法很多用戶經(jīng)常會問,能不能手動刪除 WinSxS 文件夾中的文件?甚至有人問能不能刪除 WinSxS 文件夾?答案是——絕對不行! 如果你以這種搞事情的方式來刪除其中的文件,很可能會損壞 Windows 功能,輕一點(diǎn)可能會讓 Windows Update 無法正確安裝、卸載更新,即便你成功地從 WinSxS 文件夾中刪除了文件,也不知道是否哪個應(yīng)用程序就會鬧出幺蛾子。 但是我們可以通過 Windows 內(nèi)置的一些工具,以專業(yè)而優(yōu)雅的方式來減小 WinSxS 文件夾的大小,以達(dá)到網(wǎng)友們所期望的清理、壓縮和瘦身等效果。 方法1:使用「磁盤清理」工具1在「開始」菜單中搜索?磁盤清理?——找到并打開「磁盤清理」工具 2在下拉列表中選擇系統(tǒng)盤——點(diǎn)擊「確定」——在打開的工具界面中點(diǎn)擊「清理系統(tǒng)文件」按鈕 3勾選上所有對勾進(jìn)行清理即可 方法2:移除一些不用的Windows功能把一些普通用戶不常用的 Windows 功能,如:Print to PDF、Hyper-V、PowerShell 和Windows 沙盒等功能給干掉,同樣可以達(dá)到給 WinSxS 瘦身的效果: 1使用?Windows + R?快捷鍵打開「運(yùn)行」—— 執(zhí)行?appwiz.cpl?打開添加刪除程序
2點(diǎn)擊左側(cè)的「啟用或關(guān)閉 Windows 功能」 3.取消勾選不用的功能——點(diǎn)擊「確定」按鈕 方法3:使用DISM進(jìn)行組件清理其實(shí)從 Windows 8 開始,操作系統(tǒng)中就內(nèi)置了一個自動執(zhí)行 WinSxS 組件存儲清理的任務(wù)計劃。
當(dāng)然我們也可以手動使用 DISM 命令進(jìn)行組件清理: 1在「開始」菜單中搜索?cmd?——找到「命令提示符」——選擇「以管理員身份運(yùn)行」 2手動執(zhí)行以下命令: DISM.exe /online /Cleanup-Image /StartComponentCleanup 使用?/Cleanup-Image?參數(shù)可以立即刪除之前版本的組件,沒有 30 天寬限期也沒有一小時的超時限制。 DISM.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase 增加?/ResetBase?參數(shù)可以刪除每個組件的所有被取代版本,也將無法卸載任何當(dāng)前的更新。 Windows操作系統(tǒng)對硬件支持良好。 |
溫馨提示:喜歡本站的話,請收藏一下本站!